diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000000000000000000000000000000000000..62cbfd2a5751c0740c351b7e2edf2da4eb322dd6
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,8 @@
+{
+  "presets": [
+    "@babel/preset-env"
+  ],
+  "plugins": [
+    "@babel/plugin-proposal-object-rest-spread"
+  ]
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c859febed44fae2fe7c3510b2d8e985bdaa4e723
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,325 @@
+.DS_Store
+private/
+/locale
+node_modules/
+*.log
+_index.html
+dist/
+stats.json
+
+
+##################### IDE / Tools ###
+  
+
+# @see https://github.com/github/gitignore/
+
+# PHPUnit
+.phpunit.result.cache
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+.cache
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# Logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Cloud9 IDE - http://c9.io
+.c9revisions
+.c9
+
+##Exclipse
+.metadata
+#bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+#local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+.apt_generated_test/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+# Uncomment this line if you wish to ignore the project description file.
+# Typically, this file would be tracked if it contains build/dependency configurations:
+#.project
+
+##Kate
+# Swap Files #
+.*.kate-swp
+.swp.*
+
+## KDEDevelop
+*.kdev4
+.kdev4/
+
+## LibreOffice
+# LibreOffice locks
+.~lock.*#
+
+
+### LINUX
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+## Patches
+*.orig
+*.rej
+
+# Private key
+*.ppk
+
+## Sublime
+# Cache files for Sublime Text
+*.tmlanguage.cache
+*.tmPreferences.cache
+*.stTheme.cache
+
+# Workspace files are user-specific
+*.sublime-workspace
+
+# Project files should be checked into the repository, unless a significant
+# proportion of contributors will probably not be using Sublime Text
+# *.sublime-project
+
+# SFTP configuration file
+sftp-config.json
+sftp-config-alt*.json
+
+# Package control specific files
+Package Control.last-run
+Package Control.ca-list
+Package Control.ca-bundle
+Package Control.system-ca-bundle
+Package Control.cache/
+Package Control.ca-certs/
+Package Control.merged-ca-bundle
+Package Control.user-ca-bundle
+oscrypto-ca-bundle.crt
+bh_unicode_properties.cache
+
+# Sublime-github package stores a github token in this file
+# https://packagecontrol.io/packages/sublime-github
+GitHub.sublime-settings
+
+## VIM
+# Swap
+[._]*.s[a-v][a-z]
+!*.svg  # comment out if you don't need vector files
+[._]*.sw[a-p]
+[._]s[a-rt-v][a-z]
+[._]ss[a-gi-z]
+[._]sw[a-p]
+
+# Session
+Session.vim
+Sessionx.vim
+
+# Temporary
+.netrwhist
+# Auto-generated tag files
+tags
+# Persistent undo
+[._]*.un~
+
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# gitignore template for AWS Serverless Application Model project
+# website: https://docs.aws.amazon.com/serverless-application-model
+
+# Ignore build folder
+.aws-sam/
+
+# Netbeans
+**/nbproject/private/
+**/nbproject/Makefile-*.mk
+**/nbproject/Package-*.bash
+build/
+nbbuild/
+nbdist/
+.nb-gradle/
+
+
+
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+## GOLANG
+go.work
+
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000000000000000000000000000000000000..237acf4a3921a720a621c2594caf91d9117d8daf
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,9 @@
+webpack.config.js
+*.iml
+Makefile
+.babelrc
+.eslintrc.js
+.vimspector.json
+*.tgz
+index.html
+/scripts/
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..fdf0d3783fe39619d6854c362c56a8d9c5ab43d4
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,29 @@
+Copyright (C) 2022 schukai GmbH
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as
+    published by the Free Software Foundation, either version 3 of the
+    License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+MIT License
+
+Copyright (c) 2021-current Grapesjs Template Manager
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
+IN THE SOFTWARE.
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..efe2b1d466265abfdbdd2f826102da225b466afe
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,293 @@
+#############################################################################################
+#############################################################################################
+##
+## PROJECT-DEFINITIONS
+##
+#############################################################################################
+#############################################################################################
+
+COPYRIGHT_TEXT  := © schukai GmbH, Released under the AGPL 3.0 License.
+
+#############################################################################################
+#############################################################################################
+##
+## more general block with standard definitions
+##
+#############################################################################################
+#############################################################################################
+
+# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
+THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
+THIS_MAKEFILE:=$(THIS_DIR)$(THIS_MAKEFILE_PATH)
+
+# colors
+BLACK        := $(shell tput -Txterm setaf 0)
+RED          := $(shell tput -Txterm setaf 1)
+GREEN        := $(shell tput -Txterm setaf 2)
+YELLOW       := $(shell tput -Txterm setaf 3)
+LIGHTPURPLE  := $(shell tput -Txterm setaf 4)
+PURPLE       := $(shell tput -Txterm setaf 5)
+BLUE         := $(shell tput -Txterm setaf 6)
+WHITE        := $(shell tput -Txterm setaf 7)
+RESET        := $(shell tput -Txterm sgr0)
+
+INFO    := $(GREEN)
+COMMENT := $(YELLOW)
+
+# Output control and standard outputs
+MARKER           := $(BLUE)[+]$(RESET)
+ERRORMARKER      := $(RED)[-]$(RESET)
+## Deactivate the QUIET mode by overwriting the value with space
+
+ifndef DEBUG
+    QUIET = @
+else
+    QUIET = 
+endif
+
+ifndef DONTOPENBROWSER
+    OPENBROWSER = true
+else
+    OPENBROWSER = false
+endif
+
+ECHO             := @echo
+ECHOMARKER       := @echo "$(MARKER) $0"
+ECHOERRORMARKER  := @echo "$(ERRORMARKER) $0"
+
+# Use bash instead of sh
+## Sets the shell used
+SHELL            =  bash
+
+# path and binaries
+AWK              := awk
+CP               := cp
+CD               := cd
+KILL             := /bin/kill
+M4               := m4
+MV               := mv
+RM               := rm -f
+MKDIR            := mkdir -p
+SED              := sed
+FIND             := find
+SORT             := sort
+TOUCH            := touch
+WGET             := wget
+CHMOD            := chmod
+RSYNC            := rsync
+DOCKER           := docker
+NPX              := npx
+AWS              := aws
+XARGS            := xargs
+GREP             := grep
+NPM              := npm
+make             := make
+GIT              := git
+NPX              := npx
+NODE             := node
+CAT              := cat
+ECHO             := echo
+
+# Executable Programs the Installed be have to
+EXECUTABLES = $(AWK) $(CP) $(KILL) $(M4) $(MV) rm mkdir $(SED) $(SORT) $(TOUCH) $(WGET) $(CHMOD) $(NPX) $(FIND) $(XARGS) $(GREP) $(NPM) $(GIT) $(NPX) $(ECHO) $(CAT); 
+K := $(foreach exec,$(EXECUTABLES),\
+        $(if $(shell which $(exec)),some string,$(error "Missing $(exec) in PATH; please install")))
+
+#############################################################################################
+#############################################################################################
+##
+## DEFAULT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+# @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets
+
+.DEFAULT_GOAL := help
+
+.PHONY: print
+print:
+	$(ECHO) "THIS_MAKEFILE:      $(THIS_MAKEFILE)"
+	$(ECHO) "THIS_MAKEFILE_PATH: $(THIS_MAKEFILE_PATH)"
+	$(ECHO) "THIS_DIR:           $(THIS_DIR)"
+
+# Add a comment to the public targets so that it appears
+# in this help Use two # characters for a help comment
+.PHONY: help
+help:
+	@printf "${COMMENT}Usage:${RESET}\n"
+	@printf " make [target] [arg=\"val\"...]\n\n"
+	@printf "${COMMENT}Available targets:${RESET}\n"
+	@awk '/^[a-zA-Z\-_0-9\.@]+:/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpCommand = substr($$1, 0, index($$1, ":")); \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s\n", helpCommand, helpMessage; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+	@printf "\n${COMMENT}Available arguments:${RESET}\n"
+	@printf "\n ${INFO}DONTOPENBROWSER${RESET}        disable open chrome"
+	@printf "\n ${INFO}NEXTVERSION${RESET}            see target release => 0 – major, 1 – minor (default), 2 – patch\n"
+	@awk '/^(([a-zA-Z\-_0-9\.@]+)\s=)/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s (Default: %s)\n", $$1, helpMessage, $$3; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+	@printf "\n"
+
+.PHONY: variables
+## Print all Variables
+variables:
+	@$(foreach v, $(.VARIABLES), $(if $(filter file,$(origin $(v))), $(info $(INFO)$(v)$(RESET)=$($(v))$(RESET))))
+
+#############################################################################################
+#############################################################################################
+##
+## DIRECTORIES
+##
+#############################################################################################
+#############################################################################################
+
+SCRIPT_PATH          :=   $(THIS_DIR)scripts/
+
+
+PACKAGE_DIR                                := $(THIS_DIR)
+PACKAGE_DIST_DIR                           := $(THIS_DIR)dist/
+PACKAGE_DIST_FILE                          := $(PACKAGE_DIST_DIR)@schukai/grapesjs-blocks-bootstrap5.min.js
+PACKAGE_SOURCE_DIR                         := $(THIS_DIR)source/
+PACKAGE_SOURCE_FILES                       := $(shell find $(PACKAGE_SOURCE_DIR) -name '*.js')
+PACKAGE_RELATIVE_SOURCE_FILES              := $(shell find $(PACKAGE_SOURCE_DIR) -name '*.js' -exec realpath --relative-to $(THIS_DIR) {} \;   )
+PACKAGE_VERSION                            := $(shell jq -r ".version" $(PACKAGE_DIR)package.json)
+
+#############################################################################################
+#############################################################################################
+##
+## GIT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+
+## Git Commit Message for git-push
+MESSAGE := current status
+
+.PHONY: git-branch
+## create new branch (use TAG-Variable)
+git-branch:
+
+ifeq (, $(shell command -v uuidgen))
+	$(error "No uuidgen in PATH, consider doing apt-get install uuidgen")
+endif
+
+	$(QUIET) export BRANCH="$(shell uuidgen --random)" ; \
+	$(GIT) checkout -b $${BRANCH} && \
+	RESULT=$$($(GIT) push origin $$BRANCH 2>&1) && \
+    RESULT2=$$($(GIT) branch --set-upstream-to=origin/$$BRANCH $$BRANCH) && \
+	GITLABURL=$$(echo "$$RESULT" | tr '\n' '\#' | grep -o 'remote\:\s*https:\/\/gitlab\.schukai\.com[^ ]*' | cut -d " " -f2-9 | sed -e 's/^[ \t]*//') && \
+	if $(OPENBROWSER) ; then google-chrome --profile-directory="Default" $$GITLABURL ; fi
+
+
+.PHONY: git-to-master
+## git checkout master, fetch and merge
+git-to-master:
+	$(GIT) checkout master && $(GIT) fetch -pP && $(GIT) merge
+
+
+.PHONY: git-push-to-server
+## git push changes to server
+git-push-to-server:
+	$(GIT) add -A
+	$(GIT) commit -m"$(MESSAGE)"
+	$(GIT) push
+
+.PHONY: git-push
+## git create branch and push changes to server
+git-push: git-branch git-push-to-server
+
+.PHONY: git-tag
+## git create version tag
+git-tag:
+	$(GIT) tag -a "$(PACKAGE_VERSION)" -m "release $(PACKAGE_VERSION)"
+
+#############################################################################################
+#############################################################################################
+##
+## NODE-DEFINITIONS
+##
+#############################################################################################
+#############################################################################################
+
+NODE_MODULES_DIR := $(THIS_DIR)node_modules/
+NODE_MODULES_BIN_DIR := $(NODE_MODULES_DIR).bin/
+
+WEBPACK       := $(NODE_MODULES_BIN_DIR)webpack
+BABEL         := $(NODE_MODULES_BIN_DIR)babel
+UGLIFYJS      := $(NODE_MODULES_BIN_DIR)uglifyjs
+
+$(NODE_MODULES_DIR): $(THIS_DIR)package.json
+	$(QUIET) $(NPM) install 
+	$(QUIET) $(RM) node_modules/.modified
+	$(QUIET) $(TOUCH) -m node_modules/.modified	
+
+#############################################################################################
+#############################################################################################
+##
+## DEFAULT-DEFINITIONS
+##
+#############################################################################################
+#############################################################################################
+
+
+.PHONY: clean
+## clean 
+clean:
+	$(QUIET) $(RM) --recursive $(THIS_DIR)dist/
+
+$(PACKAGE_DIST_FILE): $(PACKAGE_SOURCE_FILES)
+	$(QUIET) $(NPM) run build
+
+.PHONY: build
+## create all packages
+build: $(NODE_MODULES_DIR) $(PACKAGE_DIST_FILE)
+
+.PHONY: dev
+## start dev server
+dev: $(NODE_MODULES_DIR)
+	$(QUIET) $(NPM) run start
+
+FILEMARKER:=\#GITIGNORE-START
+
+$(PACKAGE_DIR).npmignore: $(PACKAGE_DIR).gitignore
+	$(QUIET) $(SED) -i -n '/$(FILEMARKER)/q;p'  $(PACKAGE_DIR).npmignore  
+	$(QUIET) $(ECHO) "$(FILEMARKER)" >> $(PACKAGE_DIR).npmignore  
+	$(QUIET) $(ECHO) "" >> $(PACKAGE_DIR).npmignore  
+	$(QUIET) $(ECHO) "" >> $(PACKAGE_DIR).npmignore  
+	$(QUIET) $(CAT) $(PACKAGE_DIR).gitignore >> $(PACKAGE_DIR).npmignore  
+
+.PHONY: release
+## release repos with new version (use NEXTVERSION)
+release:
+	$(ECHOMARKER) "release"
+	$(QUIET) $(SCRIPT_PATH)increase-version.sh "$(PACKAGE_DIR)package.json" "$(PACKAGE_VERSION)" "$(NEXTVERSION)"  
+	$(QUIET) $(MAKE) clean
+	$(QUIET) $(MAKE) build
+	$(QUIET) $(MAKE) npm-publish
+	$(QUIET) touch $(THIS_DIR)package.json
+
+.PHONY: npm-publish
+## publish library to npm
+npm-publish: build $(PACKAGE_DIR).npmignore
+	$(ECHOMARKER) "publish"
+	$(QUIET) $(CD) $(THIS_DIR) ; \
+		$(NPM) pack ; \
+		$(CD) -
+
+
+
+# $(NPM) publish --access public ; \
diff --git a/README.md b/README.md
index 3860f21bf607dedb4194602b8a0365bdaf4ffa00..dee0c1ae757cd721bf64758c34a0096802d420f1 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,387 @@
-# grapesjs-project-manager
+# Grapesjs Project Manager
 
+> Requires GrapesJS v0.17.3 or higher.
 
+Project, template and page manager for grapesjs. This version makes use of the [`PageManager`](https://github.com/artf/grapesjs/pull/3411) and has different plugin and package name, the previous version which doesn't make use of the `PageManager` can be found [here](https://github.com/Ju99ernaut/grapesjs-template-manager/tree/template-manager).
 
-## Getting started
+| Project | Project settings |
+|---------|------------------|
+| ![Screenshot (224)](https://user-images.githubusercontent.com/48953676/130074718-0e50d99a-d004-41e0-890c-66f05175e45c.png) | ![Screenshot (226)](https://user-images.githubusercontent.com/48953676/130074800-075eab50-3059-493d-afa7-0b9f8af9fdf6.png) |
 
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+| Pages | Page settings |
+|-------|---------------|
+|  ![Screenshot (225)](https://user-images.githubusercontent.com/48953676/130074843-81c120f9-37a0-4ee1-b8d4-019a16de6a46.png) | ![Screenshot (227)](https://user-images.githubusercontent.com/48953676/130074992-12a1774a-0a85-4e4f-8a14-1c95e0a7a7b6.png) |
 
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+### HTML
+```html
+<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet">
+<link href="https://unpkg.com/grapesjs-project-manager/dist/grapesjs-project-manager.min.css" rel="stylesheet">
+<script src="https://unpkg.com/grapesjs"></script>
+<script src="https://unpkg.com/grapesjs-project-manager"></script>
 
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+<div id="gjs"></div>
+```
 
+### JS
+```js
+const editor = grapesjs.init({
+  container: '#gjs',
+  height: '100%',
+  fromElement: true,
+  pageManager: true, // This should be set to true
+  storageManager:  {
+    type: 'indexeddb',
+    // ...
+  },
+  plugins: ['grapesjs-project-manager'],
+});
+
+// Running commands from panels
+const pn = editor.Panels;
+pn.addButton('options', {
+    id: 'open-templates',
+    className: 'fa fa-folder-o',
+    attributes: {
+        title: 'Open projects and templates'
+    },
+    command: 'open-templates', //Open modal 
+});
+pn.addButton('views', {
+    id: 'open-pages',
+    className: 'fa fa-file-o',
+    attributes: {
+        title: 'Take Screenshot'
+    },
+    command: 'open-pages',
+    togglable: false
+});
 ```
-cd existing_repo
-git remote add origin https://gitlab.schukai.com/oss/minerva/grapesjs-project-manager.git
-git branch -M master
-git push -uf origin master
+
+### CSS
+```css
+body, html {
+  margin: 0;
+  height: 100%;
+}
 ```
 
-## Integrate with your tools
 
-- [ ] [Set up project integrations](https://gitlab.schukai.com/oss/minerva/grapesjs-project-manager/-/settings/integrations)
+## Summary
+
+* Plugin name: `grapesjs-project-manager`
+* Commands
+    * `open-templates`
+    * `open-pages`
+    * `open-settings`
+    * `get-uuidv4`
+    * `take-screenshot`
+    * `save-as-template`
+    * `delete-template`
+* Storages
+    * `indexeddb`
+    * `firestore`
+    * `rest-api`
+
+## Options
+
+| Option | Description | Default |
+|-|-|-
+| `dbName` | Database name | `gjs` |
+| `objectStoreName` | Collection name | `templates` |
+| `loadFirst` | Load first template in storage | `true` |
+| `customLoad` | Use custom onload function(skips default onload steps), `(ed, cs) => ...` | `false` |
+| `components` | Default components since `fromElement` is not supported | `undefined` |
+| `style` | Default style since `fromElement` is not supported | `undefined` |
+| `indexeddbVersion` | IndexedDB schema version | `5` |
+| `onDelete` | On successful template deletion | `Function(Check source)` |
+| `onDeleteError` | On error template deletion | `Function(Check source)` |
+| `onScreenShotError` | On error capturing screenshot | `Function(Check source)` |
+| `quality` | Generated screenshot quality | `.01` |
+| `mdlTitle` | Modal title | `Project Manager` |
+| `apiKey` | `Firebase` API key | ` ` |
+| `authDomain` | `Firebase` Auth domain | ` ` |
+| `projectId` | `Cloud Firestore` project ID | ` ` |
+| `firebaseConfig` | Extra firebase app credentials | `{}` |
+| `enableOffline` | Enable `Firestore` support for offline data persistence | `true` |
+| `settings` | `Firestore` database settings | `{ timestampsInSnapshots: true }` |
+| `uuidInPath` | Add uuid as path parameter on store for `rest-api`(useful for validation) | `true` |
+| `size` | Display estimated project sizes | `true` |
+| `currentPageOpen` | Send feedback when open is clicked on current page | `check source` |
+| `ì18n` | I18n object containing language [more info](https://grapesjs.com/docs/modules/I18n.html#configuration) | `{}` |
+
+* Setting `loadFirst` to `false` prevents overwritting the contents of the editor with the contents of the first template in storage.
+* Only use options for `Firebase` when using `Cloud Firestore` storage.
+* `dbName` and `indexeddbVersion` only apply to `indexddb` storage.
+* `objectStoreName` acts as collection name for both `firestore` and ` indexeddb`.
+* When `uuidInPath` is set to `false` the store request will be `http://endpoint/store/` instead of `http://endpoint/store/{uuid}`
+
+## Local/IndexedDB
+
+```js
+window.editor = grapesjs.init({
+  container: '#gjs',
+  // ...
+  pageManager: true,
+  storageManager:  {
+    type: 'indexeddb'
+  },
+  plugins: ['grapesjs-project-manager'],
+  pluginsOpts: {
+    'grapesjs-project-manager': { /* Options */ }
+  }
+});
+```
+
+## Firestore
 
-## Collaborate with your team
+> Tested on firebase v8+. Firebase v9+ not yet supported.
 
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+Configure firestore access rules for your app.
+Add libraries to `head` of document:
 
-## Test and Deploy
+```html
+<!-- The core Firebase JS SDK is always required and must be listed first -->
+<script src="https://www.gstatic.com/firebasejs/8.3.1/firebase-app.js"></script>
+<!-- TODO: Add SDKs for Firebase products that you want to use
+https://firebase.google.com/docs/web/setup#available-libraries -->
+<script src="https://www.gstatic.com/firebasejs/8.3.1/firebase-firestore.js"></script>
+```
 
-Use the built-in continuous integration in GitLab.
+Add credentials:
+
+```js
+window.editor = grapesjs.init({
+  container: '#gjs',
+  // ...
+  pageManager: true,
+  storageManager:  {
+    type: 'firestore'
+  },
+  plugins: ['grapesjs-project-manager'],
+  pluginsOpts: {
+    'grapesjs-project-manager': { 
+      // Firebase API key
+      apiKey: 'FIREBASE_API_KEY',
+      // Firebase Auth domain
+      authDomain: 'app-id-00a00.firebaseapp.com',
+      // Cloud Firestore project ID
+      projectId: 'app-id-00a00',
+    }
+  }
+});
+```
 
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
+## Remote/REST-API
+
+Example backend https://github.com/Ju99ernaut/gjs-api
+
+```js
+window.editor = grapesjs.init({
+  container: '#gjs',
+  // ...
+  pageManager: true,
+  storageManager:  {
+    type: 'rest-api',
+    // the URIs below can be the same depending on your API design 
+    urlStore: 'https://endpoint/store/',// POST
+    urlLoad: 'https://endpoint/load/',// GET
+    urlDelete: 'https://endpoint/delete/',// DELETE
+    params: { _some_token: '...' },
+    headers: { Authorization: 'Basic ...' }
+  },
+  plugins: ['grapesjs-project-manager'],
+  pluginsOpts: {
+    'grapesjs-project-manager': { /* options */ }
+  }
+});
+```
 
-***
+The backend schema can be something like:
+
+`GET` `https://api/templates/` load all templates
+
+Returns
+```json
+[
+    {
+      "id": "UUIDv4",
+      "name": "Page name",
+      "template": false,
+      "thumbnail": "",
+      "description": "No description",
+      "gjs-assets": "[]",
+      "gjs-pages": "[]",
+      "gjs-styles": "[]",
+      "updated_at": ""
+    }
+]
+```
 
-# Editing this README
+`POST` `https://api/templates/{idx: UUIDv4}` store template
+
+Expects
+```json
+{
+  "id": "UUIDv4",
+  "name": "Page name",
+  "template": false,
+  "thumbnail": "",
+  "description": "No description",
+  "gjs-assets": "[]",
+  "gjs-pages": "[]",
+  "gjs-styles": "[]",
+  "updated_at": ""
+}
+```
 
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!).  Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
+`GET` `https://api/templates/{idx: UUIDv4}` load template
+
+Returns
+```json
+{
+  "id": "UUIDv4",
+  "name": "Page name",
+  "template": false,
+  "thumbnail": "",
+  "description": "No description",
+  "gjs-assets": "[]",
+  "gjs-pages": "[]",
+  "gjs-styles": "[]",
+  "updated_at": ""
+}
+```
 
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
+`DELETE` `https://api/templates/{idx: UUIDv4}` delete template
+
+Which would have the following setup:
+```js
+window.editor = grapesjs.init({
+  container: '#gjs',
+  // ...
+  storageManager:  {
+    type: 'rest-api',
+    // the URIs below can be the same depending on your API design 
+    urlStore: 'https://api/templates/',// POST
+    urlLoad: 'https://api/templates/',// GET
+    urlDelete: 'https://api/templates/',// DELETE
+  },
+  plugins: ['grapesjs-template-manager'],
+  pluginsOpts: {
+    'grapesjs-template-manager': { /* options */ }
+  }
+});
+```
 
-## Name
-Choose a self-explaining name for your project.
+All the fields are generated from the editor so you just need to setup your API to receive and return data in that format. I'd recommend you check the network tab so you get a more accurate format for the payloads.
 
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
+## Download
 
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
+* CDN
+    * `https://unpkg.com/grapesjs-project-manager`
+* NPM
+    * `npm i grapesjs-project-manager`
+* GIT
+    * `git clone https://github.com/Ju99ernaut/grapesjs-template-manager.git`
 
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
 
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
 
 ## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
 
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
+Directly in the browser
+```html
+<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet"/>
+<link href="https://unpkg.com/grapesjs-project-manager/dist/grapesjs-project-manager.min.css" rel="stylesheet">
+<script src="https://unpkg.com/grapesjs"></script>
+<script src="path/to/grapesjs-project-manager.min.js"></script>
+
+<div id="gjs"></div>
+
+<script type="text/javascript">
+  var editor = grapesjs.init({
+      container: '#gjs',
+      // ...
+      pageManager: true,
+      storageManager:  {
+        type: 'indexeddb',
+        // ...
+      },
+      plugins: ['grapesjs-project-manager'],
+      pluginsOpts: {
+        'grapesjs-project-manager': { /* options */ }
+      }
+  });
+</script>
+```
+
+Modern javascript
+```js
+import grapesjs from 'grapesjs';
+import plugin from 'grapesjs-project-manager';
+import 'grapesjs/dist/css/grapes.min.css';
+import 'grapesjs-project-manager/dist/grapesjs-project-manager.min.css';
+
+const editor = grapesjs.init({
+  container : '#gjs',
+  // ...
+  pageManager: true,
+  storageManager:  {
+    type: 'indexeddb',
+    // ...
+  },
+  plugins: [plugin],
+  pluginsOpts: {
+    [plugin]: { /* options */ }
+  }
+  // or
+  plugins: [
+    editor => plugin(editor, { /* options */ }),
+  ],
+});
+```
+
+## Development
 
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
+Clone the repository
 
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
+```sh
+$ git clone https://github.com/Ju99ernaut/grapesjs-template-manager.git
+$ cd grapesjs-template-manager
+```
+
+Install dependencies
+
+```sh
+$ npm i
+```
+
+Build css or watch scss
+
+```sh
+$ npm run build:css
+```
+
+`OR`
 
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+```
+$ npm run watch:scss
+```
+
+Start the dev server
+
+```sh
+$ npm start
+```
+
+Build the source
 
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+```sh
+$ npm run build
+```
 
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
 
 ## License
-For open source projects, say how it is licensed.
 
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+[AGPL 3.0](https://www.gnu.org/licenses/agpl-3.0.de.html)
+
+This is a fork from [github.com/Ju99ernaut/grapesjs-template-manager](https://github.com/Ju99ernaut/grapesjs-template-manager)
+licensed under the MIT License by Brendon Ngirazi.
diff --git a/grapesjs-project-manager.iml b/grapesjs-project-manager.iml
new file mode 100644
index 0000000000000000000000000000000000000000..034b754d1c5b46481166bf056b03fde7c0c00d69
--- /dev/null
+++ b/grapesjs-project-manager.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/source" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..c0a0c0d6bd4906a569f9f7859cd0425880db0e65
--- /dev/null
+++ b/index.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>GrapesJS Bootstrap v5 Blocks Plugin</title>
+    <link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet">
+    <script src="https://unpkg.com/grapesjs"></script>
+    <script src="@schukai/grapesjs-project-manager.min.js"></script>
+    <style>
+        body,
+        html {
+            height: 100%;
+            margin: 0;
+        }
+    </style>
+</head>
+<body>
+    <div id="gjs" style="height:0px; overflow:hidden">
+        <div style="margin:100px 100px 25px; padding:25px; font:caption">
+            This is a demo content from _index.html. You can use this template file for
+            development purpose. It won't be stored in your git repository
+        </div>
+    </div>
+
+
+    <script type="text/javascript">
+        window.editor = grapesjs.init({
+            height: '100%',
+            container: '#gjs',
+            showOffsets: true,
+            fromElement: true,
+            noticeOnUnload: false,
+            pageManager: true,
+            storageManager: {
+                type: 'indexeddb'
+            },
+            plugins: ['grapesjs-project-manager'],
+            pluginsOpts: {
+                'grapesjs-project-manager': { /* Test here your options  */ }
+            }
+        });
+        const pn = editor.Panels;
+        pn.addButton('options', {
+            id: 'open-templates',
+            className: 'fa fa-folder-o',
+            attributes: {
+                title: 'Open Templates'
+            },
+            command: 'open-templates', //Open modal 
+        });
+        pn.addButton('views', {
+            id: 'open-pages',
+            className: 'fa fa-file-o',
+            attributes: {
+                title: 'Take Screenshot'
+            },
+            command: 'open-pages',
+            togglable: false
+        });
+    </script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..0732e271ba77fdbde3ff92f54665c808feefae21
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,15950 @@
+{
+    "name": "@schukai/grapesjs-project-manager",
+    "version": "1.0.0",
+    "lockfileVersion": 2,
+    "requires": true,
+    "packages": {
+        "": {
+            "name": "@schukai/grapesjs-project-manager",
+            "version": "1.0.0",
+            "license": "AGPL 3.0",
+            "dependencies": {
+                "dom-to-image": "^2.6.0"
+            },
+            "devDependencies": {
+                "grapesjs-cli": "^1.0.14",
+                "sass": "^1.32.8"
+            }
+        },
+        "node_modules/@babel/code-frame": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/highlight": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/compat-data": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@babel/core": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/generator": "^7.13.0",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helpers": "^7.13.0",
+                "@babel/parser": "^7.13.4",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "convert-source-map": "^1.7.0",
+                "debug": "^4.1.0",
+                "gensync": "^1.0.0-beta.2",
+                "json5": "^2.1.2",
+                "lodash": "^4.17.19",
+                "semver": "^6.3.0",
+                "source-map": "^0.5.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/babel"
+            }
+        },
+        "node_modules/@babel/generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.13.0",
+                "jsesc": "^2.5.1",
+                "source-map": "^0.5.0"
+            }
+        },
+        "node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-explode-assignable-expression": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-compilation-targets": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-validator-option": "^7.12.17",
+                "browserslist": "^4.14.5",
+                "semver": "^6.3.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/@babel/helper-create-class-features-plugin": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-member-expression-to-functions": "^7.13.0",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-split-export-declaration": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/@babel/helper-create-regexp-features-plugin": {
+            "version": "7.12.17",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "regexpu-core": "^4.7.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/@babel/helper-define-polyfill-provider": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-compilation-targets": "^7.13.0",
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/traverse": "^7.13.0",
+                "debug": "^4.1.1",
+                "lodash.debounce": "^4.0.8",
+                "resolve": "^1.14.2",
+                "semver": "^6.1.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.4.0-0"
+            }
+        },
+        "node_modules/@babel/helper-explode-assignable-expression": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helper-function-name": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-get-function-arity": "^7.12.13",
+                "@babel/template": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-get-function-arity": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-hoist-variables": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helper-member-expression-to-functions": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helper-module-imports": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-module-transforms": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-simple-access": "^7.12.13",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "lodash": "^4.17.19"
+            }
+        },
+        "node_modules/@babel/helper-optimise-call-expression": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-plugin-utils": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@babel/helper-remap-async-to-generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "@babel/helper-wrap-function": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helper-replace-supers": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-member-expression-to-functions": "^7.13.0",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helper-simple-access": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+            "version": "7.12.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.1"
+            }
+        },
+        "node_modules/@babel/helper-split-export-declaration": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/helper-validator-identifier": {
+            "version": "7.12.11",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@babel/helper-validator-option": {
+            "version": "7.12.17",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@babel/helper-wrap-function": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/helpers": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "node_modules/@babel/highlight": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "chalk": "^2.0.0",
+                "js-tokens": "^4.0.0"
+            }
+        },
+        "node_modules/@babel/highlight/node_modules/chalk": {
+            "version": "2.4.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/@babel/parser": {
+            "version": "7.13.4",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "parser": "bin/babel-parser.js"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-async-generator-functions": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-remap-async-to-generator": "^7.13.0",
+                "@babel/plugin-syntax-async-generators": "^7.8.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-class-properties": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-dynamic-import": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-export-namespace-from": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-json-strings": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-json-strings": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-numeric-separator": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-object-rest-spread": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-transform-parameters": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-optional-chaining": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-private-methods": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "engines": {
+                "node": ">=4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-async-generators": {
+            "version": "7.8.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-class-properties": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-dynamic-import": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-export-namespace-from": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-json-strings": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+            "version": "7.10.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-numeric-separator": {
+            "version": "7.10.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-object-rest-spread": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-optional-chaining": {
+            "version": "7.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-syntax-top-level-await": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-arrow-functions": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-async-to-generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-remap-async-to-generator": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-block-scoped-functions": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-block-scoping": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-classes": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "globals": "^11.1.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-computed-properties": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-destructuring": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-dotall-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-duplicate-keys": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-exponentiation-operator": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-for-of": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-function-name": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-member-expression-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-modules-amd": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-modules-commonjs": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-simple-access": "^7.12.13",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-modules-systemjs": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-hoist-variables": "^7.13.0",
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-modules-umd": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-new-target": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-object-super": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-parameters": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-property-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-regenerator": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "regenerator-transform": "^0.14.2"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-reserved-words": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-runtime": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "babel-plugin-polyfill-corejs2": "^0.1.4",
+                "babel-plugin-polyfill-corejs3": "^0.1.3",
+                "babel-plugin-polyfill-regenerator": "^0.1.2",
+                "semver": "^6.3.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-shorthand-properties": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-spread": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-sticky-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-template-literals": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-typeof-symbol": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-unicode-escapes": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/plugin-transform-unicode-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/preset-env": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-validator-option": "^7.12.17",
+                "@babel/plugin-proposal-async-generator-functions": "^7.13.8",
+                "@babel/plugin-proposal-class-properties": "^7.13.0",
+                "@babel/plugin-proposal-dynamic-import": "^7.13.8",
+                "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
+                "@babel/plugin-proposal-json-strings": "^7.13.8",
+                "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
+                "@babel/plugin-proposal-numeric-separator": "^7.12.13",
+                "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
+                "@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
+                "@babel/plugin-proposal-optional-chaining": "^7.13.8",
+                "@babel/plugin-proposal-private-methods": "^7.13.0",
+                "@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
+                "@babel/plugin-syntax-async-generators": "^7.8.4",
+                "@babel/plugin-syntax-class-properties": "^7.12.13",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+                "@babel/plugin-syntax-json-strings": "^7.8.3",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+                "@babel/plugin-syntax-top-level-await": "^7.12.13",
+                "@babel/plugin-transform-arrow-functions": "^7.13.0",
+                "@babel/plugin-transform-async-to-generator": "^7.13.0",
+                "@babel/plugin-transform-block-scoped-functions": "^7.12.13",
+                "@babel/plugin-transform-block-scoping": "^7.12.13",
+                "@babel/plugin-transform-classes": "^7.13.0",
+                "@babel/plugin-transform-computed-properties": "^7.13.0",
+                "@babel/plugin-transform-destructuring": "^7.13.0",
+                "@babel/plugin-transform-dotall-regex": "^7.12.13",
+                "@babel/plugin-transform-duplicate-keys": "^7.12.13",
+                "@babel/plugin-transform-exponentiation-operator": "^7.12.13",
+                "@babel/plugin-transform-for-of": "^7.13.0",
+                "@babel/plugin-transform-function-name": "^7.12.13",
+                "@babel/plugin-transform-literals": "^7.12.13",
+                "@babel/plugin-transform-member-expression-literals": "^7.12.13",
+                "@babel/plugin-transform-modules-amd": "^7.13.0",
+                "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+                "@babel/plugin-transform-modules-systemjs": "^7.13.8",
+                "@babel/plugin-transform-modules-umd": "^7.13.0",
+                "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
+                "@babel/plugin-transform-new-target": "^7.12.13",
+                "@babel/plugin-transform-object-super": "^7.12.13",
+                "@babel/plugin-transform-parameters": "^7.13.0",
+                "@babel/plugin-transform-property-literals": "^7.12.13",
+                "@babel/plugin-transform-regenerator": "^7.12.13",
+                "@babel/plugin-transform-reserved-words": "^7.12.13",
+                "@babel/plugin-transform-shorthand-properties": "^7.12.13",
+                "@babel/plugin-transform-spread": "^7.13.0",
+                "@babel/plugin-transform-sticky-regex": "^7.12.13",
+                "@babel/plugin-transform-template-literals": "^7.13.0",
+                "@babel/plugin-transform-typeof-symbol": "^7.12.13",
+                "@babel/plugin-transform-unicode-escapes": "^7.12.13",
+                "@babel/plugin-transform-unicode-regex": "^7.12.13",
+                "@babel/preset-modules": "^0.1.4",
+                "@babel/types": "^7.13.0",
+                "babel-plugin-polyfill-corejs2": "^0.1.4",
+                "babel-plugin-polyfill-corejs3": "^0.1.3",
+                "babel-plugin-polyfill-regenerator": "^0.1.2",
+                "core-js-compat": "^3.9.0",
+                "semver": "^6.3.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/preset-modules": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@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"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/@babel/runtime": {
+            "version": "7.13.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "regenerator-runtime": "^0.13.4"
+            }
+        },
+        "node_modules/@babel/template": {
+            "version": "7.12.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/parser": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "node_modules/@babel/traverse": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/generator": "^7.13.0",
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "@babel/parser": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "debug": "^4.1.0",
+                "globals": "^11.1.0",
+                "lodash": "^4.17.19"
+            }
+        },
+        "node_modules/@babel/types": {
+            "version": "7.13.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "lodash": "^4.17.19",
+                "to-fast-properties": "^2.0.0"
+            }
+        },
+        "node_modules/@samverschueren/stream-to-observable": {
+            "version": "0.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "any-observable": "^0.3.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependenciesMeta": {
+                "rxjs": {
+                    "optional": true
+                },
+                "zen-observable": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/@types/anymatch": {
+            "version": "1.3.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/glob": {
+            "version": "7.1.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@types/minimatch": "*",
+                "@types/node": "*"
+            }
+        },
+        "node_modules/@types/html-minifier-terser": {
+            "version": "5.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/json-schema": {
+            "version": "7.0.7",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/minimatch": {
+            "version": "3.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/node": {
+            "version": "14.14.31",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/source-list-map": {
+            "version": "0.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/tapable": {
+            "version": "1.0.6",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@types/uglify-js": {
+            "version": "3.12.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "source-map": "^0.6.1"
+            }
+        },
+        "node_modules/@types/uglify-js/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/@types/webpack": {
+            "version": "4.41.26",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@types/anymatch": "*",
+                "@types/node": "*",
+                "@types/tapable": "*",
+                "@types/uglify-js": "*",
+                "@types/webpack-sources": "*",
+                "source-map": "^0.6.0"
+            }
+        },
+        "node_modules/@types/webpack-sources": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@types/node": "*",
+                "@types/source-list-map": "*",
+                "source-map": "^0.7.3"
+            }
+        },
+        "node_modules/@types/webpack-sources/node_modules/source-map": {
+            "version": "0.7.3",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/@types/webpack/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/@webassemblyjs/ast": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/helper-module-context": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/wast-parser": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/floating-point-hex-parser": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@webassemblyjs/helper-api-error": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@webassemblyjs/helper-buffer": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@webassemblyjs/helper-code-frame": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/wast-printer": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/helper-fsm": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/@webassemblyjs/helper-module-context": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@webassemblyjs/helper-wasm-section": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/ieee754": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@xtuc/ieee754": "^1.2.0"
+            }
+        },
+        "node_modules/@webassemblyjs/leb128": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "node_modules/@webassemblyjs/utf8": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@webassemblyjs/wasm-edit": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/helper-wasm-section": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0",
+                "@webassemblyjs/wasm-opt": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0",
+                "@webassemblyjs/wast-printer": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-gen": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/ieee754": "1.9.0",
+                "@webassemblyjs/leb128": "1.9.0",
+                "@webassemblyjs/utf8": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-opt": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/wasm-parser": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-api-error": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/ieee754": "1.9.0",
+                "@webassemblyjs/leb128": "1.9.0",
+                "@webassemblyjs/utf8": "1.9.0"
+            }
+        },
+        "node_modules/@webassemblyjs/wast-parser": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+                "@webassemblyjs/helper-api-error": "1.9.0",
+                "@webassemblyjs/helper-code-frame": "1.9.0",
+                "@webassemblyjs/helper-fsm": "1.9.0",
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "node_modules/@webassemblyjs/wast-printer": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/wast-parser": "1.9.0",
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "node_modules/@xtuc/ieee754": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "BSD-3-Clause"
+        },
+        "node_modules/@xtuc/long": {
+            "version": "4.2.2",
+            "dev": true,
+            "license": "Apache-2.0"
+        },
+        "node_modules/accepts": {
+            "version": "1.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mime-types": "~2.1.24",
+                "negotiator": "0.6.2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/acorn": {
+            "version": "6.4.2",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "acorn": "bin/acorn"
+            },
+            "engines": {
+                "node": ">=0.4.0"
+            }
+        },
+        "node_modules/ajv": {
+            "version": "6.12.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
+        },
+        "node_modules/ajv-errors": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "peerDependencies": {
+                "ajv": ">=5.0.0"
+            }
+        },
+        "node_modules/ajv-keywords": {
+            "version": "3.5.2",
+            "dev": true,
+            "license": "MIT",
+            "peerDependencies": {
+                "ajv": "^6.9.1"
+            }
+        },
+        "node_modules/ansi-colors": {
+            "version": "3.2.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/ansi-escapes": {
+            "version": "4.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "type-fest": "^0.11.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/ansi-html": {
+            "version": "0.0.7",
+            "dev": true,
+            "engines": [
+                "node >= 0.8.0"
+            ],
+            "license": "Apache-2.0",
+            "bin": {
+                "ansi-html": "bin/ansi-html"
+            }
+        },
+        "node_modules/ansi-regex": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/any-observable": {
+            "version": "0.3.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/anymatch": {
+            "version": "3.1.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "normalize-path": "^3.0.0",
+                "picomatch": "^2.0.4"
+            },
+            "engines": {
+                "node": ">= 8"
+            }
+        },
+        "node_modules/aproba": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/arr-diff": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/arr-flatten": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/arr-union": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-flatten": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/array-union": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "array-uniq": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-uniq": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/array-unique": {
+            "version": "0.3.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/asn1.js": {
+            "version": "5.4.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^4.0.0",
+                "inherits": "^2.0.1",
+                "minimalistic-assert": "^1.0.0",
+                "safer-buffer": "^2.1.0"
+            }
+        },
+        "node_modules/asn1.js/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/assert": {
+            "version": "1.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "object-assign": "^4.1.1",
+                "util": "0.10.3"
+            }
+        },
+        "node_modules/assert/node_modules/inherits": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/assert/node_modules/util": {
+            "version": "0.10.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "2.0.1"
+            }
+        },
+        "node_modules/assign-symbols": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/async": {
+            "version": "2.6.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "lodash": "^4.17.14"
+            }
+        },
+        "node_modules/async-each": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/async-limiter": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/atob": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "(MIT OR Apache-2.0)",
+            "bin": {
+                "atob": "bin/atob.js"
+            },
+            "engines": {
+                "node": ">= 4.5.0"
+            }
+        },
+        "node_modules/babel-loader": {
+            "version": "8.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "find-cache-dir": "^3.3.1",
+                "loader-utils": "^1.4.0",
+                "make-dir": "^3.1.0",
+                "schema-utils": "^2.6.5"
+            },
+            "engines": {
+                "node": ">= 8.9"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0",
+                "webpack": ">=2"
+            }
+        },
+        "node_modules/babel-plugin-dynamic-import-node": {
+            "version": "2.3.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "object.assign": "^4.1.0"
+            }
+        },
+        "node_modules/babel-plugin-polyfill-corejs2": {
+            "version": "0.1.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/compat-data": "^7.13.0",
+                "@babel/helper-define-polyfill-provider": "^0.1.4",
+                "semver": "^6.1.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/babel-plugin-polyfill-corejs3": {
+            "version": "0.1.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-define-polyfill-provider": "^0.1.4",
+                "core-js-compat": "^3.8.1"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/babel-plugin-polyfill-regenerator": {
+            "version": "0.1.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-define-polyfill-provider": "^0.1.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
+            }
+        },
+        "node_modules/balanced-match": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/base": {
+            "version": "0.11.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cache-base": "^1.0.1",
+                "class-utils": "^0.3.5",
+                "component-emitter": "^1.2.1",
+                "define-property": "^1.0.0",
+                "isobject": "^3.0.1",
+                "mixin-deep": "^1.2.0",
+                "pascalcase": "^0.1.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/define-property": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/base64-js": {
+            "version": "1.5.1",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "license": "MIT"
+        },
+        "node_modules/batch": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/big.js": {
+            "version": "5.2.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/binary-extensions": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/bluebird": {
+            "version": "3.7.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/bn.js": {
+            "version": "5.2.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/body-parser": {
+            "version": "1.19.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/body-parser/node_modules/bytes": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/body-parser/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/body-parser/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/bonjour": {
+            "version": "3.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/boolbase": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/brace-expansion": {
+            "version": "1.1.11",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+            }
+        },
+        "node_modules/braces": {
+            "version": "2.3.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "arr-flatten": "^1.1.0",
+                "array-unique": "^0.3.2",
+                "extend-shallow": "^2.0.1",
+                "fill-range": "^4.0.0",
+                "isobject": "^3.0.1",
+                "repeat-element": "^1.1.2",
+                "snapdragon": "^0.8.1",
+                "snapdragon-node": "^2.0.1",
+                "split-string": "^3.0.2",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/braces/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/brorand": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/browserify-aes": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/browserify-cipher": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "browserify-aes": "^1.0.4",
+                "browserify-des": "^1.0.0",
+                "evp_bytestokey": "^1.0.0"
+            }
+        },
+        "node_modules/browserify-des": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cipher-base": "^1.0.1",
+                "des.js": "^1.0.0",
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.1.2"
+            }
+        },
+        "node_modules/browserify-rsa": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^5.0.0",
+                "randombytes": "^2.0.1"
+            }
+        },
+        "node_modules/browserify-sign": {
+            "version": "4.2.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "bn.js": "^5.1.1",
+                "browserify-rsa": "^4.0.1",
+                "create-hash": "^1.2.0",
+                "create-hmac": "^1.1.7",
+                "elliptic": "^6.5.3",
+                "inherits": "^2.0.4",
+                "parse-asn1": "^5.1.5",
+                "readable-stream": "^3.6.0",
+                "safe-buffer": "^5.2.0"
+            }
+        },
+        "node_modules/browserify-sign/node_modules/safe-buffer": {
+            "version": "5.2.1",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "license": "MIT"
+        },
+        "node_modules/browserify-zlib": {
+            "version": "0.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pako": "~1.0.5"
+            }
+        },
+        "node_modules/browserslist": {
+            "version": "4.16.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "caniuse-lite": "^1.0.30001181",
+                "colorette": "^1.2.1",
+                "electron-to-chromium": "^1.3.649",
+                "escalade": "^3.1.1",
+                "node-releases": "^1.1.70"
+            },
+            "bin": {
+                "browserslist": "cli.js"
+            },
+            "engines": {
+                "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/browserslist"
+            }
+        },
+        "node_modules/buffer": {
+            "version": "4.9.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "base64-js": "^1.0.2",
+                "ieee754": "^1.1.4",
+                "isarray": "^1.0.0"
+            }
+        },
+        "node_modules/buffer-from": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/buffer-indexof": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/buffer-xor": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/builtin-status-codes": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/bytes": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/cacache": {
+            "version": "12.0.4",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "bluebird": "^3.5.5",
+                "chownr": "^1.1.1",
+                "figgy-pudding": "^3.5.1",
+                "glob": "^7.1.4",
+                "graceful-fs": "^4.1.15",
+                "infer-owner": "^1.0.3",
+                "lru-cache": "^5.1.1",
+                "mississippi": "^3.0.0",
+                "mkdirp": "^0.5.1",
+                "move-concurrently": "^1.0.1",
+                "promise-inflight": "^1.0.1",
+                "rimraf": "^2.6.3",
+                "ssri": "^6.0.1",
+                "unique-filename": "^1.1.1",
+                "y18n": "^4.0.0"
+            }
+        },
+        "node_modules/cache-base": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "collection-visit": "^1.0.0",
+                "component-emitter": "^1.2.1",
+                "get-value": "^2.0.6",
+                "has-value": "^1.0.0",
+                "isobject": "^3.0.1",
+                "set-value": "^2.0.0",
+                "to-object-path": "^0.3.0",
+                "union-value": "^1.0.0",
+                "unset-value": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/call-bind": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "function-bind": "^1.1.1",
+                "get-intrinsic": "^1.0.2"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/camel-case": {
+            "version": "4.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pascal-case": "^3.1.2",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/camelcase": {
+            "version": "5.3.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/caniuse-lite": {
+            "version": "1.0.30001192",
+            "dev": true,
+            "license": "CC-BY-4.0"
+        },
+        "node_modules/chalk": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/chalk?sponsor=1"
+            }
+        },
+        "node_modules/chalk/node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+            }
+        },
+        "node_modules/chalk/node_modules/color-convert": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-name": "~1.1.4"
+            },
+            "engines": {
+                "node": ">=7.0.0"
+            }
+        },
+        "node_modules/chalk/node_modules/color-name": {
+            "version": "1.1.4",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/chalk/node_modules/has-flag": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/chalk/node_modules/supports-color": {
+            "version": "7.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/chardet": {
+            "version": "0.7.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/chokidar": {
+            "version": "3.5.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "anymatch": "~3.1.1",
+                "braces": "~3.0.2",
+                "glob-parent": "~5.1.0",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.5.0"
+            },
+            "engines": {
+                "node": ">= 8.10.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.1"
+            }
+        },
+        "node_modules/chokidar/node_modules/braces": {
+            "version": "3.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "fill-range": "^7.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/chokidar/node_modules/fill-range": {
+            "version": "7.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "to-regex-range": "^5.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/chokidar/node_modules/is-number": {
+            "version": "7.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/chokidar/node_modules/to-regex-range": {
+            "version": "5.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-number": "^7.0.0"
+            },
+            "engines": {
+                "node": ">=8.0"
+            }
+        },
+        "node_modules/chownr": {
+            "version": "1.1.4",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/chrome-trace-event": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "tslib": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=6.0"
+            }
+        },
+        "node_modules/chrome-trace-event/node_modules/tslib": {
+            "version": "1.14.1",
+            "dev": true,
+            "license": "0BSD"
+        },
+        "node_modules/cipher-base": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "node_modules/class-utils": {
+            "version": "0.3.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "arr-union": "^3.1.0",
+                "define-property": "^0.2.5",
+                "isobject": "^3.0.0",
+                "static-extend": "^0.1.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/class-utils/node_modules/define-property": {
+            "version": "0.2.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/clean-css": {
+            "version": "4.2.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "source-map": "~0.6.0"
+            },
+            "engines": {
+                "node": ">= 4.0"
+            }
+        },
+        "node_modules/clean-css/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/cli-cursor": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "restore-cursor": "^3.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/cli-truncate": {
+            "version": "0.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "slice-ansi": "0.0.4",
+                "string-width": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "number-is-nan": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/cli-truncate/node_modules/string-width": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/cli-width": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "ISC",
+            "engines": {
+                "node": ">= 10"
+            }
+        },
+        "node_modules/cliui": {
+            "version": "5.0.0",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "string-width": "^3.1.0",
+                "strip-ansi": "^5.2.0",
+                "wrap-ansi": "^5.1.0"
+            }
+        },
+        "node_modules/cliui/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/cliui/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/cliui/node_modules/string-width": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/cliui/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/cliui/node_modules/wrap-ansi": {
+            "version": "5.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^3.2.0",
+                "string-width": "^3.0.0",
+                "strip-ansi": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/code-point-at": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/collection-visit": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "map-visit": "^1.0.0",
+                "object-visit": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/color-convert": {
+            "version": "1.9.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/color-name": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/colorette": {
+            "version": "1.2.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/commander": {
+            "version": "4.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/commondir": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/component-emitter": {
+            "version": "1.3.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/compressible": {
+            "version": "2.0.18",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mime-db": ">= 1.43.0 < 2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/compression": {
+            "version": "1.7.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/compression/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/compression/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/concat-map": {
+            "version": "0.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/concat-stream": {
+            "version": "1.6.2",
+            "dev": true,
+            "engines": [
+                "node >= 0.8"
+            ],
+            "license": "MIT",
+            "dependencies": {
+                "buffer-from": "^1.0.0",
+                "inherits": "^2.0.3",
+                "readable-stream": "^2.2.2",
+                "typedarray": "^0.0.6"
+            }
+        },
+        "node_modules/concat-stream/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/concat-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/connect-history-api-fallback": {
+            "version": "1.6.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8"
+            }
+        },
+        "node_modules/console-browserify": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "node_modules/constants-browserify": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/content-disposition": {
+            "version": "0.5.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "5.1.2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/content-type": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/convert-source-map": {
+            "version": "1.7.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.1"
+            }
+        },
+        "node_modules/cookie": {
+            "version": "0.4.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/cookie-signature": {
+            "version": "1.0.6",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/copy-concurrently": {
+            "version": "1.0.5",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "aproba": "^1.1.1",
+                "fs-write-stream-atomic": "^1.0.8",
+                "iferr": "^0.1.5",
+                "mkdirp": "^0.5.1",
+                "rimraf": "^2.5.4",
+                "run-queue": "^1.0.0"
+            }
+        },
+        "node_modules/copy-descriptor": {
+            "version": "0.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/core-js": {
+            "version": "3.9.0",
+            "dev": true,
+            "hasInstallScript": true,
+            "license": "MIT",
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
+            }
+        },
+        "node_modules/core-js-compat": {
+            "version": "3.9.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "browserslist": "^4.16.3",
+                "semver": "7.0.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/core-js"
+            }
+        },
+        "node_modules/core-js-compat/node_modules/semver": {
+            "version": "7.0.0",
+            "dev": true,
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/core-util-is": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/create-ecdh": {
+            "version": "4.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^4.1.0",
+                "elliptic": "^6.5.3"
+            }
+        },
+        "node_modules/create-ecdh/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/create-hash": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cipher-base": "^1.0.1",
+                "inherits": "^2.0.1",
+                "md5.js": "^1.3.4",
+                "ripemd160": "^2.0.1",
+                "sha.js": "^2.4.0"
+            }
+        },
+        "node_modules/create-hmac": {
+            "version": "1.1.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/cross-spawn": {
+            "version": "6.0.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+            },
+            "engines": {
+                "node": ">=4.8"
+            }
+        },
+        "node_modules/cross-spawn/node_modules/semver": {
+            "version": "5.7.1",
+            "dev": true,
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver"
+            }
+        },
+        "node_modules/crypto-browserify": {
+            "version": "3.12.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/css-select": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "boolbase": "^1.0.0",
+                "css-what": "^3.2.1",
+                "domutils": "^1.7.0",
+                "nth-check": "^1.0.2"
+            }
+        },
+        "node_modules/css-what": {
+            "version": "3.4.2",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "engines": {
+                "node": ">= 6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/fb55"
+            }
+        },
+        "node_modules/cyclist": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/date-fns": {
+            "version": "1.30.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/debug": {
+            "version": "4.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/decamelize": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/decode-uri-component": {
+            "version": "0.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/deep-equal": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/default-gateway": {
+            "version": "4.2.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "execa": "^1.0.0",
+                "ip-regex": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/define-properties": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "object-keys": "^1.0.12"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/define-property": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/define-property/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/define-property/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/define-property/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/del": {
+            "version": "4.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@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"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/depd": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/des.js": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
+        "node_modules/destroy": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/detect-file": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/detect-node": {
+            "version": "2.0.4",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/diffie-hellman": {
+            "version": "5.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^4.1.0",
+                "miller-rabin": "^4.0.0",
+                "randombytes": "^2.0.0"
+            }
+        },
+        "node_modules/diffie-hellman/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/dns-equal": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/dns-packet": {
+            "version": "1.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ip": "^1.1.0",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "node_modules/dns-txt": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "buffer-indexof": "^1.0.0"
+            }
+        },
+        "node_modules/dom-converter": {
+            "version": "0.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "utila": "~0.4"
+            }
+        },
+        "node_modules/dom-serializer": {
+            "version": "0.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "domelementtype": "^2.0.1",
+                "entities": "^2.0.0"
+            }
+        },
+        "node_modules/dom-serializer/node_modules/domelementtype": {
+            "version": "2.1.0",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/fb55"
+                }
+            ],
+            "license": "BSD-2-Clause"
+        },
+        "node_modules/dom-to-image": {
+            "version": "2.6.0",
+            "license": "MIT"
+        },
+        "node_modules/domain-browser": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.4",
+                "npm": ">=1.2"
+            }
+        },
+        "node_modules/domelementtype": {
+            "version": "1.3.1",
+            "dev": true,
+            "license": "BSD-2-Clause"
+        },
+        "node_modules/domhandler": {
+            "version": "2.4.2",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "domelementtype": "1"
+            }
+        },
+        "node_modules/domutils": {
+            "version": "1.7.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "dom-serializer": "0",
+                "domelementtype": "1"
+            }
+        },
+        "node_modules/dot-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "no-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/duplexify": {
+            "version": "3.7.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "end-of-stream": "^1.0.0",
+                "inherits": "^2.0.1",
+                "readable-stream": "^2.0.0",
+                "stream-shift": "^1.0.0"
+            }
+        },
+        "node_modules/duplexify/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/duplexify/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/ee-first": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/electron-to-chromium": {
+            "version": "1.3.675",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/elegant-spinner": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/elliptic": {
+            "version": "6.5.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^4.11.9",
+                "brorand": "^1.1.0",
+                "hash.js": "^1.0.0",
+                "hmac-drbg": "^1.0.1",
+                "inherits": "^2.0.4",
+                "minimalistic-assert": "^1.0.1",
+                "minimalistic-crypto-utils": "^1.0.1"
+            }
+        },
+        "node_modules/elliptic/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/emoji-regex": {
+            "version": "8.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/emojis-list": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/encodeurl": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/end-of-stream": {
+            "version": "1.4.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "once": "^1.4.0"
+            }
+        },
+        "node_modules/enhanced-resolve": {
+            "version": "4.5.0",
+            "dev": true,
+            "dependencies": {
+                "graceful-fs": "^4.1.2",
+                "memory-fs": "^0.5.0",
+                "tapable": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/enhanced-resolve/node_modules/memory-fs": {
+            "version": "0.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "errno": "^0.1.3",
+                "readable-stream": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=4.3.0 <5.0.0 || >=5.10"
+            }
+        },
+        "node_modules/enhanced-resolve/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/enhanced-resolve/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/entities": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "funding": {
+                "url": "https://github.com/fb55/entities?sponsor=1"
+            }
+        },
+        "node_modules/errno": {
+            "version": "0.1.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "prr": "~1.0.1"
+            },
+            "bin": {
+                "errno": "cli.js"
+            }
+        },
+        "node_modules/es-abstract": {
+            "version": "1.18.0-next.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "es-to-primitive": "^1.2.1",
+                "function-bind": "^1.1.1",
+                "get-intrinsic": "^1.0.2",
+                "has": "^1.0.3",
+                "has-symbols": "^1.0.1",
+                "is-callable": "^1.2.2",
+                "is-negative-zero": "^2.0.1",
+                "is-regex": "^1.1.1",
+                "object-inspect": "^1.9.0",
+                "object-keys": "^1.1.1",
+                "object.assign": "^4.1.2",
+                "string.prototype.trimend": "^1.0.3",
+                "string.prototype.trimstart": "^1.0.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/es-to-primitive": {
+            "version": "1.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-callable": "^1.1.4",
+                "is-date-object": "^1.0.1",
+                "is-symbol": "^1.0.2"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/escalade": {
+            "version": "3.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/escape-html": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/escape-string-regexp": {
+            "version": "1.0.5",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/eslint-scope": {
+            "version": "4.0.3",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/esm": {
+            "version": "3.2.25",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/esrecurse": {
+            "version": "4.3.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "estraverse": "^5.2.0"
+            },
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
+        "node_modules/esrecurse/node_modules/estraverse": {
+            "version": "5.2.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
+        "node_modules/estraverse": {
+            "version": "4.3.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
+        "node_modules/esutils": {
+            "version": "2.0.3",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/etag": {
+            "version": "1.8.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/eventemitter3": {
+            "version": "4.0.7",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/events": {
+            "version": "3.3.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8.x"
+            }
+        },
+        "node_modules/eventsource": {
+            "version": "1.0.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "original": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/evp_bytestokey": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "md5.js": "^1.3.4",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "node_modules/execa": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cross-spawn": "^6.0.0",
+                "get-stream": "^4.0.0",
+                "is-stream": "^1.1.0",
+                "npm-run-path": "^2.0.0",
+                "p-finally": "^1.0.0",
+                "signal-exit": "^3.0.0",
+                "strip-eof": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/expand-brackets": {
+            "version": "2.1.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "debug": "^2.3.3",
+                "define-property": "^0.2.5",
+                "extend-shallow": "^2.0.1",
+                "posix-character-classes": "^0.1.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/expand-brackets/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/expand-brackets/node_modules/define-property": {
+            "version": "0.2.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/expand-brackets/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/expand-brackets/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/expand-tilde": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "homedir-polyfill": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/express": {
+            "version": "4.17.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": ">= 0.10.0"
+            }
+        },
+        "node_modules/express/node_modules/array-flatten": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/express/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/express/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/extend-shallow": {
+            "version": "3.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extend-shallow/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/external-editor": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "chardet": "^0.7.0",
+                "iconv-lite": "^0.4.24",
+                "tmp": "^0.0.33"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/extglob": {
+            "version": "2.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "array-unique": "^0.3.2",
+                "define-property": "^1.0.0",
+                "expand-brackets": "^2.1.4",
+                "extend-shallow": "^2.0.1",
+                "fragment-cache": "^0.2.1",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/define-property": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/extglob/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/fast-deep-equal": {
+            "version": "3.1.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/fast-json-stable-stringify": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/faye-websocket": {
+            "version": "0.11.3",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "websocket-driver": ">=0.5.1"
+            },
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/figgy-pudding": {
+            "version": "3.5.2",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/figures": {
+            "version": "3.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/fill-range": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "extend-shallow": "^2.0.1",
+                "is-number": "^3.0.0",
+                "repeat-string": "^1.6.1",
+                "to-regex-range": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/fill-range/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/finalhandler": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "debug": "2.6.9",
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "on-finished": "~2.3.0",
+                "parseurl": "~1.3.3",
+                "statuses": "~1.5.0",
+                "unpipe": "~1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/finalhandler/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/finalhandler/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/find-cache-dir": {
+            "version": "3.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "commondir": "^1.0.1",
+                "make-dir": "^3.0.2",
+                "pkg-dir": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+            }
+        },
+        "node_modules/find-up": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "locate-path": "^5.0.0",
+                "path-exists": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/findup-sync": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "detect-file": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "micromatch": "^3.0.4",
+                "resolve-dir": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/flush-write-stream": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "readable-stream": "^2.3.6"
+            }
+        },
+        "node_modules/flush-write-stream/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/flush-write-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/follow-redirects": {
+            "version": "1.13.3",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "individual",
+                    "url": "https://github.com/sponsors/RubenVerborgh"
+                }
+            ],
+            "license": "MIT",
+            "engines": {
+                "node": ">=4.0"
+            },
+            "peerDependenciesMeta": {
+                "debug": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/for-in": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/forwarded": {
+            "version": "0.1.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/fragment-cache": {
+            "version": "0.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "map-cache": "^0.2.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/fresh": {
+            "version": "0.5.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/from2": {
+            "version": "2.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "readable-stream": "^2.0.0"
+            }
+        },
+        "node_modules/from2/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/from2/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/fs-write-stream-atomic": {
+            "version": "1.0.10",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "graceful-fs": "^4.1.2",
+                "iferr": "^0.1.5",
+                "imurmurhash": "^0.1.4",
+                "readable-stream": "1 || 2"
+            }
+        },
+        "node_modules/fs-write-stream-atomic/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/fs-write-stream-atomic/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/fs.realpath": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/function-bind": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/gensync": {
+            "version": "1.0.0-beta.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/get-caller-file": {
+            "version": "2.0.5",
+            "dev": true,
+            "license": "ISC",
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
+            }
+        },
+        "node_modules/get-intrinsic": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "function-bind": "^1.1.1",
+                "has": "^1.0.3",
+                "has-symbols": "^1.0.1"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/get-stream": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pump": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/get-value": {
+            "version": "2.0.6",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/glob": {
+            "version": "7.1.6",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.0.4",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+            },
+            "engines": {
+                "node": "*"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/isaacs"
+            }
+        },
+        "node_modules/glob-parent": {
+            "version": "5.1.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "is-glob": "^4.0.1"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/global-modules": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "global-prefix": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/global-modules/node_modules/global-prefix": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ini": "^1.3.5",
+                "kind-of": "^6.0.2",
+                "which": "^1.3.1"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/global-prefix": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "expand-tilde": "^2.0.2",
+                "homedir-polyfill": "^1.0.1",
+                "ini": "^1.3.4",
+                "is-windows": "^1.0.1",
+                "which": "^1.2.14"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/globals": {
+            "version": "11.12.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/globby": {
+            "version": "6.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "array-union": "^1.0.1",
+                "glob": "^7.0.3",
+                "object-assign": "^4.0.1",
+                "pify": "^2.0.0",
+                "pinkie-promise": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/globby/node_modules/pify": {
+            "version": "2.3.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/graceful-fs": {
+            "version": "4.2.6",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/grapesjs-cli": {
+            "version": "1.0.14",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "dependencies": {
+                "@babel/core": "^7.12.10",
+                "@babel/plugin-transform-runtime": "^7.12.10",
+                "@babel/preset-env": "^7.12.11",
+                "@babel/runtime": "^7.12.5",
+                "babel-loader": "^8.2.2",
+                "chalk": "^4.1.0",
+                "core-js": "^3.8.2",
+                "esm": "^3.2.25",
+                "html-webpack-plugin": "^4.5.1",
+                "inquirer": "^7.3.3",
+                "listr": "^0.14.3",
+                "lodash.template": "^4.5.0",
+                "spdx-license-list": "^6.3.0",
+                "webpack": "^4.44.2",
+                "webpack-cli": "^3.3.12",
+                "webpack-dev-server": "^3.11.1",
+                "yargs": "^16.2.0"
+            },
+            "bin": {
+                "grapesjs-cli": "bin/grapesjs-cli"
+            }
+        },
+        "node_modules/handle-thing": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/has": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "function-bind": "^1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.4.0"
+            }
+        },
+        "node_modules/has-ansi": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/has-flag": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/has-symbols": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/has-value": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "get-value": "^2.0.6",
+                "has-values": "^1.0.0",
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/has-values": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-number": "^3.0.0",
+                "kind-of": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/has-values/node_modules/kind-of": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/hash-base": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.6.0",
+                "safe-buffer": "^5.2.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/hash-base/node_modules/safe-buffer": {
+            "version": "5.2.1",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "license": "MIT"
+        },
+        "node_modules/hash.js": {
+            "version": "1.1.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "minimalistic-assert": "^1.0.1"
+            }
+        },
+        "node_modules/he": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "he": "bin/he"
+            }
+        },
+        "node_modules/hmac-drbg": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "hash.js": "^1.0.3",
+                "minimalistic-assert": "^1.0.0",
+                "minimalistic-crypto-utils": "^1.0.1"
+            }
+        },
+        "node_modules/homedir-polyfill": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "parse-passwd": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/hpack.js": {
+            "version": "2.1.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "obuf": "^1.0.0",
+                "readable-stream": "^2.0.1",
+                "wbuf": "^1.1.0"
+            }
+        },
+        "node_modules/hpack.js/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/hpack.js/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/html-entities": {
+            "version": "1.4.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/html-minifier-terser": {
+            "version": "5.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "bin": {
+                "html-minifier-terser": "cli.js"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/html-webpack-plugin": {
+            "version": "4.5.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@types/html-minifier-terser": "^5.0.0",
+                "@types/tapable": "^1.0.5",
+                "@types/webpack": "^4.41.8",
+                "html-minifier-terser": "^5.0.1",
+                "loader-utils": "^1.2.3",
+                "lodash": "^4.17.20",
+                "pretty-error": "^2.1.1",
+                "tapable": "^1.1.3",
+                "util.promisify": "1.0.0"
+            },
+            "engines": {
+                "node": ">=6.9"
+            },
+            "peerDependencies": {
+                "webpack": "^4.0.0 || ^5.0.0"
+            }
+        },
+        "node_modules/htmlparser2": {
+            "version": "3.10.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/htmlparser2/node_modules/entities": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "BSD-2-Clause"
+        },
+        "node_modules/http-deceiver": {
+            "version": "1.2.7",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/http-errors": {
+            "version": "1.7.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "depd": "~1.1.2",
+                "inherits": "2.0.3",
+                "setprototypeof": "1.1.1",
+                "statuses": ">= 1.5.0 < 2",
+                "toidentifier": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/http-errors/node_modules/inherits": {
+            "version": "2.0.3",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/http-parser-js": {
+            "version": "0.5.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/http-proxy": {
+            "version": "1.18.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "eventemitter3": "^4.0.0",
+                "follow-redirects": "^1.0.0",
+                "requires-port": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
+        },
+        "node_modules/http-proxy-middleware": {
+            "version": "0.19.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "http-proxy": "^1.17.0",
+                "is-glob": "^4.0.0",
+                "lodash": "^4.17.11",
+                "micromatch": "^3.1.10"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/https-browserify": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/iconv-lite": {
+            "version": "0.4.24",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/ieee754": {
+            "version": "1.2.1",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "license": "BSD-3-Clause"
+        },
+        "node_modules/iferr": {
+            "version": "0.1.5",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/import-local": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pkg-dir": "^3.0.0",
+                "resolve-cwd": "^2.0.0"
+            },
+            "bin": {
+                "import-local-fixture": "fixtures/cli.js"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/import-local/node_modules/find-up": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/import-local/node_modules/locate-path": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/import-local/node_modules/p-locate": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/import-local/node_modules/path-exists": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/import-local/node_modules/pkg-dir": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "find-up": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/imurmurhash": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8.19"
+            }
+        },
+        "node_modules/indent-string": {
+            "version": "3.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/infer-owner": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/inflight": {
+            "version": "1.0.6",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+            }
+        },
+        "node_modules/inherits": {
+            "version": "2.0.4",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/ini": {
+            "version": "1.3.8",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/inquirer": {
+            "version": "7.3.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-escapes": "^4.2.1",
+                "chalk": "^4.1.0",
+                "cli-cursor": "^3.1.0",
+                "cli-width": "^3.0.0",
+                "external-editor": "^3.0.3",
+                "figures": "^3.0.0",
+                "lodash": "^4.17.19",
+                "mute-stream": "0.0.8",
+                "run-async": "^2.4.0",
+                "rxjs": "^6.6.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0",
+                "through": "^2.3.6"
+            },
+            "engines": {
+                "node": ">=8.0.0"
+            }
+        },
+        "node_modules/inquirer/node_modules/ansi-regex": {
+            "version": "5.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/inquirer/node_modules/strip-ansi": {
+            "version": "6.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/internal-ip": {
+            "version": "4.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "default-gateway": "^4.2.0",
+                "ipaddr.js": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/interpret": {
+            "version": "1.4.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/ip": {
+            "version": "1.1.5",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/ip-regex": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/ipaddr.js": {
+            "version": "1.9.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/is-absolute-url": {
+            "version": "3.0.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/is-accessor-descriptor": {
+            "version": "0.1.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-arguments": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-binary-path": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "binary-extensions": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/is-buffer": {
+            "version": "1.1.6",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/is-callable": {
+            "version": "1.2.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-core-module": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has": "^1.0.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-data-descriptor": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-data-descriptor/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-date-object": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-descriptor": {
+            "version": "0.1.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-descriptor/node_modules/kind-of": {
+            "version": "5.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-extendable": {
+            "version": "0.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-extglob": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/is-glob": {
+            "version": "4.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extglob": "^2.1.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-negative-zero": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-number": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-number/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-observable": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "symbol-observable": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/is-path-cwd": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/is-path-in-cwd": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-path-inside": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/is-path-inside": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "path-is-inside": "^1.0.2"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/is-plain-object": {
+            "version": "2.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-promise": {
+            "version": "2.2.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/is-regex": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "has-symbols": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-stream": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-symbol": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-symbols": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/is-windows": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/is-wsl": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/isarray": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/isexe": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/isobject": {
+            "version": "3.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/js-tokens": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/jsesc": {
+            "version": "2.5.2",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "jsesc": "bin/jsesc"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/json-parse-better-errors": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/json-schema-traverse": {
+            "version": "0.4.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/json3": {
+            "version": "3.3.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/json5": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "minimist": "^1.2.5"
+            },
+            "bin": {
+                "json5": "lib/cli.js"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/killable": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/kind-of": {
+            "version": "6.0.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/listr": {
+            "version": "0.14.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@samverschueren/stream-to-observable": "^0.3.0",
+                "is-observable": "^1.1.0",
+                "is-promise": "^2.1.0",
+                "is-stream": "^1.1.0",
+                "listr-silent-renderer": "^1.1.1",
+                "listr-update-renderer": "^0.5.0",
+                "listr-verbose-renderer": "^0.5.0",
+                "p-map": "^2.0.0",
+                "rxjs": "^6.3.3"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/listr-silent-renderer": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-update-renderer": {
+            "version": "0.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "chalk": "^1.1.3",
+                "cli-truncate": "^0.2.1",
+                "elegant-spinner": "^1.0.1",
+                "figures": "^1.7.0",
+                "indent-string": "^3.0.0",
+                "log-symbols": "^1.0.2",
+                "log-update": "^2.3.0",
+                "strip-ansi": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "peerDependencies": {
+                "listr": "^0.14.2"
+            }
+        },
+        "node_modules/listr-update-renderer/node_modules/ansi-styles": {
+            "version": "2.2.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/listr-update-renderer/node_modules/chalk": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^2.2.1",
+                "escape-string-regexp": "^1.0.2",
+                "has-ansi": "^2.0.0",
+                "strip-ansi": "^3.0.0",
+                "supports-color": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/listr-update-renderer/node_modules/figures": {
+            "version": "1.7.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5",
+                "object-assign": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/listr-update-renderer/node_modules/supports-color": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/listr-verbose-renderer": {
+            "version": "0.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "chalk": "^2.4.1",
+                "cli-cursor": "^2.1.0",
+                "date-fns": "^1.27.2",
+                "figures": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/chalk": {
+            "version": "2.4.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/cli-cursor": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "restore-cursor": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/figures": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "escape-string-regexp": "^1.0.5"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/mimic-fn": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/onetime": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mimic-fn": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/listr-verbose-renderer/node_modules/restore-cursor": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "onetime": "^2.0.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/loader-runner": {
+            "version": "2.4.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4.3.0 <5.0.0 || >=5.10"
+            }
+        },
+        "node_modules/loader-utils": {
+            "version": "1.4.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "big.js": "^5.2.2",
+                "emojis-list": "^3.0.0",
+                "json5": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/loader-utils/node_modules/json5": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "minimist": "^1.2.0"
+            },
+            "bin": {
+                "json5": "lib/cli.js"
+            }
+        },
+        "node_modules/locate-path": {
+            "version": "5.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-locate": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/lodash": {
+            "version": "4.17.21",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/lodash._reinterpolate": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/lodash.debounce": {
+            "version": "4.0.8",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/lodash.template": {
+            "version": "4.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "lodash._reinterpolate": "^3.0.0",
+                "lodash.templatesettings": "^4.0.0"
+            }
+        },
+        "node_modules/lodash.templatesettings": {
+            "version": "4.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "lodash._reinterpolate": "^3.0.0"
+            }
+        },
+        "node_modules/log-symbols": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "chalk": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/log-symbols/node_modules/ansi-styles": {
+            "version": "2.2.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/log-symbols/node_modules/chalk": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^2.2.1",
+                "escape-string-regexp": "^1.0.2",
+                "has-ansi": "^2.0.0",
+                "strip-ansi": "^3.0.0",
+                "supports-color": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/log-symbols/node_modules/supports-color": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/log-update": {
+            "version": "2.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-escapes": "^3.0.0",
+                "cli-cursor": "^2.0.0",
+                "wrap-ansi": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/log-update/node_modules/ansi-escapes": {
+            "version": "3.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/log-update/node_modules/cli-cursor": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "restore-cursor": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/log-update/node_modules/mimic-fn": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/log-update/node_modules/onetime": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mimic-fn": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/log-update/node_modules/restore-cursor": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "onetime": "^2.0.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/loglevel": {
+            "version": "1.7.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6.0"
+            },
+            "funding": {
+                "type": "tidelift",
+                "url": "https://tidelift.com/funding/github/npm/loglevel"
+            }
+        },
+        "node_modules/lower-case": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/lru-cache": {
+            "version": "5.1.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "yallist": "^3.0.2"
+            }
+        },
+        "node_modules/make-dir": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "semver": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/map-cache": {
+            "version": "0.2.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/map-visit": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "object-visit": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/md5.js": {
+            "version": "1.3.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.1.2"
+            }
+        },
+        "node_modules/media-typer": {
+            "version": "0.3.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/memory-fs": {
+            "version": "0.4.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "errno": "^0.1.3",
+                "readable-stream": "^2.0.1"
+            }
+        },
+        "node_modules/memory-fs/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/memory-fs/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/merge-descriptors": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/methods": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/micromatch": {
+            "version": "3.1.10",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "braces": "^2.3.1",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "extglob": "^2.0.4",
+                "fragment-cache": "^0.2.1",
+                "kind-of": "^6.0.2",
+                "nanomatch": "^1.2.9",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/miller-rabin": {
+            "version": "4.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bn.js": "^4.0.0",
+                "brorand": "^1.0.1"
+            },
+            "bin": {
+                "miller-rabin": "bin/miller-rabin"
+            }
+        },
+        "node_modules/miller-rabin/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/mime": {
+            "version": "1.6.0",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/mime-db": {
+            "version": "1.46.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/mime-types": {
+            "version": "2.1.29",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mime-db": "1.46.0"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/mimic-fn": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/minimalistic-assert": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/minimalistic-crypto-utils": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/minimatch": {
+            "version": "3.0.4",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "brace-expansion": "^1.1.7"
+            },
+            "engines": {
+                "node": "*"
+            }
+        },
+        "node_modules/minimist": {
+            "version": "1.2.5",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/mississippi": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "concat-stream": "^1.5.0",
+                "duplexify": "^3.4.2",
+                "end-of-stream": "^1.1.0",
+                "flush-write-stream": "^1.0.0",
+                "from2": "^2.1.0",
+                "parallel-transform": "^1.1.0",
+                "pump": "^3.0.0",
+                "pumpify": "^1.3.3",
+                "stream-each": "^1.1.0",
+                "through2": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/mixin-deep": {
+            "version": "1.3.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "for-in": "^1.0.2",
+                "is-extendable": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/mixin-deep/node_modules/is-extendable": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-plain-object": "^2.0.4"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/mkdirp": {
+            "version": "0.5.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "minimist": "^1.2.5"
+            },
+            "bin": {
+                "mkdirp": "bin/cmd.js"
+            }
+        },
+        "node_modules/move-concurrently": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "aproba": "^1.1.1",
+                "copy-concurrently": "^1.0.0",
+                "fs-write-stream-atomic": "^1.0.8",
+                "mkdirp": "^0.5.1",
+                "rimraf": "^2.5.4",
+                "run-queue": "^1.0.3"
+            }
+        },
+        "node_modules/ms": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/multicast-dns": {
+            "version": "6.2.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "dns-packet": "^1.3.1",
+                "thunky": "^1.0.2"
+            },
+            "bin": {
+                "multicast-dns": "cli.js"
+            }
+        },
+        "node_modules/multicast-dns-service-types": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/mute-stream": {
+            "version": "0.0.8",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/nanomatch": {
+            "version": "1.2.13",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "arr-diff": "^4.0.0",
+                "array-unique": "^0.3.2",
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "fragment-cache": "^0.2.1",
+                "is-windows": "^1.0.2",
+                "kind-of": "^6.0.2",
+                "object.pick": "^1.3.0",
+                "regex-not": "^1.0.0",
+                "snapdragon": "^0.8.1",
+                "to-regex": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/negotiator": {
+            "version": "0.6.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/neo-async": {
+            "version": "2.6.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/nice-try": {
+            "version": "1.0.5",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/no-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "lower-case": "^2.0.2",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/node-forge": {
+            "version": "0.10.0",
+            "dev": true,
+            "license": "(BSD-3-Clause OR GPL-2.0)",
+            "engines": {
+                "node": ">= 6.0.0"
+            }
+        },
+        "node_modules/node-libs-browser": {
+            "version": "2.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/node-libs-browser/node_modules/punycode": {
+            "version": "1.4.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/node-libs-browser/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/node-libs-browser/node_modules/readable-stream/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/node-releases": {
+            "version": "1.1.71",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/normalize-path": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/npm-run-path": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "path-key": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/nth-check": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "boolbase": "~1.0.0"
+            }
+        },
+        "node_modules/number-is-nan": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-assign": {
+            "version": "4.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-copy": {
+            "version": "0.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "copy-descriptor": "^0.1.0",
+                "define-property": "^0.2.5",
+                "kind-of": "^3.0.3"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-copy/node_modules/define-property": {
+            "version": "0.2.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-copy/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object-inspect": {
+            "version": "1.9.0",
+            "dev": true,
+            "license": "MIT",
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/object-is": {
+            "version": "1.1.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/object-keys": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4"
+            }
+        },
+        "node_modules/object-visit": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/object.assign": {
+            "version": "4.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.0",
+                "define-properties": "^1.1.3",
+                "has-symbols": "^1.0.1",
+                "object-keys": "^1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/object.getownpropertydescriptors": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3",
+                "es-abstract": "^1.18.0-next.2"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/object.pick": {
+            "version": "1.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "isobject": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/obuf": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/on-finished": {
+            "version": "2.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ee-first": "1.1.1"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/on-headers": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/once": {
+            "version": "1.4.0",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "wrappy": "1"
+            }
+        },
+        "node_modules/onetime": {
+            "version": "5.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "mimic-fn": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/opn": {
+            "version": "5.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-wsl": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/original": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "url-parse": "^1.4.3"
+            }
+        },
+        "node_modules/os-browserify": {
+            "version": "0.3.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/os-tmpdir": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/p-finally": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/p-limit": {
+            "version": "2.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-try": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/p-locate": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-limit": "^2.2.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/p-map": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/p-retry": {
+            "version": "3.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "retry": "^0.12.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/p-try": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/pako": {
+            "version": "1.0.11",
+            "dev": true,
+            "license": "(MIT AND Zlib)"
+        },
+        "node_modules/parallel-transform": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cyclist": "^1.0.1",
+                "inherits": "^2.0.3",
+                "readable-stream": "^2.1.5"
+            }
+        },
+        "node_modules/parallel-transform/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/parallel-transform/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/param-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "dot-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/parse-asn1": {
+            "version": "5.1.6",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "asn1.js": "^5.2.0",
+                "browserify-aes": "^1.0.0",
+                "evp_bytestokey": "^1.0.0",
+                "pbkdf2": "^3.0.3",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "node_modules/parse-passwd": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/parseurl": {
+            "version": "1.3.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/pascal-case": {
+            "version": "3.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "no-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node_modules/pascalcase": {
+            "version": "0.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/path-browserify": {
+            "version": "0.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/path-dirname": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/path-exists": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/path-is-absolute": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/path-is-inside": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "(WTFPL OR MIT)"
+        },
+        "node_modules/path-key": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/path-parse": {
+            "version": "1.0.6",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/path-to-regexp": {
+            "version": "0.1.7",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/pbkdf2": {
+            "version": "3.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "create-hash": "^1.1.2",
+                "create-hmac": "^1.1.4",
+                "ripemd160": "^2.0.1",
+                "safe-buffer": "^5.0.1",
+                "sha.js": "^2.4.8"
+            },
+            "engines": {
+                "node": ">=0.12"
+            }
+        },
+        "node_modules/picomatch": {
+            "version": "2.2.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/jonschlinkert"
+            }
+        },
+        "node_modules/pify": {
+            "version": "4.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/pinkie": {
+            "version": "2.0.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/pinkie-promise": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pinkie": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/pkg-dir": {
+            "version": "4.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "find-up": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/portfinder": {
+            "version": "1.0.28",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "async": "^2.6.2",
+                "debug": "^3.1.1",
+                "mkdirp": "^0.5.5"
+            },
+            "engines": {
+                "node": ">= 0.12.0"
+            }
+        },
+        "node_modules/portfinder/node_modules/debug": {
+            "version": "3.2.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "^2.1.1"
+            }
+        },
+        "node_modules/posix-character-classes": {
+            "version": "0.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/pretty-error": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "lodash": "^4.17.20",
+                "renderkid": "^2.0.4"
+            }
+        },
+        "node_modules/process": {
+            "version": "0.11.10",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6.0"
+            }
+        },
+        "node_modules/process-nextick-args": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/promise-inflight": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/proxy-addr": {
+            "version": "2.0.6",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "forwarded": "~0.1.2",
+                "ipaddr.js": "1.9.1"
+            },
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/prr": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/public-encrypt": {
+            "version": "4.0.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/public-encrypt/node_modules/bn.js": {
+            "version": "4.12.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/pump": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
+        "node_modules/pumpify": {
+            "version": "1.5.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "duplexify": "^3.6.0",
+                "inherits": "^2.0.3",
+                "pump": "^2.0.0"
+            }
+        },
+        "node_modules/pumpify/node_modules/pump": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
+        "node_modules/punycode": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/qs": {
+            "version": "6.7.0",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.6"
+            }
+        },
+        "node_modules/querystring": {
+            "version": "0.2.0",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.x"
+            }
+        },
+        "node_modules/querystring-es3": {
+            "version": "0.2.1",
+            "dev": true,
+            "engines": {
+                "node": ">=0.4.x"
+            }
+        },
+        "node_modules/querystringify": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/randombytes": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "node_modules/randomfill": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "randombytes": "^2.0.5",
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "node_modules/range-parser": {
+            "version": "1.2.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/raw-body": {
+            "version": "2.4.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "bytes": "3.1.0",
+                "http-errors": "1.7.2",
+                "iconv-lite": "0.4.24",
+                "unpipe": "1.0.0"
+            },
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/raw-body/node_modules/bytes": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/readable-stream": {
+            "version": "3.6.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/readdirp": {
+            "version": "3.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "picomatch": "^2.2.1"
+            },
+            "engines": {
+                "node": ">=8.10.0"
+            }
+        },
+        "node_modules/regenerate": {
+            "version": "1.4.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/regenerate-unicode-properties": {
+            "version": "8.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "regenerate": "^1.4.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/regenerator-runtime": {
+            "version": "0.13.7",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/regenerator-transform": {
+            "version": "0.14.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/runtime": "^7.8.4"
+            }
+        },
+        "node_modules/regex-not": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "extend-shallow": "^3.0.2",
+                "safe-regex": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/regexp.prototype.flags": {
+            "version": "1.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            },
+            "engines": {
+                "node": ">= 0.4"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/regexpu-core": {
+            "version": "4.7.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/regjsgen": {
+            "version": "0.5.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/regjsparser": {
+            "version": "0.6.7",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "jsesc": "~0.5.0"
+            },
+            "bin": {
+                "regjsparser": "bin/parser"
+            }
+        },
+        "node_modules/regjsparser/node_modules/jsesc": {
+            "version": "0.5.0",
+            "dev": true,
+            "bin": {
+                "jsesc": "bin/jsesc"
+            }
+        },
+        "node_modules/relateurl": {
+            "version": "0.2.7",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.10"
+            }
+        },
+        "node_modules/remove-trailing-separator": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/renderkid": {
+            "version": "2.0.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "css-select": "^2.0.2",
+                "dom-converter": "^0.2",
+                "htmlparser2": "^3.10.1",
+                "lodash": "^4.17.20",
+                "strip-ansi": "^3.0.0"
+            }
+        },
+        "node_modules/repeat-element": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/repeat-string": {
+            "version": "1.6.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/require-directory": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/require-main-filename": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/requires-port": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/resolve": {
+            "version": "1.20.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-core-module": "^2.2.0",
+                "path-parse": "^1.0.6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/resolve-cwd": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "resolve-from": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/resolve-dir": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "expand-tilde": "^2.0.0",
+                "global-modules": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/resolve-dir/node_modules/global-modules": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "global-prefix": "^1.0.1",
+                "is-windows": "^1.0.1",
+                "resolve-dir": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/resolve-from": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/resolve-url": {
+            "version": "0.2.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/restore-cursor": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "onetime": "^5.1.0",
+                "signal-exit": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/ret": {
+            "version": "0.1.15",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.12"
+            }
+        },
+        "node_modules/retry": {
+            "version": "0.12.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/rimraf": {
+            "version": "2.7.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "glob": "^7.1.3"
+            },
+            "bin": {
+                "rimraf": "bin.js"
+            }
+        },
+        "node_modules/ripemd160": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1"
+            }
+        },
+        "node_modules/run-async": {
+            "version": "2.4.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.12.0"
+            }
+        },
+        "node_modules/run-queue": {
+            "version": "1.0.3",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "aproba": "^1.1.1"
+            }
+        },
+        "node_modules/rxjs": {
+            "version": "6.6.6",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "tslib": "^1.9.0"
+            },
+            "engines": {
+                "npm": ">=2.0.0"
+            }
+        },
+        "node_modules/rxjs/node_modules/tslib": {
+            "version": "1.14.1",
+            "dev": true,
+            "license": "0BSD"
+        },
+        "node_modules/safe-buffer": {
+            "version": "5.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/safe-regex": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ret": "~0.1.10"
+            }
+        },
+        "node_modules/safer-buffer": {
+            "version": "2.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/sass": {
+            "version": "1.32.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "chokidar": ">=2.0.0 <4.0.0"
+            },
+            "bin": {
+                "sass": "sass.js"
+            },
+            "engines": {
+                "node": ">=8.9.0"
+            }
+        },
+        "node_modules/schema-utils": {
+            "version": "2.7.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@types/json-schema": "^7.0.5",
+                "ajv": "^6.12.4",
+                "ajv-keywords": "^3.5.2"
+            },
+            "engines": {
+                "node": ">= 8.9.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            }
+        },
+        "node_modules/select-hose": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/selfsigned": {
+            "version": "1.10.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "node-forge": "^0.10.0"
+            }
+        },
+        "node_modules/semver": {
+            "version": "6.3.0",
+            "dev": true,
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/send": {
+            "version": "0.17.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/send/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/send/node_modules/debug/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/send/node_modules/ms": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/serialize-javascript": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "dependencies": {
+                "randombytes": "^2.1.0"
+            }
+        },
+        "node_modules/serve-index": {
+            "version": "1.9.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "accepts": "~1.3.4",
+                "batch": "0.6.1",
+                "debug": "2.6.9",
+                "escape-html": "~1.0.3",
+                "http-errors": "~1.6.2",
+                "mime-types": "~2.1.17",
+                "parseurl": "~1.3.2"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/serve-index/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/serve-index/node_modules/http-errors": {
+            "version": "1.6.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "depd": "~1.1.2",
+                "inherits": "2.0.3",
+                "setprototypeof": "1.1.0",
+                "statuses": ">= 1.4.0 < 2"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/serve-index/node_modules/inherits": {
+            "version": "2.0.3",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/serve-index/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/serve-index/node_modules/setprototypeof": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/serve-static": {
+            "version": "1.14.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "encodeurl": "~1.0.2",
+                "escape-html": "~1.0.3",
+                "parseurl": "~1.3.3",
+                "send": "0.17.1"
+            },
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
+        "node_modules/set-blocking": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/set-value": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "extend-shallow": "^2.0.1",
+                "is-extendable": "^0.1.1",
+                "is-plain-object": "^2.0.3",
+                "split-string": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/set-value/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/setimmediate": {
+            "version": "1.0.5",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/setprototypeof": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/sha.js": {
+            "version": "2.4.11",
+            "dev": true,
+            "license": "(MIT AND BSD-3-Clause)",
+            "dependencies": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            },
+            "bin": {
+                "sha.js": "bin.js"
+            }
+        },
+        "node_modules/shebang-command": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "shebang-regex": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/shebang-regex": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/signal-exit": {
+            "version": "3.0.3",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/slice-ansi": {
+            "version": "0.0.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon": {
+            "version": "0.8.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "base": "^0.11.1",
+                "debug": "^2.2.0",
+                "define-property": "^0.2.5",
+                "extend-shallow": "^2.0.1",
+                "map-cache": "^0.2.2",
+                "source-map": "^0.5.6",
+                "source-map-resolve": "^0.5.0",
+                "use": "^3.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "define-property": "^1.0.0",
+                "isobject": "^3.0.0",
+                "snapdragon-util": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/define-property": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-node/node_modules/is-descriptor": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-accessor-descriptor": "^1.0.0",
+                "is-data-descriptor": "^1.0.0",
+                "kind-of": "^6.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-util": {
+            "version": "3.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^3.2.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon-util/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/debug": {
+            "version": "2.6.9",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "2.0.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/define-property": {
+            "version": "0.2.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/extend-shallow": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extendable": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/snapdragon/node_modules/ms": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/sockjs": {
+            "version": "0.3.21",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "faye-websocket": "^0.11.3",
+                "uuid": "^3.4.0",
+                "websocket-driver": "^0.7.4"
+            }
+        },
+        "node_modules/sockjs-client": {
+            "version": "1.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "debug": "^3.2.6",
+                "eventsource": "^1.0.7",
+                "faye-websocket": "^0.11.3",
+                "inherits": "^2.0.4",
+                "json3": "^3.3.3",
+                "url-parse": "^1.4.7"
+            }
+        },
+        "node_modules/sockjs-client/node_modules/debug": {
+            "version": "3.2.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ms": "^2.1.1"
+            }
+        },
+        "node_modules/source-list-map": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/source-map": {
+            "version": "0.5.7",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/source-map-resolve": {
+            "version": "0.5.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "atob": "^2.1.2",
+                "decode-uri-component": "^0.2.0",
+                "resolve-url": "^0.2.1",
+                "source-map-url": "^0.4.0",
+                "urix": "^0.1.0"
+            }
+        },
+        "node_modules/source-map-support": {
+            "version": "0.5.19",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "buffer-from": "^1.0.0",
+                "source-map": "^0.6.0"
+            }
+        },
+        "node_modules/source-map-support/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/source-map-url": {
+            "version": "0.4.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/spdx-license-list": {
+            "version": "6.4.0",
+            "dev": true,
+            "license": "CC0-1.0",
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/spdy": {
+            "version": "4.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "debug": "^4.1.0",
+                "handle-thing": "^2.0.0",
+                "http-deceiver": "^1.2.7",
+                "select-hose": "^2.0.0",
+                "spdy-transport": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/spdy-transport": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            }
+        },
+        "node_modules/split-string": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "extend-shallow": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/ssri": {
+            "version": "6.0.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "figgy-pudding": "^3.5.1"
+            }
+        },
+        "node_modules/static-extend": {
+            "version": "0.1.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "define-property": "^0.2.5",
+                "object-copy": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/static-extend/node_modules/define-property": {
+            "version": "0.2.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-descriptor": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/statuses": {
+            "version": "1.5.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/stream-browserify": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "~2.0.1",
+                "readable-stream": "^2.0.2"
+            }
+        },
+        "node_modules/stream-browserify/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/stream-browserify/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/stream-each": {
+            "version": "1.2.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "end-of-stream": "^1.1.0",
+                "stream-shift": "^1.0.0"
+            }
+        },
+        "node_modules/stream-http": {
+            "version": "2.8.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "builtin-status-codes": "^3.0.0",
+                "inherits": "^2.0.1",
+                "readable-stream": "^2.3.6",
+                "to-arraybuffer": "^1.0.0",
+                "xtend": "^4.0.0"
+            }
+        },
+        "node_modules/stream-http/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/stream-http/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/stream-shift": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/string_decoder": {
+            "version": "1.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.2.0"
+            }
+        },
+        "node_modules/string_decoder/node_modules/safe-buffer": {
+            "version": "5.2.1",
+            "dev": true,
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "license": "MIT"
+        },
+        "node_modules/string-width": {
+            "version": "4.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/string-width/node_modules/ansi-regex": {
+            "version": "5.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/string-width/node_modules/strip-ansi": {
+            "version": "6.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/string.prototype.trimend": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/string.prototype.trimstart": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/ljharb"
+            }
+        },
+        "node_modules/strip-ansi": {
+            "version": "3.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/strip-eof": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/supports-color": {
+            "version": "5.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/symbol-observable": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/tapable": {
+            "version": "1.1.3",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser": {
+            "version": "4.8.0",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "commander": "^2.20.0",
+                "source-map": "~0.6.1",
+                "source-map-support": "~0.5.12"
+            },
+            "bin": {
+                "terser": "bin/terser"
+            },
+            "engines": {
+                "node": ">=6.0.0"
+            }
+        },
+        "node_modules/terser-webpack-plugin": {
+            "version": "1.4.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cacache": "^12.0.2",
+                "find-cache-dir": "^2.1.0",
+                "is-wsl": "^1.1.0",
+                "schema-utils": "^1.0.0",
+                "serialize-javascript": "^4.0.0",
+                "source-map": "^0.6.1",
+                "terser": "^4.1.2",
+                "webpack-sources": "^1.4.0",
+                "worker-farm": "^1.7.0"
+            },
+            "engines": {
+                "node": ">= 6.9.0"
+            },
+            "peerDependencies": {
+                "webpack": "^4.0.0"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "commondir": "^1.0.1",
+                "make-dir": "^2.0.0",
+                "pkg-dir": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/find-up": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/locate-path": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/make-dir": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "pify": "^4.0.1",
+                "semver": "^5.6.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/p-locate": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/path-exists": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "find-up": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ajv": "^6.1.0",
+                "ajv-errors": "^1.0.0",
+                "ajv-keywords": "^3.1.0"
+            },
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/semver": {
+            "version": "5.7.1",
+            "dev": true,
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver"
+            }
+        },
+        "node_modules/terser-webpack-plugin/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/terser/node_modules/commander": {
+            "version": "2.20.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/terser/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/through": {
+            "version": "2.3.8",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/through2": {
+            "version": "2.0.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            }
+        },
+        "node_modules/through2/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/through2/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/thunky": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/timers-browserify": {
+            "version": "2.0.12",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "setimmediate": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=0.6.0"
+            }
+        },
+        "node_modules/tmp": {
+            "version": "0.0.33",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "os-tmpdir": "~1.0.2"
+            },
+            "engines": {
+                "node": ">=0.6.0"
+            }
+        },
+        "node_modules/to-arraybuffer": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/to-fast-properties": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/to-object-path": {
+            "version": "0.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "kind-of": "^3.0.2"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-object-path/node_modules/kind-of": {
+            "version": "3.2.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-buffer": "^1.1.5"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex": {
+            "version": "3.0.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "define-property": "^2.0.2",
+                "extend-shallow": "^3.0.2",
+                "regex-not": "^1.0.2",
+                "safe-regex": "^1.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/to-regex-range": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-number": "^3.0.0",
+                "repeat-string": "^1.6.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/toidentifier": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.6"
+            }
+        },
+        "node_modules/tslib": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "0BSD"
+        },
+        "node_modules/tty-browserify": {
+            "version": "0.0.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/type-fest": {
+            "version": "0.11.0",
+            "dev": true,
+            "license": "(MIT OR CC0-1.0)",
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
+        "node_modules/type-is": {
+            "version": "1.6.18",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "media-typer": "0.3.0",
+                "mime-types": "~2.1.24"
+            },
+            "engines": {
+                "node": ">= 0.6"
+            }
+        },
+        "node_modules/typedarray": {
+            "version": "0.0.6",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/unicode-canonical-property-names-ecmascript": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-match-property-ecmascript": {
+            "version": "1.0.4",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "unicode-canonical-property-names-ecmascript": "^1.0.4",
+                "unicode-property-aliases-ecmascript": "^1.0.4"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-match-property-value-ecmascript": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/unicode-property-aliases-ecmascript": {
+            "version": "1.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/union-value": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "arr-union": "^3.1.0",
+                "get-value": "^2.0.6",
+                "is-extendable": "^0.1.1",
+                "set-value": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unique-filename": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "unique-slug": "^2.0.0"
+            }
+        },
+        "node_modules/unique-slug": {
+            "version": "2.0.2",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "imurmurhash": "^0.1.4"
+            }
+        },
+        "node_modules/unpipe": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/unset-value": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-value": "^0.3.1",
+                "isobject": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-value": {
+            "version": "0.3.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "get-value": "^2.0.3",
+                "has-values": "^0.1.4",
+                "isobject": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+            "version": "2.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "isarray": "1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/unset-value/node_modules/has-values": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/upath": {
+            "version": "1.2.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4",
+                "yarn": "*"
+            }
+        },
+        "node_modules/uri-js": {
+            "version": "4.4.1",
+            "dev": true,
+            "license": "BSD-2-Clause",
+            "dependencies": {
+                "punycode": "^2.1.0"
+            }
+        },
+        "node_modules/urix": {
+            "version": "0.1.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/url": {
+            "version": "0.11.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "punycode": "1.3.2",
+                "querystring": "0.2.0"
+            }
+        },
+        "node_modules/url-parse": {
+            "version": "1.5.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "querystringify": "^2.1.1",
+                "requires-port": "^1.0.0"
+            }
+        },
+        "node_modules/url/node_modules/punycode": {
+            "version": "1.3.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/use": {
+            "version": "3.1.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/util": {
+            "version": "0.11.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "inherits": "2.0.3"
+            }
+        },
+        "node_modules/util-deprecate": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/util.promisify": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "define-properties": "^1.1.2",
+                "object.getownpropertydescriptors": "^2.0.3"
+            }
+        },
+        "node_modules/util/node_modules/inherits": {
+            "version": "2.0.3",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/utila": {
+            "version": "0.4.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/utils-merge": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.4.0"
+            }
+        },
+        "node_modules/uuid": {
+            "version": "3.4.0",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "uuid": "bin/uuid"
+            }
+        },
+        "node_modules/v8-compile-cache": {
+            "version": "2.2.0",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/vary": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">= 0.8"
+            }
+        },
+        "node_modules/vm-browserify": {
+            "version": "1.1.2",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/watchpack": {
+            "version": "1.7.5",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "graceful-fs": "^4.1.2",
+                "neo-async": "^2.5.0"
+            },
+            "optionalDependencies": {
+                "chokidar": "^3.4.1",
+                "watchpack-chokidar2": "^2.0.1"
+            }
+        },
+        "node_modules/watchpack-chokidar2": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "chokidar": "^2.1.8"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/anymatch": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC",
+            "optional": true,
+            "dependencies": {
+                "micromatch": "^3.1.4",
+                "normalize-path": "^2.1.1"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
+            "version": "1.13.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/chokidar": {
+            "version": "2.1.8",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "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"
+            },
+            "optionalDependencies": {
+                "fsevents": "^1.2.7"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "ISC",
+            "optional": true,
+            "dependencies": {
+                "is-glob": "^3.1.0",
+                "path-dirname": "^1.0.0"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "is-extglob": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "binary-extensions": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/readdirp": {
+            "version": "2.2.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "graceful-fs": "^4.1.11",
+                "micromatch": "^3.1.10",
+                "readable-stream": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/watchpack-chokidar2/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "optional": true,
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/wbuf": {
+            "version": "1.7.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
+        "node_modules/webpack": {
+            "version": "4.46.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-module-context": "1.9.0",
+                "@webassemblyjs/wasm-edit": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0",
+                "acorn": "^6.4.1",
+                "ajv": "^6.10.2",
+                "ajv-keywords": "^3.4.1",
+                "chrome-trace-event": "^1.0.2",
+                "enhanced-resolve": "^4.5.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.3",
+                "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.7.4",
+                "webpack-sources": "^1.4.1"
+            },
+            "bin": {
+                "webpack": "bin/webpack.js"
+            },
+            "engines": {
+                "node": ">=6.11.5"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/webpack"
+            },
+            "peerDependenciesMeta": {
+                "webpack-cli": {
+                    "optional": true
+                },
+                "webpack-command": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/webpack-cli": {
+            "version": "3.3.12",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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"
+            },
+            "bin": {
+                "webpack-cli": "bin/cli.js"
+            },
+            "engines": {
+                "node": ">=6.11.5"
+            },
+            "peerDependencies": {
+                "webpack": "4.x.x"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/chalk": {
+            "version": "2.4.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/chalk/node_modules/supports-color": {
+            "version": "5.5.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/webpack-cli/node_modules/find-up": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/locate-path": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/p-locate": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/path-exists": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/string-width": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/supports-color": {
+            "version": "6.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-cli/node_modules/yargs": {
+            "version": "13.3.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cliui": "^5.0.0",
+                "find-up": "^3.0.0",
+                "get-caller-file": "^2.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^2.0.0",
+                "set-blocking": "^2.0.0",
+                "string-width": "^3.0.0",
+                "which-module": "^2.0.0",
+                "y18n": "^4.0.0",
+                "yargs-parser": "^13.1.2"
+            }
+        },
+        "node_modules/webpack-dev-middleware": {
+            "version": "3.7.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "memory-fs": "^0.4.1",
+                "mime": "^2.4.4",
+                "mkdirp": "^0.5.1",
+                "range-parser": "^1.2.1",
+                "webpack-log": "^2.0.0"
+            },
+            "engines": {
+                "node": ">= 6"
+            },
+            "peerDependencies": {
+                "webpack": "^4.0.0 || ^5.0.0"
+            }
+        },
+        "node_modules/webpack-dev-middleware/node_modules/mime": {
+            "version": "2.5.2",
+            "dev": true,
+            "license": "MIT",
+            "bin": {
+                "mime": "cli.js"
+            },
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
+        "node_modules/webpack-dev-server": {
+            "version": "3.11.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "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.3.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.8",
+                "opn": "^5.5.0",
+                "p-retry": "^3.0.1",
+                "portfinder": "^1.0.26",
+                "schema-utils": "^1.0.0",
+                "selfsigned": "^1.10.8",
+                "semver": "^6.3.0",
+                "serve-index": "^1.9.1",
+                "sockjs": "^0.3.21",
+                "sockjs-client": "^1.5.0",
+                "spdy": "^4.0.2",
+                "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": "^13.3.2"
+            },
+            "bin": {
+                "webpack-dev-server": "bin/webpack-dev-server.js"
+            },
+            "engines": {
+                "node": ">= 6.11.5"
+            },
+            "peerDependencies": {
+                "webpack": "^4.0.0 || ^5.0.0"
+            },
+            "peerDependenciesMeta": {
+                "webpack-cli": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/anymatch": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "micromatch": "^3.1.4",
+                "normalize-path": "^2.1.1"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "remove-trailing-separator": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/binary-extensions": {
+            "version": "1.13.1",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/chokidar": {
+            "version": "2.1.8",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "anymatch": "^2.0.0",
+                "async-each": "^1.0.1",
+                "braces": "^2.3.2",
+                "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"
+            },
+            "optionalDependencies": {
+                "fsevents": "^1.2.7"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/webpack-dev-server/node_modules/find-up": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/glob-parent": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "is-glob": "^3.1.0",
+                "path-dirname": "^1.0.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-extglob": "^2.1.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/is-binary-path": {
+            "version": "1.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "binary-extensions": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/locate-path": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/p-locate": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/path-exists": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/readable-stream": {
+            "version": "2.3.7",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "core-util-is": "~1.0.0",
+                "inherits": "~2.0.3",
+                "isarray": "~1.0.0",
+                "process-nextick-args": "~2.0.0",
+                "safe-buffer": "~5.1.1",
+                "string_decoder": "~1.1.1",
+                "util-deprecate": "~1.0.1"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/readdirp": {
+            "version": "2.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "graceful-fs": "^4.1.11",
+                "micromatch": "^3.1.10",
+                "readable-stream": "^2.0.2"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/schema-utils": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ajv": "^6.1.0",
+                "ajv-errors": "^1.0.0",
+                "ajv-keywords": "^3.1.0"
+            },
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/string_decoder": {
+            "version": "1.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "safe-buffer": "~5.1.0"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/string-width": {
+            "version": "3.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/supports-color": {
+            "version": "6.1.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "has-flag": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/webpack-dev-server/node_modules/yargs": {
+            "version": "13.3.2",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cliui": "^5.0.0",
+                "find-up": "^3.0.0",
+                "get-caller-file": "^2.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^2.0.0",
+                "set-blocking": "^2.0.0",
+                "string-width": "^3.0.0",
+                "which-module": "^2.0.0",
+                "y18n": "^4.0.0",
+                "yargs-parser": "^13.1.2"
+            }
+        },
+        "node_modules/webpack-log": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-colors": "^3.0.0",
+                "uuid": "^3.3.2"
+            },
+            "engines": {
+                "node": ">= 6"
+            }
+        },
+        "node_modules/webpack-sources": {
+            "version": "1.4.3",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "source-list-map": "^2.0.0",
+                "source-map": "~0.6.1"
+            }
+        },
+        "node_modules/webpack-sources/node_modules/source-map": {
+            "version": "0.6.1",
+            "dev": true,
+            "license": "BSD-3-Clause",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/webpack/node_modules/schema-utils": {
+            "version": "1.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ajv": "^6.1.0",
+                "ajv-errors": "^1.0.0",
+                "ajv-keywords": "^3.1.0"
+            },
+            "engines": {
+                "node": ">= 4"
+            }
+        },
+        "node_modules/websocket-driver": {
+            "version": "0.7.4",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "http-parser-js": ">=0.5.1",
+                "safe-buffer": ">=5.1.0",
+                "websocket-extensions": ">=0.1.1"
+            },
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/websocket-extensions": {
+            "version": "0.1.4",
+            "dev": true,
+            "license": "Apache-2.0",
+            "engines": {
+                "node": ">=0.8.0"
+            }
+        },
+        "node_modules/which": {
+            "version": "1.3.1",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "isexe": "^2.0.0"
+            },
+            "bin": {
+                "which": "bin/which"
+            }
+        },
+        "node_modules/which-module": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/worker-farm": {
+            "version": "1.7.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "errno": "~0.1.7"
+            }
+        },
+        "node_modules/wrap-ansi": {
+            "version": "3.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "string-width": "^2.1.1",
+                "strip-ansi": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/ansi-regex": {
+            "version": "3.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/string-width": {
+            "version": "2.1.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^4.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/strip-ansi": {
+            "version": "4.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrappy": {
+            "version": "1.0.2",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/ws": {
+            "version": "6.2.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "async-limiter": "~1.0.0"
+            }
+        },
+        "node_modules/xtend": {
+            "version": "4.0.2",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=0.4"
+            }
+        },
+        "node_modules/y18n": {
+            "version": "4.0.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/yallist": {
+            "version": "3.1.1",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/yargs": {
+            "version": "16.2.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "cliui": "^7.0.2",
+                "escalade": "^3.1.1",
+                "get-caller-file": "^2.0.5",
+                "require-directory": "^2.1.1",
+                "string-width": "^4.2.0",
+                "y18n": "^5.0.5",
+                "yargs-parser": "^20.2.2"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/yargs-parser": {
+            "version": "13.1.2",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "camelcase": "^5.0.0",
+                "decamelize": "^1.2.0"
+            }
+        },
+        "node_modules/yargs/node_modules/ansi-regex": {
+            "version": "5.0.0",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/yargs/node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+            }
+        },
+        "node_modules/yargs/node_modules/cliui": {
+            "version": "7.0.4",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "string-width": "^4.2.0",
+                "strip-ansi": "^6.0.0",
+                "wrap-ansi": "^7.0.0"
+            }
+        },
+        "node_modules/yargs/node_modules/color-convert": {
+            "version": "2.0.1",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "color-name": "~1.1.4"
+            },
+            "engines": {
+                "node": ">=7.0.0"
+            }
+        },
+        "node_modules/yargs/node_modules/color-name": {
+            "version": "1.1.4",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/yargs/node_modules/strip-ansi": {
+            "version": "6.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-regex": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/yargs/node_modules/wrap-ansi": {
+            "version": "7.0.0",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "ansi-styles": "^4.0.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "engines": {
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+            }
+        },
+        "node_modules/yargs/node_modules/y18n": {
+            "version": "5.0.5",
+            "dev": true,
+            "license": "ISC",
+            "engines": {
+                "node": ">=10"
+            }
+        },
+        "node_modules/yargs/node_modules/yargs-parser": {
+            "version": "20.2.6",
+            "dev": true,
+            "license": "ISC",
+            "engines": {
+                "node": ">=10"
+            }
+        }
+    },
+    "dependencies": {
+        "@babel/code-frame": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/highlight": "^7.12.13"
+            }
+        },
+        "@babel/compat-data": {
+            "version": "7.13.8",
+            "dev": true
+        },
+        "@babel/core": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/generator": "^7.13.0",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helpers": "^7.13.0",
+                "@babel/parser": "^7.13.4",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "convert-source-map": "^1.7.0",
+                "debug": "^4.1.0",
+                "gensync": "^1.0.0-beta.2",
+                "json5": "^2.1.2",
+                "lodash": "^4.17.19",
+                "semver": "^6.3.0",
+                "source-map": "^0.5.0"
+            }
+        },
+        "@babel/generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.13.0",
+                "jsesc": "^2.5.1",
+                "source-map": "^0.5.0"
+            }
+        },
+        "@babel/helper-annotate-as-pure": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-builder-binary-assignment-operator-visitor": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-explode-assignable-expression": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-compilation-targets": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-validator-option": "^7.12.17",
+                "browserslist": "^4.14.5",
+                "semver": "^6.3.0"
+            }
+        },
+        "@babel/helper-create-class-features-plugin": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-member-expression-to-functions": "^7.13.0",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-split-export-declaration": "^7.12.13"
+            }
+        },
+        "@babel/helper-create-regexp-features-plugin": {
+            "version": "7.12.17",
+            "dev": true,
+            "requires": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "regexpu-core": "^4.7.1"
+            }
+        },
+        "@babel/helper-define-polyfill-provider": {
+            "version": "0.1.4",
+            "dev": true,
+            "requires": {
+                "@babel/helper-compilation-targets": "^7.13.0",
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/traverse": "^7.13.0",
+                "debug": "^4.1.1",
+                "lodash.debounce": "^4.0.8",
+                "resolve": "^1.14.2",
+                "semver": "^6.1.2"
+            }
+        },
+        "@babel/helper-explode-assignable-expression": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helper-function-name": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-get-function-arity": "^7.12.13",
+                "@babel/template": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-get-function-arity": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-hoist-variables": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helper-member-expression-to-functions": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helper-module-imports": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-module-transforms": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-simple-access": "^7.12.13",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "lodash": "^4.17.19"
+            }
+        },
+        "@babel/helper-optimise-call-expression": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-plugin-utils": {
+            "version": "7.13.0",
+            "dev": true
+        },
+        "@babel/helper-remap-async-to-generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "@babel/helper-wrap-function": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helper-replace-supers": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-member-expression-to-functions": "^7.13.0",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helper-simple-access": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-skip-transparent-expression-wrappers": {
+            "version": "7.12.1",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.1"
+            }
+        },
+        "@babel/helper-split-export-declaration": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/helper-validator-identifier": {
+            "version": "7.12.11",
+            "dev": true
+        },
+        "@babel/helper-validator-option": {
+            "version": "7.12.17",
+            "dev": true
+        },
+        "@babel/helper-wrap-function": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/helpers": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/template": "^7.12.13",
+                "@babel/traverse": "^7.13.0",
+                "@babel/types": "^7.13.0"
+            }
+        },
+        "@babel/highlight": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "chalk": "^2.0.0",
+                "js-tokens": "^4.0.0"
+            },
+            "dependencies": {
+                "chalk": {
+                    "version": "2.4.2",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "^3.2.1",
+                        "escape-string-regexp": "^1.0.5",
+                        "supports-color": "^5.3.0"
+                    }
+                }
+            }
+        },
+        "@babel/parser": {
+            "version": "7.13.4",
+            "dev": true
+        },
+        "@babel/plugin-proposal-async-generator-functions": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-remap-async-to-generator": "^7.13.0",
+                "@babel/plugin-syntax-async-generators": "^7.8.4"
+            }
+        },
+        "@babel/plugin-proposal-class-properties": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-class-features-plugin": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-proposal-dynamic-import": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-export-namespace-from": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-json-strings": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-json-strings": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-logical-assignment-operators": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+            }
+        },
+        "@babel/plugin-proposal-nullish-coalescing-operator": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-numeric-separator": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+            }
+        },
+        "@babel/plugin-proposal-object-rest-spread": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-transform-parameters": "^7.13.0"
+            }
+        },
+        "@babel/plugin-proposal-optional-catch-binding": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-optional-chaining": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+            }
+        },
+        "@babel/plugin-proposal-private-methods": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-class-features-plugin": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-proposal-unicode-property-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-syntax-async-generators": {
+            "version": "7.8.4",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-class-properties": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-syntax-dynamic-import": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-export-namespace-from": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.3"
+            }
+        },
+        "@babel/plugin-syntax-json-strings": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-logical-assignment-operators": {
+            "version": "7.10.4",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            }
+        },
+        "@babel/plugin-syntax-nullish-coalescing-operator": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-numeric-separator": {
+            "version": "7.10.4",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            }
+        },
+        "@babel/plugin-syntax-object-rest-spread": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-optional-catch-binding": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-optional-chaining": {
+            "version": "7.8.3",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.8.0"
+            }
+        },
+        "@babel/plugin-syntax-top-level-await": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-arrow-functions": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-async-to-generator": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-remap-async-to-generator": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-block-scoped-functions": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-block-scoping": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-classes": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-annotate-as-pure": "^7.12.13",
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-optimise-call-expression": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-replace-supers": "^7.13.0",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "globals": "^11.1.0"
+            }
+        },
+        "@babel/plugin-transform-computed-properties": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-destructuring": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-dotall-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-duplicate-keys": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-exponentiation-operator": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-for-of": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-function-name": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-member-expression-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-modules-amd": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            }
+        },
+        "@babel/plugin-transform-modules-commonjs": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-simple-access": "^7.12.13",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            }
+        },
+        "@babel/plugin-transform-modules-systemjs": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-hoist-variables": "^7.13.0",
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "babel-plugin-dynamic-import-node": "^2.3.3"
+            }
+        },
+        "@babel/plugin-transform-modules-umd": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-transforms": "^7.13.0",
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-named-capturing-groups-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-new-target": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-object-super": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13",
+                "@babel/helper-replace-supers": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-parameters": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-property-literals": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-regenerator": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "regenerator-transform": "^0.14.2"
+            }
+        },
+        "@babel/plugin-transform-reserved-words": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-runtime": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/helper-module-imports": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "babel-plugin-polyfill-corejs2": "^0.1.4",
+                "babel-plugin-polyfill-corejs3": "^0.1.3",
+                "babel-plugin-polyfill-regenerator": "^0.1.2",
+                "semver": "^6.3.0"
+            }
+        },
+        "@babel/plugin-transform-shorthand-properties": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-spread": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+            }
+        },
+        "@babel/plugin-transform-sticky-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-template-literals": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.13.0"
+            }
+        },
+        "@babel/plugin-transform-typeof-symbol": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-unicode-escapes": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/plugin-transform-unicode-regex": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/helper-create-regexp-features-plugin": "^7.12.13",
+                "@babel/helper-plugin-utils": "^7.12.13"
+            }
+        },
+        "@babel/preset-env": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "@babel/compat-data": "^7.13.8",
+                "@babel/helper-compilation-targets": "^7.13.8",
+                "@babel/helper-plugin-utils": "^7.13.0",
+                "@babel/helper-validator-option": "^7.12.17",
+                "@babel/plugin-proposal-async-generator-functions": "^7.13.8",
+                "@babel/plugin-proposal-class-properties": "^7.13.0",
+                "@babel/plugin-proposal-dynamic-import": "^7.13.8",
+                "@babel/plugin-proposal-export-namespace-from": "^7.12.13",
+                "@babel/plugin-proposal-json-strings": "^7.13.8",
+                "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
+                "@babel/plugin-proposal-numeric-separator": "^7.12.13",
+                "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
+                "@babel/plugin-proposal-optional-catch-binding": "^7.13.8",
+                "@babel/plugin-proposal-optional-chaining": "^7.13.8",
+                "@babel/plugin-proposal-private-methods": "^7.13.0",
+                "@babel/plugin-proposal-unicode-property-regex": "^7.12.13",
+                "@babel/plugin-syntax-async-generators": "^7.8.4",
+                "@babel/plugin-syntax-class-properties": "^7.12.13",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+                "@babel/plugin-syntax-json-strings": "^7.8.3",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+                "@babel/plugin-syntax-top-level-await": "^7.12.13",
+                "@babel/plugin-transform-arrow-functions": "^7.13.0",
+                "@babel/plugin-transform-async-to-generator": "^7.13.0",
+                "@babel/plugin-transform-block-scoped-functions": "^7.12.13",
+                "@babel/plugin-transform-block-scoping": "^7.12.13",
+                "@babel/plugin-transform-classes": "^7.13.0",
+                "@babel/plugin-transform-computed-properties": "^7.13.0",
+                "@babel/plugin-transform-destructuring": "^7.13.0",
+                "@babel/plugin-transform-dotall-regex": "^7.12.13",
+                "@babel/plugin-transform-duplicate-keys": "^7.12.13",
+                "@babel/plugin-transform-exponentiation-operator": "^7.12.13",
+                "@babel/plugin-transform-for-of": "^7.13.0",
+                "@babel/plugin-transform-function-name": "^7.12.13",
+                "@babel/plugin-transform-literals": "^7.12.13",
+                "@babel/plugin-transform-member-expression-literals": "^7.12.13",
+                "@babel/plugin-transform-modules-amd": "^7.13.0",
+                "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+                "@babel/plugin-transform-modules-systemjs": "^7.13.8",
+                "@babel/plugin-transform-modules-umd": "^7.13.0",
+                "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13",
+                "@babel/plugin-transform-new-target": "^7.12.13",
+                "@babel/plugin-transform-object-super": "^7.12.13",
+                "@babel/plugin-transform-parameters": "^7.13.0",
+                "@babel/plugin-transform-property-literals": "^7.12.13",
+                "@babel/plugin-transform-regenerator": "^7.12.13",
+                "@babel/plugin-transform-reserved-words": "^7.12.13",
+                "@babel/plugin-transform-shorthand-properties": "^7.12.13",
+                "@babel/plugin-transform-spread": "^7.13.0",
+                "@babel/plugin-transform-sticky-regex": "^7.12.13",
+                "@babel/plugin-transform-template-literals": "^7.13.0",
+                "@babel/plugin-transform-typeof-symbol": "^7.12.13",
+                "@babel/plugin-transform-unicode-escapes": "^7.12.13",
+                "@babel/plugin-transform-unicode-regex": "^7.12.13",
+                "@babel/preset-modules": "^0.1.4",
+                "@babel/types": "^7.13.0",
+                "babel-plugin-polyfill-corejs2": "^0.1.4",
+                "babel-plugin-polyfill-corejs3": "^0.1.3",
+                "babel-plugin-polyfill-regenerator": "^0.1.2",
+                "core-js-compat": "^3.9.0",
+                "semver": "^6.3.0"
+            }
+        },
+        "@babel/preset-modules": {
+            "version": "0.1.4",
+            "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/runtime": {
+            "version": "7.13.8",
+            "dev": true,
+            "requires": {
+                "regenerator-runtime": "^0.13.4"
+            }
+        },
+        "@babel/template": {
+            "version": "7.12.13",
+            "dev": true,
+            "requires": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/parser": "^7.12.13",
+                "@babel/types": "^7.12.13"
+            }
+        },
+        "@babel/traverse": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/code-frame": "^7.12.13",
+                "@babel/generator": "^7.13.0",
+                "@babel/helper-function-name": "^7.12.13",
+                "@babel/helper-split-export-declaration": "^7.12.13",
+                "@babel/parser": "^7.13.0",
+                "@babel/types": "^7.13.0",
+                "debug": "^4.1.0",
+                "globals": "^11.1.0",
+                "lodash": "^4.17.19"
+            }
+        },
+        "@babel/types": {
+            "version": "7.13.0",
+            "dev": true,
+            "requires": {
+                "@babel/helper-validator-identifier": "^7.12.11",
+                "lodash": "^4.17.19",
+                "to-fast-properties": "^2.0.0"
+            }
+        },
+        "@samverschueren/stream-to-observable": {
+            "version": "0.3.1",
+            "dev": true,
+            "requires": {
+                "any-observable": "^0.3.0"
+            }
+        },
+        "@types/anymatch": {
+            "version": "1.3.1",
+            "dev": true
+        },
+        "@types/glob": {
+            "version": "7.1.3",
+            "dev": true,
+            "requires": {
+                "@types/minimatch": "*",
+                "@types/node": "*"
+            }
+        },
+        "@types/html-minifier-terser": {
+            "version": "5.1.1",
+            "dev": true
+        },
+        "@types/json-schema": {
+            "version": "7.0.7",
+            "dev": true
+        },
+        "@types/minimatch": {
+            "version": "3.0.3",
+            "dev": true
+        },
+        "@types/node": {
+            "version": "14.14.31",
+            "dev": true
+        },
+        "@types/source-list-map": {
+            "version": "0.1.2",
+            "dev": true
+        },
+        "@types/tapable": {
+            "version": "1.0.6",
+            "dev": true
+        },
+        "@types/uglify-js": {
+            "version": "3.12.0",
+            "dev": true,
+            "requires": {
+                "source-map": "^0.6.1"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "@types/webpack": {
+            "version": "4.41.26",
+            "dev": true,
+            "requires": {
+                "@types/anymatch": "*",
+                "@types/node": "*",
+                "@types/tapable": "*",
+                "@types/uglify-js": "*",
+                "@types/webpack-sources": "*",
+                "source-map": "^0.6.0"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "@types/webpack-sources": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "@types/node": "*",
+                "@types/source-list-map": "*",
+                "source-map": "^0.7.3"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.7.3",
+                    "dev": true
+                }
+            }
+        },
+        "@webassemblyjs/ast": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/helper-module-context": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/wast-parser": "1.9.0"
+            }
+        },
+        "@webassemblyjs/floating-point-hex-parser": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/helper-api-error": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/helper-buffer": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/helper-code-frame": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/wast-printer": "1.9.0"
+            }
+        },
+        "@webassemblyjs/helper-fsm": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/helper-module-context": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0"
+            }
+        },
+        "@webassemblyjs/helper-wasm-bytecode": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/helper-wasm-section": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0"
+            }
+        },
+        "@webassemblyjs/ieee754": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@xtuc/ieee754": "^1.2.0"
+            }
+        },
+        "@webassemblyjs/leb128": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "@webassemblyjs/utf8": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "@webassemblyjs/wasm-edit": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/helper-wasm-section": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0",
+                "@webassemblyjs/wasm-opt": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0",
+                "@webassemblyjs/wast-printer": "1.9.0"
+            }
+        },
+        "@webassemblyjs/wasm-gen": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/ieee754": "1.9.0",
+                "@webassemblyjs/leb128": "1.9.0",
+                "@webassemblyjs/utf8": "1.9.0"
+            }
+        },
+        "@webassemblyjs/wasm-opt": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-buffer": "1.9.0",
+                "@webassemblyjs/wasm-gen": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0"
+            }
+        },
+        "@webassemblyjs/wasm-parser": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-api-error": "1.9.0",
+                "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+                "@webassemblyjs/ieee754": "1.9.0",
+                "@webassemblyjs/leb128": "1.9.0",
+                "@webassemblyjs/utf8": "1.9.0"
+            }
+        },
+        "@webassemblyjs/wast-parser": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+                "@webassemblyjs/helper-api-error": "1.9.0",
+                "@webassemblyjs/helper-code-frame": "1.9.0",
+                "@webassemblyjs/helper-fsm": "1.9.0",
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "@webassemblyjs/wast-printer": {
+            "version": "1.9.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/wast-parser": "1.9.0",
+                "@xtuc/long": "4.2.2"
+            }
+        },
+        "@xtuc/ieee754": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "@xtuc/long": {
+            "version": "4.2.2",
+            "dev": true
+        },
+        "accepts": {
+            "version": "1.3.7",
+            "dev": true,
+            "requires": {
+                "mime-types": "~2.1.24",
+                "negotiator": "0.6.2"
+            }
+        },
+        "acorn": {
+            "version": "6.4.2",
+            "dev": true
+        },
+        "ajv": {
+            "version": "6.12.6",
+            "dev": true,
+            "requires": {
+                "fast-deep-equal": "^3.1.1",
+                "fast-json-stable-stringify": "^2.0.0",
+                "json-schema-traverse": "^0.4.1",
+                "uri-js": "^4.2.2"
+            }
+        },
+        "ajv-errors": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {}
+        },
+        "ajv-keywords": {
+            "version": "3.5.2",
+            "dev": true,
+            "requires": {}
+        },
+        "ansi-colors": {
+            "version": "3.2.4",
+            "dev": true
+        },
+        "ansi-escapes": {
+            "version": "4.3.1",
+            "dev": true,
+            "requires": {
+                "type-fest": "^0.11.0"
+            }
+        },
+        "ansi-html": {
+            "version": "0.0.7",
+            "dev": true
+        },
+        "ansi-regex": {
+            "version": "2.1.1",
+            "dev": true
+        },
+        "ansi-styles": {
+            "version": "3.2.1",
+            "dev": true,
+            "requires": {
+                "color-convert": "^1.9.0"
+            }
+        },
+        "any-observable": {
+            "version": "0.3.0",
+            "dev": true
+        },
+        "anymatch": {
+            "version": "3.1.1",
+            "dev": true,
+            "requires": {
+                "normalize-path": "^3.0.0",
+                "picomatch": "^2.0.4"
+            }
+        },
+        "aproba": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "arr-diff": {
+            "version": "4.0.0",
+            "dev": true
+        },
+        "arr-flatten": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "arr-union": {
+            "version": "3.1.0",
+            "dev": true
+        },
+        "array-flatten": {
+            "version": "2.1.2",
+            "dev": true
+        },
+        "array-union": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "array-uniq": "^1.0.1"
+            }
+        },
+        "array-uniq": {
+            "version": "1.0.3",
+            "dev": true
+        },
+        "array-unique": {
+            "version": "0.3.2",
+            "dev": true
+        },
+        "asn1.js": {
+            "version": "5.4.1",
+            "dev": true,
+            "requires": {
+                "bn.js": "^4.0.0",
+                "inherits": "^2.0.1",
+                "minimalistic-assert": "^1.0.0",
+                "safer-buffer": "^2.1.0"
+            },
+            "dependencies": {
+                "bn.js": {
+                    "version": "4.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "assert": {
+            "version": "1.5.0",
+            "dev": true,
+            "requires": {
+                "object-assign": "^4.1.1",
+                "util": "0.10.3"
+            },
+            "dependencies": {
+                "inherits": {
+                    "version": "2.0.1",
+                    "dev": true
+                },
+                "util": {
+                    "version": "0.10.3",
+                    "dev": true,
+                    "requires": {
+                        "inherits": "2.0.1"
+                    }
+                }
+            }
+        },
+        "assign-symbols": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "async": {
+            "version": "2.6.3",
+            "dev": true,
+            "requires": {
+                "lodash": "^4.17.14"
+            }
+        },
+        "async-each": {
+            "version": "1.0.3",
+            "dev": true
+        },
+        "async-limiter": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "atob": {
+            "version": "2.1.2",
+            "dev": true
+        },
+        "babel-loader": {
+            "version": "8.2.2",
+            "dev": true,
+            "requires": {
+                "find-cache-dir": "^3.3.1",
+                "loader-utils": "^1.4.0",
+                "make-dir": "^3.1.0",
+                "schema-utils": "^2.6.5"
+            }
+        },
+        "babel-plugin-dynamic-import-node": {
+            "version": "2.3.3",
+            "dev": true,
+            "requires": {
+                "object.assign": "^4.1.0"
+            }
+        },
+        "babel-plugin-polyfill-corejs2": {
+            "version": "0.1.8",
+            "dev": true,
+            "requires": {
+                "@babel/compat-data": "^7.13.0",
+                "@babel/helper-define-polyfill-provider": "^0.1.4",
+                "semver": "^6.1.1"
+            }
+        },
+        "babel-plugin-polyfill-corejs3": {
+            "version": "0.1.6",
+            "dev": true,
+            "requires": {
+                "@babel/helper-define-polyfill-provider": "^0.1.4",
+                "core-js-compat": "^3.8.1"
+            }
+        },
+        "babel-plugin-polyfill-regenerator": {
+            "version": "0.1.5",
+            "dev": true,
+            "requires": {
+                "@babel/helper-define-polyfill-provider": "^0.1.4"
+            }
+        },
+        "balanced-match": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "base": {
+            "version": "0.11.2",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^1.0.0"
+                    }
+                },
+                "is-accessor-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-data-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-descriptor": {
+                    "version": "1.0.2",
+                    "dev": true,
+                    "requires": {
+                        "is-accessor-descriptor": "^1.0.0",
+                        "is-data-descriptor": "^1.0.0",
+                        "kind-of": "^6.0.2"
+                    }
+                }
+            }
+        },
+        "base64-js": {
+            "version": "1.5.1",
+            "dev": true
+        },
+        "batch": {
+            "version": "0.6.1",
+            "dev": true
+        },
+        "big.js": {
+            "version": "5.2.2",
+            "dev": true
+        },
+        "binary-extensions": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "bluebird": {
+            "version": "3.7.2",
+            "dev": true
+        },
+        "bn.js": {
+            "version": "5.2.0",
+            "dev": true
+        },
+        "body-parser": {
+            "version": "1.19.0",
+            "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",
+                    "dev": true
+                },
+                "debug": {
+                    "version": "2.6.9",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "bonjour": {
+            "version": "3.5.0",
+            "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",
+            "dev": true
+        },
+        "brace-expansion": {
+            "version": "1.1.11",
+            "dev": true,
+            "requires": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+            }
+        },
+        "braces": {
+            "version": "2.3.2",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                }
+            }
+        },
+        "brorand": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "browserify-aes": {
+            "version": "1.2.0",
+            "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",
+            "dev": true,
+            "requires": {
+                "browserify-aes": "^1.0.4",
+                "browserify-des": "^1.0.0",
+                "evp_bytestokey": "^1.0.0"
+            }
+        },
+        "browserify-des": {
+            "version": "1.0.2",
+            "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.1.0",
+            "dev": true,
+            "requires": {
+                "bn.js": "^5.0.0",
+                "randombytes": "^2.0.1"
+            }
+        },
+        "browserify-sign": {
+            "version": "4.2.1",
+            "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.3",
+                "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",
+                    "dev": true
+                }
+            }
+        },
+        "browserify-zlib": {
+            "version": "0.2.0",
+            "dev": true,
+            "requires": {
+                "pako": "~1.0.5"
+            }
+        },
+        "browserslist": {
+            "version": "4.16.3",
+            "dev": true,
+            "requires": {
+                "caniuse-lite": "^1.0.30001181",
+                "colorette": "^1.2.1",
+                "electron-to-chromium": "^1.3.649",
+                "escalade": "^3.1.1",
+                "node-releases": "^1.1.70"
+            }
+        },
+        "buffer": {
+            "version": "4.9.2",
+            "dev": true,
+            "requires": {
+                "base64-js": "^1.0.2",
+                "ieee754": "^1.1.4",
+                "isarray": "^1.0.0"
+            }
+        },
+        "buffer-from": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "buffer-indexof": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "buffer-xor": {
+            "version": "1.0.3",
+            "dev": true
+        },
+        "builtin-status-codes": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "bytes": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "cacache": {
+            "version": "12.0.4",
+            "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"
+            }
+        },
+        "cache-base": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "collection-visit": "^1.0.0",
+                "component-emitter": "^1.2.1",
+                "get-value": "^2.0.6",
+                "has-value": "^1.0.0",
+                "isobject": "^3.0.1",
+                "set-value": "^2.0.0",
+                "to-object-path": "^0.3.0",
+                "union-value": "^1.0.0",
+                "unset-value": "^1.0.0"
+            }
+        },
+        "call-bind": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "function-bind": "^1.1.1",
+                "get-intrinsic": "^1.0.2"
+            }
+        },
+        "camel-case": {
+            "version": "4.1.2",
+            "dev": true,
+            "requires": {
+                "pascal-case": "^3.1.2",
+                "tslib": "^2.0.3"
+            }
+        },
+        "camelcase": {
+            "version": "5.3.1",
+            "dev": true
+        },
+        "caniuse-lite": {
+            "version": "1.0.30001192",
+            "dev": true
+        },
+        "chalk": {
+            "version": "4.1.0",
+            "dev": true,
+            "requires": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+            },
+            "dependencies": {
+                "ansi-styles": {
+                    "version": "4.3.0",
+                    "dev": true,
+                    "requires": {
+                        "color-convert": "^2.0.1"
+                    }
+                },
+                "color-convert": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "color-name": "~1.1.4"
+                    }
+                },
+                "color-name": {
+                    "version": "1.1.4",
+                    "dev": true
+                },
+                "has-flag": {
+                    "version": "4.0.0",
+                    "dev": true
+                },
+                "supports-color": {
+                    "version": "7.2.0",
+                    "dev": true,
+                    "requires": {
+                        "has-flag": "^4.0.0"
+                    }
+                }
+            }
+        },
+        "chardet": {
+            "version": "0.7.0",
+            "dev": true
+        },
+        "chokidar": {
+            "version": "3.5.1",
+            "dev": true,
+            "requires": {
+                "anymatch": "~3.1.1",
+                "braces": "~3.0.2",
+                "fsevents": "~2.3.1",
+                "glob-parent": "~5.1.0",
+                "is-binary-path": "~2.1.0",
+                "is-glob": "~4.0.1",
+                "normalize-path": "~3.0.0",
+                "readdirp": "~3.5.0"
+            },
+            "dependencies": {
+                "braces": {
+                    "version": "3.0.2",
+                    "dev": true,
+                    "requires": {
+                        "fill-range": "^7.0.1"
+                    }
+                },
+                "fill-range": {
+                    "version": "7.0.1",
+                    "dev": true,
+                    "requires": {
+                        "to-regex-range": "^5.0.1"
+                    }
+                },
+                "is-number": {
+                    "version": "7.0.0",
+                    "dev": true
+                },
+                "to-regex-range": {
+                    "version": "5.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-number": "^7.0.0"
+                    }
+                }
+            }
+        },
+        "chownr": {
+            "version": "1.1.4",
+            "dev": true
+        },
+        "chrome-trace-event": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "tslib": "^1.9.0"
+            },
+            "dependencies": {
+                "tslib": {
+                    "version": "1.14.1",
+                    "dev": true
+                }
+            }
+        },
+        "cipher-base": {
+            "version": "1.0.4",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "class-utils": {
+            "version": "0.3.6",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^0.1.0"
+                    }
+                }
+            }
+        },
+        "clean-css": {
+            "version": "4.2.3",
+            "dev": true,
+            "requires": {
+                "source-map": "~0.6.0"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "cli-cursor": {
+            "version": "3.1.0",
+            "dev": true,
+            "requires": {
+                "restore-cursor": "^3.1.0"
+            }
+        },
+        "cli-truncate": {
+            "version": "0.2.1",
+            "dev": true,
+            "requires": {
+                "slice-ansi": "0.0.4",
+                "string-width": "^1.0.1"
+            },
+            "dependencies": {
+                "is-fullwidth-code-point": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "number-is-nan": "^1.0.0"
+                    }
+                },
+                "string-width": {
+                    "version": "1.0.2",
+                    "dev": true,
+                    "requires": {
+                        "code-point-at": "^1.0.0",
+                        "is-fullwidth-code-point": "^1.0.0",
+                        "strip-ansi": "^3.0.0"
+                    }
+                }
+            }
+        },
+        "cli-width": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "cliui": {
+            "version": "5.0.0",
+            "dev": true,
+            "requires": {
+                "string-width": "^3.1.0",
+                "strip-ansi": "^5.2.0",
+                "wrap-ansi": "^5.1.0"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "dev": true
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "dev": true
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "dev": true
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "dev": true,
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "5.2.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^4.1.0"
+                    }
+                },
+                "wrap-ansi": {
+                    "version": "5.1.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "^3.2.0",
+                        "string-width": "^3.0.0",
+                        "strip-ansi": "^5.0.0"
+                    }
+                }
+            }
+        },
+        "code-point-at": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "collection-visit": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "map-visit": "^1.0.0",
+                "object-visit": "^1.0.0"
+            }
+        },
+        "color-convert": {
+            "version": "1.9.3",
+            "dev": true,
+            "requires": {
+                "color-name": "1.1.3"
+            }
+        },
+        "color-name": {
+            "version": "1.1.3",
+            "dev": true
+        },
+        "colorette": {
+            "version": "1.2.2",
+            "dev": true
+        },
+        "commander": {
+            "version": "4.1.1",
+            "dev": true
+        },
+        "commondir": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "component-emitter": {
+            "version": "1.3.0",
+            "dev": true
+        },
+        "compressible": {
+            "version": "2.0.18",
+            "dev": true,
+            "requires": {
+                "mime-db": ">= 1.43.0 < 2"
+            }
+        },
+        "compression": {
+            "version": "1.7.4",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "concat-map": {
+            "version": "0.0.1",
+            "dev": true
+        },
+        "concat-stream": {
+            "version": "1.6.2",
+            "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",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "connect-history-api-fallback": {
+            "version": "1.6.0",
+            "dev": true
+        },
+        "console-browserify": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "constants-browserify": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "content-disposition": {
+            "version": "0.5.3",
+            "dev": true,
+            "requires": {
+                "safe-buffer": "5.1.2"
+            }
+        },
+        "content-type": {
+            "version": "1.0.4",
+            "dev": true
+        },
+        "convert-source-map": {
+            "version": "1.7.0",
+            "dev": true,
+            "requires": {
+                "safe-buffer": "~5.1.1"
+            }
+        },
+        "cookie": {
+            "version": "0.4.0",
+            "dev": true
+        },
+        "cookie-signature": {
+            "version": "1.0.6",
+            "dev": true
+        },
+        "copy-concurrently": {
+            "version": "1.0.5",
+            "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",
+            "dev": true
+        },
+        "core-js": {
+            "version": "3.9.0",
+            "dev": true
+        },
+        "core-js-compat": {
+            "version": "3.9.0",
+            "dev": true,
+            "requires": {
+                "browserslist": "^4.16.3",
+                "semver": "7.0.0"
+            },
+            "dependencies": {
+                "semver": {
+                    "version": "7.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "core-util-is": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "create-ecdh": {
+            "version": "4.0.4",
+            "dev": true,
+            "requires": {
+                "bn.js": "^4.1.0",
+                "elliptic": "^6.5.3"
+            },
+            "dependencies": {
+                "bn.js": {
+                    "version": "4.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "create-hash": {
+            "version": "1.2.0",
+            "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",
+            "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-spawn": {
+            "version": "6.0.5",
+            "dev": true,
+            "requires": {
+                "nice-try": "^1.0.4",
+                "path-key": "^2.0.1",
+                "semver": "^5.5.0",
+                "shebang-command": "^1.2.0",
+                "which": "^1.2.9"
+            },
+            "dependencies": {
+                "semver": {
+                    "version": "5.7.1",
+                    "dev": true
+                }
+            }
+        },
+        "crypto-browserify": {
+            "version": "3.12.0",
+            "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-select": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "boolbase": "^1.0.0",
+                "css-what": "^3.2.1",
+                "domutils": "^1.7.0",
+                "nth-check": "^1.0.2"
+            }
+        },
+        "css-what": {
+            "version": "3.4.2",
+            "dev": true
+        },
+        "cyclist": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "date-fns": {
+            "version": "1.30.1",
+            "dev": true
+        },
+        "debug": {
+            "version": "4.3.1",
+            "dev": true,
+            "requires": {
+                "ms": "2.1.2"
+            }
+        },
+        "decamelize": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "decode-uri-component": {
+            "version": "0.2.0",
+            "dev": true
+        },
+        "deep-equal": {
+            "version": "1.1.1",
+            "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"
+            }
+        },
+        "default-gateway": {
+            "version": "4.2.0",
+            "dev": true,
+            "requires": {
+                "execa": "^1.0.0",
+                "ip-regex": "^2.1.0"
+            }
+        },
+        "define-properties": {
+            "version": "1.1.3",
+            "dev": true,
+            "requires": {
+                "object-keys": "^1.0.12"
+            }
+        },
+        "define-property": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "is-descriptor": "^1.0.2",
+                "isobject": "^3.0.1"
+            },
+            "dependencies": {
+                "is-accessor-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-data-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-descriptor": {
+                    "version": "1.0.2",
+                    "dev": true,
+                    "requires": {
+                        "is-accessor-descriptor": "^1.0.0",
+                        "is-data-descriptor": "^1.0.0",
+                        "kind-of": "^6.0.2"
+                    }
+                }
+            }
+        },
+        "del": {
+            "version": "4.1.1",
+            "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"
+            }
+        },
+        "depd": {
+            "version": "1.1.2",
+            "dev": true
+        },
+        "des.js": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.1",
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
+        "destroy": {
+            "version": "1.0.4",
+            "dev": true
+        },
+        "detect-file": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "detect-node": {
+            "version": "2.0.4",
+            "dev": true
+        },
+        "diffie-hellman": {
+            "version": "5.0.3",
+            "dev": true,
+            "requires": {
+                "bn.js": "^4.1.0",
+                "miller-rabin": "^4.0.0",
+                "randombytes": "^2.0.0"
+            },
+            "dependencies": {
+                "bn.js": {
+                    "version": "4.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "dns-equal": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "dns-packet": {
+            "version": "1.3.1",
+            "dev": true,
+            "requires": {
+                "ip": "^1.1.0",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "dns-txt": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "buffer-indexof": "^1.0.0"
+            }
+        },
+        "dom-converter": {
+            "version": "0.2.0",
+            "dev": true,
+            "requires": {
+                "utila": "~0.4"
+            }
+        },
+        "dom-serializer": {
+            "version": "0.2.2",
+            "dev": true,
+            "requires": {
+                "domelementtype": "^2.0.1",
+                "entities": "^2.0.0"
+            },
+            "dependencies": {
+                "domelementtype": {
+                    "version": "2.1.0",
+                    "dev": true
+                }
+            }
+        },
+        "dom-to-image": {
+            "version": "2.6.0"
+        },
+        "domain-browser": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "domelementtype": {
+            "version": "1.3.1",
+            "dev": true
+        },
+        "domhandler": {
+            "version": "2.4.2",
+            "dev": true,
+            "requires": {
+                "domelementtype": "1"
+            }
+        },
+        "domutils": {
+            "version": "1.7.0",
+            "dev": true,
+            "requires": {
+                "dom-serializer": "0",
+                "domelementtype": "1"
+            }
+        },
+        "dot-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "requires": {
+                "no-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "duplexify": {
+            "version": "3.7.1",
+            "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",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "ee-first": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "electron-to-chromium": {
+            "version": "1.3.675",
+            "dev": true
+        },
+        "elegant-spinner": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "elliptic": {
+            "version": "6.5.4",
+            "dev": true,
+            "requires": {
+                "bn.js": "^4.11.9",
+                "brorand": "^1.1.0",
+                "hash.js": "^1.0.0",
+                "hmac-drbg": "^1.0.1",
+                "inherits": "^2.0.4",
+                "minimalistic-assert": "^1.0.1",
+                "minimalistic-crypto-utils": "^1.0.1"
+            },
+            "dependencies": {
+                "bn.js": {
+                    "version": "4.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "emoji-regex": {
+            "version": "8.0.0",
+            "dev": true
+        },
+        "emojis-list": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "encodeurl": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "end-of-stream": {
+            "version": "1.4.4",
+            "dev": true,
+            "requires": {
+                "once": "^1.4.0"
+            }
+        },
+        "enhanced-resolve": {
+            "version": "4.5.0",
+            "dev": true,
+            "requires": {
+                "graceful-fs": "^4.1.2",
+                "memory-fs": "^0.5.0",
+                "tapable": "^1.0.0"
+            },
+            "dependencies": {
+                "memory-fs": {
+                    "version": "0.5.0",
+                    "dev": true,
+                    "requires": {
+                        "errno": "^0.1.3",
+                        "readable-stream": "^2.0.1"
+                    }
+                },
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "entities": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "errno": {
+            "version": "0.1.8",
+            "dev": true,
+            "requires": {
+                "prr": "~1.0.1"
+            }
+        },
+        "es-abstract": {
+            "version": "1.18.0-next.2",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "es-to-primitive": "^1.2.1",
+                "function-bind": "^1.1.1",
+                "get-intrinsic": "^1.0.2",
+                "has": "^1.0.3",
+                "has-symbols": "^1.0.1",
+                "is-callable": "^1.2.2",
+                "is-negative-zero": "^2.0.1",
+                "is-regex": "^1.1.1",
+                "object-inspect": "^1.9.0",
+                "object-keys": "^1.1.1",
+                "object.assign": "^4.1.2",
+                "string.prototype.trimend": "^1.0.3",
+                "string.prototype.trimstart": "^1.0.3"
+            }
+        },
+        "es-to-primitive": {
+            "version": "1.2.1",
+            "dev": true,
+            "requires": {
+                "is-callable": "^1.1.4",
+                "is-date-object": "^1.0.1",
+                "is-symbol": "^1.0.2"
+            }
+        },
+        "escalade": {
+            "version": "3.1.1",
+            "dev": true
+        },
+        "escape-html": {
+            "version": "1.0.3",
+            "dev": true
+        },
+        "escape-string-regexp": {
+            "version": "1.0.5",
+            "dev": true
+        },
+        "eslint-scope": {
+            "version": "4.0.3",
+            "dev": true,
+            "requires": {
+                "esrecurse": "^4.1.0",
+                "estraverse": "^4.1.1"
+            }
+        },
+        "esm": {
+            "version": "3.2.25",
+            "dev": true
+        },
+        "esrecurse": {
+            "version": "4.3.0",
+            "dev": true,
+            "requires": {
+                "estraverse": "^5.2.0"
+            },
+            "dependencies": {
+                "estraverse": {
+                    "version": "5.2.0",
+                    "dev": true
+                }
+            }
+        },
+        "estraverse": {
+            "version": "4.3.0",
+            "dev": true
+        },
+        "esutils": {
+            "version": "2.0.3",
+            "dev": true
+        },
+        "etag": {
+            "version": "1.8.1",
+            "dev": true
+        },
+        "eventemitter3": {
+            "version": "4.0.7",
+            "dev": true
+        },
+        "events": {
+            "version": "3.3.0",
+            "dev": true
+        },
+        "eventsource": {
+            "version": "1.0.7",
+            "dev": true,
+            "requires": {
+                "original": "^1.0.0"
+            }
+        },
+        "evp_bytestokey": {
+            "version": "1.0.3",
+            "dev": true,
+            "requires": {
+                "md5.js": "^1.3.4",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "execa": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "cross-spawn": "^6.0.0",
+                "get-stream": "^4.0.0",
+                "is-stream": "^1.1.0",
+                "npm-run-path": "^2.0.0",
+                "p-finally": "^1.0.0",
+                "signal-exit": "^3.0.0",
+                "strip-eof": "^1.0.0"
+            }
+        },
+        "expand-brackets": {
+            "version": "2.1.4",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "define-property": {
+                    "version": "0.2.5",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^0.1.0"
+                    }
+                },
+                "extend-shallow": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "expand-tilde": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "homedir-polyfill": "^1.0.1"
+            }
+        },
+        "express": {
+            "version": "4.17.1",
+            "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",
+                    "dev": true
+                },
+                "debug": {
+                    "version": "2.6.9",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "extend-shallow": {
+            "version": "3.0.2",
+            "dev": true,
+            "requires": {
+                "assign-symbols": "^1.0.0",
+                "is-extendable": "^1.0.1"
+            },
+            "dependencies": {
+                "is-extendable": {
+                    "version": "1.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-plain-object": "^2.0.4"
+                    }
+                }
+            }
+        },
+        "external-editor": {
+            "version": "3.1.0",
+            "dev": true,
+            "requires": {
+                "chardet": "^0.7.0",
+                "iconv-lite": "^0.4.24",
+                "tmp": "^0.0.33"
+            }
+        },
+        "extglob": {
+            "version": "2.0.4",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^1.0.0"
+                    }
+                },
+                "extend-shallow": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                },
+                "is-accessor-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-data-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-descriptor": {
+                    "version": "1.0.2",
+                    "dev": true,
+                    "requires": {
+                        "is-accessor-descriptor": "^1.0.0",
+                        "is-data-descriptor": "^1.0.0",
+                        "kind-of": "^6.0.2"
+                    }
+                }
+            }
+        },
+        "fast-deep-equal": {
+            "version": "3.1.3",
+            "dev": true
+        },
+        "fast-json-stable-stringify": {
+            "version": "2.1.0",
+            "dev": true
+        },
+        "faye-websocket": {
+            "version": "0.11.3",
+            "dev": true,
+            "requires": {
+                "websocket-driver": ">=0.5.1"
+            }
+        },
+        "figgy-pudding": {
+            "version": "3.5.2",
+            "dev": true
+        },
+        "figures": {
+            "version": "3.2.0",
+            "dev": true,
+            "requires": {
+                "escape-string-regexp": "^1.0.5"
+            }
+        },
+        "fill-range": {
+            "version": "4.0.0",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                }
+            }
+        },
+        "finalhandler": {
+            "version": "1.1.2",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "find-cache-dir": {
+            "version": "3.3.1",
+            "dev": true,
+            "requires": {
+                "commondir": "^1.0.1",
+                "make-dir": "^3.0.2",
+                "pkg-dir": "^4.1.0"
+            }
+        },
+        "find-up": {
+            "version": "4.1.0",
+            "dev": true,
+            "requires": {
+                "locate-path": "^5.0.0",
+                "path-exists": "^4.0.0"
+            }
+        },
+        "findup-sync": {
+            "version": "3.0.0",
+            "dev": true,
+            "requires": {
+                "detect-file": "^1.0.0",
+                "is-glob": "^4.0.0",
+                "micromatch": "^3.0.4",
+                "resolve-dir": "^1.0.1"
+            }
+        },
+        "flush-write-stream": {
+            "version": "1.1.1",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.3",
+                "readable-stream": "^2.3.6"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "follow-redirects": {
+            "version": "1.13.3",
+            "dev": true
+        },
+        "for-in": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "forwarded": {
+            "version": "0.1.2",
+            "dev": true
+        },
+        "fragment-cache": {
+            "version": "0.2.1",
+            "dev": true,
+            "requires": {
+                "map-cache": "^0.2.2"
+            }
+        },
+        "fresh": {
+            "version": "0.5.2",
+            "dev": true
+        },
+        "from2": {
+            "version": "2.3.0",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.1",
+                "readable-stream": "^2.0.0"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "fs-write-stream-atomic": {
+            "version": "1.0.10",
+            "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",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "fs.realpath": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "function-bind": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "gensync": {
+            "version": "1.0.0-beta.2",
+            "dev": true
+        },
+        "get-caller-file": {
+            "version": "2.0.5",
+            "dev": true
+        },
+        "get-intrinsic": {
+            "version": "1.1.1",
+            "dev": true,
+            "requires": {
+                "function-bind": "^1.1.1",
+                "has": "^1.0.3",
+                "has-symbols": "^1.0.1"
+            }
+        },
+        "get-stream": {
+            "version": "4.1.0",
+            "dev": true,
+            "requires": {
+                "pump": "^3.0.0"
+            }
+        },
+        "get-value": {
+            "version": "2.0.6",
+            "dev": true
+        },
+        "glob": {
+            "version": "7.1.6",
+            "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",
+            "dev": true,
+            "requires": {
+                "is-glob": "^4.0.1"
+            }
+        },
+        "global-modules": {
+            "version": "2.0.0",
+            "dev": true,
+            "requires": {
+                "global-prefix": "^3.0.0"
+            },
+            "dependencies": {
+                "global-prefix": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ini": "^1.3.5",
+                        "kind-of": "^6.0.2",
+                        "which": "^1.3.1"
+                    }
+                }
+            }
+        },
+        "global-prefix": {
+            "version": "1.0.2",
+            "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"
+            }
+        },
+        "globals": {
+            "version": "11.12.0",
+            "dev": true
+        },
+        "globby": {
+            "version": "6.1.0",
+            "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",
+                    "dev": true
+                }
+            }
+        },
+        "graceful-fs": {
+            "version": "4.2.6",
+            "dev": true
+        },
+        "grapesjs-cli": {
+            "version": "1.0.14",
+            "dev": true,
+            "requires": {
+                "@babel/core": "^7.12.10",
+                "@babel/plugin-transform-runtime": "^7.12.10",
+                "@babel/preset-env": "^7.12.11",
+                "@babel/runtime": "^7.12.5",
+                "babel-loader": "^8.2.2",
+                "chalk": "^4.1.0",
+                "core-js": "^3.8.2",
+                "esm": "^3.2.25",
+                "html-webpack-plugin": "^4.5.1",
+                "inquirer": "^7.3.3",
+                "listr": "^0.14.3",
+                "lodash.template": "^4.5.0",
+                "spdx-license-list": "^6.3.0",
+                "webpack": "^4.44.2",
+                "webpack-cli": "^3.3.12",
+                "webpack-dev-server": "^3.11.1",
+                "yargs": "^16.2.0"
+            }
+        },
+        "handle-thing": {
+            "version": "2.0.1",
+            "dev": true
+        },
+        "has": {
+            "version": "1.0.3",
+            "dev": true,
+            "requires": {
+                "function-bind": "^1.1.1"
+            }
+        },
+        "has-ansi": {
+            "version": "2.0.0",
+            "dev": true,
+            "requires": {
+                "ansi-regex": "^2.0.0"
+            }
+        },
+        "has-flag": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "has-symbols": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "has-value": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "get-value": "^2.0.6",
+                "has-values": "^1.0.0",
+                "isobject": "^3.0.0"
+            }
+        },
+        "has-values": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "is-number": "^3.0.0",
+                "kind-of": "^4.0.0"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "4.0.0",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "hash-base": {
+            "version": "3.1.0",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.4",
+                "readable-stream": "^3.6.0",
+                "safe-buffer": "^5.2.0"
+            },
+            "dependencies": {
+                "safe-buffer": {
+                    "version": "5.2.1",
+                    "dev": true
+                }
+            }
+        },
+        "hash.js": {
+            "version": "1.1.7",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.3",
+                "minimalistic-assert": "^1.0.1"
+            }
+        },
+        "he": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "hmac-drbg": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "hash.js": "^1.0.3",
+                "minimalistic-assert": "^1.0.0",
+                "minimalistic-crypto-utils": "^1.0.1"
+            }
+        },
+        "homedir-polyfill": {
+            "version": "1.0.3",
+            "dev": true,
+            "requires": {
+                "parse-passwd": "^1.0.0"
+            }
+        },
+        "hpack.js": {
+            "version": "2.1.6",
+            "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",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "html-entities": {
+            "version": "1.4.0",
+            "dev": true
+        },
+        "html-minifier-terser": {
+            "version": "5.1.1",
+            "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"
+            }
+        },
+        "html-webpack-plugin": {
+            "version": "4.5.2",
+            "dev": true,
+            "requires": {
+                "@types/html-minifier-terser": "^5.0.0",
+                "@types/tapable": "^1.0.5",
+                "@types/webpack": "^4.41.8",
+                "html-minifier-terser": "^5.0.1",
+                "loader-utils": "^1.2.3",
+                "lodash": "^4.17.20",
+                "pretty-error": "^2.1.1",
+                "tapable": "^1.1.3",
+                "util.promisify": "1.0.0"
+            }
+        },
+        "htmlparser2": {
+            "version": "3.10.1",
+            "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",
+                    "dev": true
+                }
+            }
+        },
+        "http-deceiver": {
+            "version": "1.2.7",
+            "dev": true
+        },
+        "http-errors": {
+            "version": "1.7.2",
+            "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",
+                    "dev": true
+                }
+            }
+        },
+        "http-parser-js": {
+            "version": "0.5.3",
+            "dev": true
+        },
+        "http-proxy": {
+            "version": "1.18.1",
+            "dev": true,
+            "requires": {
+                "eventemitter3": "^4.0.0",
+                "follow-redirects": "^1.0.0",
+                "requires-port": "^1.0.0"
+            }
+        },
+        "http-proxy-middleware": {
+            "version": "0.19.1",
+            "dev": true,
+            "requires": {
+                "http-proxy": "^1.17.0",
+                "is-glob": "^4.0.0",
+                "lodash": "^4.17.11",
+                "micromatch": "^3.1.10"
+            }
+        },
+        "https-browserify": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "iconv-lite": {
+            "version": "0.4.24",
+            "dev": true,
+            "requires": {
+                "safer-buffer": ">= 2.1.2 < 3"
+            }
+        },
+        "ieee754": {
+            "version": "1.2.1",
+            "dev": true
+        },
+        "iferr": {
+            "version": "0.1.5",
+            "dev": true
+        },
+        "import-local": {
+            "version": "2.0.0",
+            "dev": true,
+            "requires": {
+                "pkg-dir": "^3.0.0",
+                "resolve-cwd": "^2.0.0"
+            },
+            "dependencies": {
+                "find-up": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "locate-path": "^3.0.0"
+                    }
+                },
+                "locate-path": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-locate": "^3.0.0",
+                        "path-exists": "^3.0.0"
+                    }
+                },
+                "p-locate": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-limit": "^2.0.0"
+                    }
+                },
+                "path-exists": {
+                    "version": "3.0.0",
+                    "dev": true
+                },
+                "pkg-dir": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "find-up": "^3.0.0"
+                    }
+                }
+            }
+        },
+        "imurmurhash": {
+            "version": "0.1.4",
+            "dev": true
+        },
+        "indent-string": {
+            "version": "3.2.0",
+            "dev": true
+        },
+        "infer-owner": {
+            "version": "1.0.4",
+            "dev": true
+        },
+        "inflight": {
+            "version": "1.0.6",
+            "dev": true,
+            "requires": {
+                "once": "^1.3.0",
+                "wrappy": "1"
+            }
+        },
+        "inherits": {
+            "version": "2.0.4",
+            "dev": true
+        },
+        "ini": {
+            "version": "1.3.8",
+            "dev": true
+        },
+        "inquirer": {
+            "version": "7.3.3",
+            "dev": true,
+            "requires": {
+                "ansi-escapes": "^4.2.1",
+                "chalk": "^4.1.0",
+                "cli-cursor": "^3.1.0",
+                "cli-width": "^3.0.0",
+                "external-editor": "^3.0.3",
+                "figures": "^3.0.0",
+                "lodash": "^4.17.19",
+                "mute-stream": "0.0.8",
+                "run-async": "^2.4.0",
+                "rxjs": "^6.6.0",
+                "string-width": "^4.1.0",
+                "strip-ansi": "^6.0.0",
+                "through": "^2.3.6"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.0",
+                    "dev": true
+                },
+                "strip-ansi": {
+                    "version": "6.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.0"
+                    }
+                }
+            }
+        },
+        "internal-ip": {
+            "version": "4.3.0",
+            "dev": true,
+            "requires": {
+                "default-gateway": "^4.2.0",
+                "ipaddr.js": "^1.9.0"
+            }
+        },
+        "interpret": {
+            "version": "1.4.0",
+            "dev": true
+        },
+        "ip": {
+            "version": "1.1.5",
+            "dev": true
+        },
+        "ip-regex": {
+            "version": "2.1.0",
+            "dev": true
+        },
+        "ipaddr.js": {
+            "version": "1.9.1",
+            "dev": true
+        },
+        "is-absolute-url": {
+            "version": "3.0.3",
+            "dev": true
+        },
+        "is-accessor-descriptor": {
+            "version": "0.1.6",
+            "dev": true,
+            "requires": {
+                "kind-of": "^3.0.2"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "is-arguments": {
+            "version": "1.1.0",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.0"
+            }
+        },
+        "is-binary-path": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "binary-extensions": "^2.0.0"
+            }
+        },
+        "is-buffer": {
+            "version": "1.1.6",
+            "dev": true
+        },
+        "is-callable": {
+            "version": "1.2.3",
+            "dev": true
+        },
+        "is-core-module": {
+            "version": "2.2.0",
+            "dev": true,
+            "requires": {
+                "has": "^1.0.3"
+            }
+        },
+        "is-data-descriptor": {
+            "version": "0.1.4",
+            "dev": true,
+            "requires": {
+                "kind-of": "^3.0.2"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "is-date-object": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "is-descriptor": {
+            "version": "0.1.6",
+            "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",
+                    "dev": true
+                }
+            }
+        },
+        "is-extendable": {
+            "version": "0.1.1",
+            "dev": true
+        },
+        "is-extglob": {
+            "version": "2.1.1",
+            "dev": true
+        },
+        "is-fullwidth-code-point": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "is-glob": {
+            "version": "4.0.1",
+            "dev": true,
+            "requires": {
+                "is-extglob": "^2.1.1"
+            }
+        },
+        "is-negative-zero": {
+            "version": "2.0.1",
+            "dev": true
+        },
+        "is-number": {
+            "version": "3.0.0",
+            "dev": true,
+            "requires": {
+                "kind-of": "^3.0.2"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "is-observable": {
+            "version": "1.1.0",
+            "dev": true,
+            "requires": {
+                "symbol-observable": "^1.1.0"
+            }
+        },
+        "is-path-cwd": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "is-path-in-cwd": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "is-path-inside": "^2.1.0"
+            }
+        },
+        "is-path-inside": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "path-is-inside": "^1.0.2"
+            }
+        },
+        "is-plain-object": {
+            "version": "2.0.4",
+            "dev": true,
+            "requires": {
+                "isobject": "^3.0.1"
+            }
+        },
+        "is-promise": {
+            "version": "2.2.2",
+            "dev": true
+        },
+        "is-regex": {
+            "version": "1.1.2",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "has-symbols": "^1.0.1"
+            }
+        },
+        "is-stream": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "is-symbol": {
+            "version": "1.0.3",
+            "dev": true,
+            "requires": {
+                "has-symbols": "^1.0.1"
+            }
+        },
+        "is-windows": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "is-wsl": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "isarray": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "isexe": {
+            "version": "2.0.0",
+            "dev": true
+        },
+        "isobject": {
+            "version": "3.0.1",
+            "dev": true
+        },
+        "js-tokens": {
+            "version": "4.0.0",
+            "dev": true
+        },
+        "jsesc": {
+            "version": "2.5.2",
+            "dev": true
+        },
+        "json-parse-better-errors": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "json-schema-traverse": {
+            "version": "0.4.1",
+            "dev": true
+        },
+        "json3": {
+            "version": "3.3.3",
+            "dev": true
+        },
+        "json5": {
+            "version": "2.2.0",
+            "dev": true,
+            "requires": {
+                "minimist": "^1.2.5"
+            }
+        },
+        "killable": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "kind-of": {
+            "version": "6.0.3",
+            "dev": true
+        },
+        "listr": {
+            "version": "0.14.3",
+            "dev": true,
+            "requires": {
+                "@samverschueren/stream-to-observable": "^0.3.0",
+                "is-observable": "^1.1.0",
+                "is-promise": "^2.1.0",
+                "is-stream": "^1.1.0",
+                "listr-silent-renderer": "^1.1.1",
+                "listr-update-renderer": "^0.5.0",
+                "listr-verbose-renderer": "^0.5.0",
+                "p-map": "^2.0.0",
+                "rxjs": "^6.3.3"
+            }
+        },
+        "listr-silent-renderer": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "listr-update-renderer": {
+            "version": "0.5.0",
+            "dev": true,
+            "requires": {
+                "chalk": "^1.1.3",
+                "cli-truncate": "^0.2.1",
+                "elegant-spinner": "^1.0.1",
+                "figures": "^1.7.0",
+                "indent-string": "^3.0.0",
+                "log-symbols": "^1.0.2",
+                "log-update": "^2.3.0",
+                "strip-ansi": "^3.0.1"
+            },
+            "dependencies": {
+                "ansi-styles": {
+                    "version": "2.2.1",
+                    "dev": true
+                },
+                "chalk": {
+                    "version": "1.1.3",
+                    "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"
+                    }
+                },
+                "figures": {
+                    "version": "1.7.0",
+                    "dev": true,
+                    "requires": {
+                        "escape-string-regexp": "^1.0.5",
+                        "object-assign": "^4.1.0"
+                    }
+                },
+                "supports-color": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "listr-verbose-renderer": {
+            "version": "0.5.0",
+            "dev": true,
+            "requires": {
+                "chalk": "^2.4.1",
+                "cli-cursor": "^2.1.0",
+                "date-fns": "^1.27.2",
+                "figures": "^2.0.0"
+            },
+            "dependencies": {
+                "chalk": {
+                    "version": "2.4.2",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "^3.2.1",
+                        "escape-string-regexp": "^1.0.5",
+                        "supports-color": "^5.3.0"
+                    }
+                },
+                "cli-cursor": {
+                    "version": "2.1.0",
+                    "dev": true,
+                    "requires": {
+                        "restore-cursor": "^2.0.0"
+                    }
+                },
+                "figures": {
+                    "version": "2.0.0",
+                    "dev": true,
+                    "requires": {
+                        "escape-string-regexp": "^1.0.5"
+                    }
+                },
+                "mimic-fn": {
+                    "version": "1.2.0",
+                    "dev": true
+                },
+                "onetime": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "mimic-fn": "^1.0.0"
+                    }
+                },
+                "restore-cursor": {
+                    "version": "2.0.0",
+                    "dev": true,
+                    "requires": {
+                        "onetime": "^2.0.0",
+                        "signal-exit": "^3.0.2"
+                    }
+                }
+            }
+        },
+        "loader-runner": {
+            "version": "2.4.0",
+            "dev": true
+        },
+        "loader-utils": {
+            "version": "1.4.0",
+            "dev": true,
+            "requires": {
+                "big.js": "^5.2.2",
+                "emojis-list": "^3.0.0",
+                "json5": "^1.0.1"
+            },
+            "dependencies": {
+                "json5": {
+                    "version": "1.0.1",
+                    "dev": true,
+                    "requires": {
+                        "minimist": "^1.2.0"
+                    }
+                }
+            }
+        },
+        "locate-path": {
+            "version": "5.0.0",
+            "dev": true,
+            "requires": {
+                "p-locate": "^4.1.0"
+            }
+        },
+        "lodash": {
+            "version": "4.17.21",
+            "dev": true
+        },
+        "lodash._reinterpolate": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "lodash.debounce": {
+            "version": "4.0.8",
+            "dev": true
+        },
+        "lodash.template": {
+            "version": "4.5.0",
+            "dev": true,
+            "requires": {
+                "lodash._reinterpolate": "^3.0.0",
+                "lodash.templatesettings": "^4.0.0"
+            }
+        },
+        "lodash.templatesettings": {
+            "version": "4.2.0",
+            "dev": true,
+            "requires": {
+                "lodash._reinterpolate": "^3.0.0"
+            }
+        },
+        "log-symbols": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "chalk": "^1.0.0"
+            },
+            "dependencies": {
+                "ansi-styles": {
+                    "version": "2.2.1",
+                    "dev": true
+                },
+                "chalk": {
+                    "version": "1.1.3",
+                    "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"
+                    }
+                },
+                "supports-color": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "log-update": {
+            "version": "2.3.0",
+            "dev": true,
+            "requires": {
+                "ansi-escapes": "^3.0.0",
+                "cli-cursor": "^2.0.0",
+                "wrap-ansi": "^3.0.1"
+            },
+            "dependencies": {
+                "ansi-escapes": {
+                    "version": "3.2.0",
+                    "dev": true
+                },
+                "cli-cursor": {
+                    "version": "2.1.0",
+                    "dev": true,
+                    "requires": {
+                        "restore-cursor": "^2.0.0"
+                    }
+                },
+                "mimic-fn": {
+                    "version": "1.2.0",
+                    "dev": true
+                },
+                "onetime": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "mimic-fn": "^1.0.0"
+                    }
+                },
+                "restore-cursor": {
+                    "version": "2.0.0",
+                    "dev": true,
+                    "requires": {
+                        "onetime": "^2.0.0",
+                        "signal-exit": "^3.0.2"
+                    }
+                }
+            }
+        },
+        "loglevel": {
+            "version": "1.7.1",
+            "dev": true
+        },
+        "lower-case": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "tslib": "^2.0.3"
+            }
+        },
+        "lru-cache": {
+            "version": "5.1.1",
+            "dev": true,
+            "requires": {
+                "yallist": "^3.0.2"
+            }
+        },
+        "make-dir": {
+            "version": "3.1.0",
+            "dev": true,
+            "requires": {
+                "semver": "^6.0.0"
+            }
+        },
+        "map-cache": {
+            "version": "0.2.2",
+            "dev": true
+        },
+        "map-visit": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "object-visit": "^1.0.0"
+            }
+        },
+        "md5.js": {
+            "version": "1.3.5",
+            "dev": true,
+            "requires": {
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.1.2"
+            }
+        },
+        "media-typer": {
+            "version": "0.3.0",
+            "dev": true
+        },
+        "memory-fs": {
+            "version": "0.4.1",
+            "dev": true,
+            "requires": {
+                "errno": "^0.1.3",
+                "readable-stream": "^2.0.1"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "merge-descriptors": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "methods": {
+            "version": "1.1.2",
+            "dev": true
+        },
+        "micromatch": {
+            "version": "3.1.10",
+            "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"
+            }
+        },
+        "miller-rabin": {
+            "version": "4.0.1",
+            "dev": true,
+            "requires": {
+                "bn.js": "^4.0.0",
+                "brorand": "^1.0.1"
+            },
+            "dependencies": {
+                "bn.js": {
+                    "version": "4.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "mime": {
+            "version": "1.6.0",
+            "dev": true
+        },
+        "mime-db": {
+            "version": "1.46.0",
+            "dev": true
+        },
+        "mime-types": {
+            "version": "2.1.29",
+            "dev": true,
+            "requires": {
+                "mime-db": "1.46.0"
+            }
+        },
+        "mimic-fn": {
+            "version": "2.1.0",
+            "dev": true
+        },
+        "minimalistic-assert": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "minimalistic-crypto-utils": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "minimatch": {
+            "version": "3.0.4",
+            "dev": true,
+            "requires": {
+                "brace-expansion": "^1.1.7"
+            }
+        },
+        "minimist": {
+            "version": "1.2.5",
+            "dev": true
+        },
+        "mississippi": {
+            "version": "3.0.0",
+            "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",
+            "dev": true,
+            "requires": {
+                "for-in": "^1.0.2",
+                "is-extendable": "^1.0.1"
+            },
+            "dependencies": {
+                "is-extendable": {
+                    "version": "1.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-plain-object": "^2.0.4"
+                    }
+                }
+            }
+        },
+        "mkdirp": {
+            "version": "0.5.5",
+            "dev": true,
+            "requires": {
+                "minimist": "^1.2.5"
+            }
+        },
+        "move-concurrently": {
+            "version": "1.0.1",
+            "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",
+            "dev": true
+        },
+        "multicast-dns": {
+            "version": "6.2.3",
+            "dev": true,
+            "requires": {
+                "dns-packet": "^1.3.1",
+                "thunky": "^1.0.2"
+            }
+        },
+        "multicast-dns-service-types": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "mute-stream": {
+            "version": "0.0.8",
+            "dev": true
+        },
+        "nanomatch": {
+            "version": "1.2.13",
+            "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"
+            }
+        },
+        "negotiator": {
+            "version": "0.6.2",
+            "dev": true
+        },
+        "neo-async": {
+            "version": "2.6.2",
+            "dev": true
+        },
+        "nice-try": {
+            "version": "1.0.5",
+            "dev": true
+        },
+        "no-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "requires": {
+                "lower-case": "^2.0.2",
+                "tslib": "^2.0.3"
+            }
+        },
+        "node-forge": {
+            "version": "0.10.0",
+            "dev": true
+        },
+        "node-libs-browser": {
+            "version": "2.2.1",
+            "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",
+                    "dev": true
+                },
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                            "dev": true,
+                            "requires": {
+                                "safe-buffer": "~5.1.0"
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "node-releases": {
+            "version": "1.1.71",
+            "dev": true
+        },
+        "normalize-path": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "npm-run-path": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "path-key": "^2.0.0"
+            }
+        },
+        "nth-check": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "boolbase": "~1.0.0"
+            }
+        },
+        "number-is-nan": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "object-assign": {
+            "version": "4.1.1",
+            "dev": true
+        },
+        "object-copy": {
+            "version": "0.1.0",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^0.1.0"
+                    }
+                },
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "object-inspect": {
+            "version": "1.9.0",
+            "dev": true
+        },
+        "object-is": {
+            "version": "1.1.5",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            }
+        },
+        "object-keys": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "object-visit": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "isobject": "^3.0.0"
+            }
+        },
+        "object.assign": {
+            "version": "4.1.2",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.0",
+                "define-properties": "^1.1.3",
+                "has-symbols": "^1.0.1",
+                "object-keys": "^1.1.1"
+            }
+        },
+        "object.getownpropertydescriptors": {
+            "version": "2.1.2",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3",
+                "es-abstract": "^1.18.0-next.2"
+            }
+        },
+        "object.pick": {
+            "version": "1.3.0",
+            "dev": true,
+            "requires": {
+                "isobject": "^3.0.1"
+            }
+        },
+        "obuf": {
+            "version": "1.1.2",
+            "dev": true
+        },
+        "on-finished": {
+            "version": "2.3.0",
+            "dev": true,
+            "requires": {
+                "ee-first": "1.1.1"
+            }
+        },
+        "on-headers": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "once": {
+            "version": "1.4.0",
+            "dev": true,
+            "requires": {
+                "wrappy": "1"
+            }
+        },
+        "onetime": {
+            "version": "5.1.2",
+            "dev": true,
+            "requires": {
+                "mimic-fn": "^2.1.0"
+            }
+        },
+        "opn": {
+            "version": "5.5.0",
+            "dev": true,
+            "requires": {
+                "is-wsl": "^1.1.0"
+            }
+        },
+        "original": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "url-parse": "^1.4.3"
+            }
+        },
+        "os-browserify": {
+            "version": "0.3.0",
+            "dev": true
+        },
+        "os-tmpdir": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "p-finally": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "p-limit": {
+            "version": "2.3.0",
+            "dev": true,
+            "requires": {
+                "p-try": "^2.0.0"
+            }
+        },
+        "p-locate": {
+            "version": "4.1.0",
+            "dev": true,
+            "requires": {
+                "p-limit": "^2.2.0"
+            }
+        },
+        "p-map": {
+            "version": "2.1.0",
+            "dev": true
+        },
+        "p-retry": {
+            "version": "3.0.1",
+            "dev": true,
+            "requires": {
+                "retry": "^0.12.0"
+            }
+        },
+        "p-try": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "pako": {
+            "version": "1.0.11",
+            "dev": true
+        },
+        "parallel-transform": {
+            "version": "1.2.0",
+            "dev": true,
+            "requires": {
+                "cyclist": "^1.0.1",
+                "inherits": "^2.0.3",
+                "readable-stream": "^2.1.5"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "param-case": {
+            "version": "3.0.4",
+            "dev": true,
+            "requires": {
+                "dot-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "parse-asn1": {
+            "version": "5.1.6",
+            "dev": true,
+            "requires": {
+                "asn1.js": "^5.2.0",
+                "browserify-aes": "^1.0.0",
+                "evp_bytestokey": "^1.0.0",
+                "pbkdf2": "^3.0.3",
+                "safe-buffer": "^5.1.1"
+            }
+        },
+        "parse-passwd": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "parseurl": {
+            "version": "1.3.3",
+            "dev": true
+        },
+        "pascal-case": {
+            "version": "3.1.2",
+            "dev": true,
+            "requires": {
+                "no-case": "^3.0.4",
+                "tslib": "^2.0.3"
+            }
+        },
+        "pascalcase": {
+            "version": "0.1.1",
+            "dev": true
+        },
+        "path-browserify": {
+            "version": "0.0.1",
+            "dev": true
+        },
+        "path-dirname": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "path-exists": {
+            "version": "4.0.0",
+            "dev": true
+        },
+        "path-is-absolute": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "path-is-inside": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "path-key": {
+            "version": "2.0.1",
+            "dev": true
+        },
+        "path-parse": {
+            "version": "1.0.6",
+            "dev": true
+        },
+        "path-to-regexp": {
+            "version": "0.1.7",
+            "dev": true
+        },
+        "pbkdf2": {
+            "version": "3.1.1",
+            "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"
+            }
+        },
+        "picomatch": {
+            "version": "2.2.2",
+            "dev": true
+        },
+        "pify": {
+            "version": "4.0.1",
+            "dev": true
+        },
+        "pinkie": {
+            "version": "2.0.4",
+            "dev": true
+        },
+        "pinkie-promise": {
+            "version": "2.0.1",
+            "dev": true,
+            "requires": {
+                "pinkie": "^2.0.0"
+            }
+        },
+        "pkg-dir": {
+            "version": "4.2.0",
+            "dev": true,
+            "requires": {
+                "find-up": "^4.0.0"
+            }
+        },
+        "portfinder": {
+            "version": "1.0.28",
+            "dev": true,
+            "requires": {
+                "async": "^2.6.2",
+                "debug": "^3.1.1",
+                "mkdirp": "^0.5.5"
+            },
+            "dependencies": {
+                "debug": {
+                    "version": "3.2.7",
+                    "dev": true,
+                    "requires": {
+                        "ms": "^2.1.1"
+                    }
+                }
+            }
+        },
+        "posix-character-classes": {
+            "version": "0.1.1",
+            "dev": true
+        },
+        "pretty-error": {
+            "version": "2.1.2",
+            "dev": true,
+            "requires": {
+                "lodash": "^4.17.20",
+                "renderkid": "^2.0.4"
+            }
+        },
+        "process": {
+            "version": "0.11.10",
+            "dev": true
+        },
+        "process-nextick-args": {
+            "version": "2.0.1",
+            "dev": true
+        },
+        "promise-inflight": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "proxy-addr": {
+            "version": "2.0.6",
+            "dev": true,
+            "requires": {
+                "forwarded": "~0.1.2",
+                "ipaddr.js": "1.9.1"
+            }
+        },
+        "prr": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "public-encrypt": {
+            "version": "4.0.3",
+            "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.12.0",
+                    "dev": true
+                }
+            }
+        },
+        "pump": {
+            "version": "3.0.0",
+            "dev": true,
+            "requires": {
+                "end-of-stream": "^1.1.0",
+                "once": "^1.3.1"
+            }
+        },
+        "pumpify": {
+            "version": "1.5.1",
+            "dev": true,
+            "requires": {
+                "duplexify": "^3.6.0",
+                "inherits": "^2.0.3",
+                "pump": "^2.0.0"
+            },
+            "dependencies": {
+                "pump": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "end-of-stream": "^1.1.0",
+                        "once": "^1.3.1"
+                    }
+                }
+            }
+        },
+        "punycode": {
+            "version": "2.1.1",
+            "dev": true
+        },
+        "qs": {
+            "version": "6.7.0",
+            "dev": true
+        },
+        "querystring": {
+            "version": "0.2.0",
+            "dev": true
+        },
+        "querystring-es3": {
+            "version": "0.2.1",
+            "dev": true
+        },
+        "querystringify": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "randombytes": {
+            "version": "2.1.0",
+            "dev": true,
+            "requires": {
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "randomfill": {
+            "version": "1.0.4",
+            "dev": true,
+            "requires": {
+                "randombytes": "^2.0.5",
+                "safe-buffer": "^5.1.0"
+            }
+        },
+        "range-parser": {
+            "version": "1.2.1",
+            "dev": true
+        },
+        "raw-body": {
+            "version": "2.4.0",
+            "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",
+                    "dev": true
+                }
+            }
+        },
+        "readable-stream": {
+            "version": "3.6.0",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.3",
+                "string_decoder": "^1.1.1",
+                "util-deprecate": "^1.0.1"
+            }
+        },
+        "readdirp": {
+            "version": "3.5.0",
+            "dev": true,
+            "requires": {
+                "picomatch": "^2.2.1"
+            }
+        },
+        "regenerate": {
+            "version": "1.4.2",
+            "dev": true
+        },
+        "regenerate-unicode-properties": {
+            "version": "8.2.0",
+            "dev": true,
+            "requires": {
+                "regenerate": "^1.4.0"
+            }
+        },
+        "regenerator-runtime": {
+            "version": "0.13.7",
+            "dev": true
+        },
+        "regenerator-transform": {
+            "version": "0.14.5",
+            "dev": true,
+            "requires": {
+                "@babel/runtime": "^7.8.4"
+            }
+        },
+        "regex-not": {
+            "version": "1.0.2",
+            "dev": true,
+            "requires": {
+                "extend-shallow": "^3.0.2",
+                "safe-regex": "^1.1.0"
+            }
+        },
+        "regexp.prototype.flags": {
+            "version": "1.3.1",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            }
+        },
+        "regexpu-core": {
+            "version": "4.7.1",
+            "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",
+            "dev": true
+        },
+        "regjsparser": {
+            "version": "0.6.7",
+            "dev": true,
+            "requires": {
+                "jsesc": "~0.5.0"
+            },
+            "dependencies": {
+                "jsesc": {
+                    "version": "0.5.0",
+                    "dev": true
+                }
+            }
+        },
+        "relateurl": {
+            "version": "0.2.7",
+            "dev": true
+        },
+        "remove-trailing-separator": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "renderkid": {
+            "version": "2.0.5",
+            "dev": true,
+            "requires": {
+                "css-select": "^2.0.2",
+                "dom-converter": "^0.2",
+                "htmlparser2": "^3.10.1",
+                "lodash": "^4.17.20",
+                "strip-ansi": "^3.0.0"
+            }
+        },
+        "repeat-element": {
+            "version": "1.1.3",
+            "dev": true
+        },
+        "repeat-string": {
+            "version": "1.6.1",
+            "dev": true
+        },
+        "require-directory": {
+            "version": "2.1.1",
+            "dev": true
+        },
+        "require-main-filename": {
+            "version": "2.0.0",
+            "dev": true
+        },
+        "requires-port": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "resolve": {
+            "version": "1.20.0",
+            "dev": true,
+            "requires": {
+                "is-core-module": "^2.2.0",
+                "path-parse": "^1.0.6"
+            }
+        },
+        "resolve-cwd": {
+            "version": "2.0.0",
+            "dev": true,
+            "requires": {
+                "resolve-from": "^3.0.0"
+            }
+        },
+        "resolve-dir": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "expand-tilde": "^2.0.0",
+                "global-modules": "^1.0.0"
+            },
+            "dependencies": {
+                "global-modules": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "global-prefix": "^1.0.1",
+                        "is-windows": "^1.0.1",
+                        "resolve-dir": "^1.0.0"
+                    }
+                }
+            }
+        },
+        "resolve-from": {
+            "version": "3.0.0",
+            "dev": true
+        },
+        "resolve-url": {
+            "version": "0.2.1",
+            "dev": true
+        },
+        "restore-cursor": {
+            "version": "3.1.0",
+            "dev": true,
+            "requires": {
+                "onetime": "^5.1.0",
+                "signal-exit": "^3.0.2"
+            }
+        },
+        "ret": {
+            "version": "0.1.15",
+            "dev": true
+        },
+        "retry": {
+            "version": "0.12.0",
+            "dev": true
+        },
+        "rimraf": {
+            "version": "2.7.1",
+            "dev": true,
+            "requires": {
+                "glob": "^7.1.3"
+            }
+        },
+        "ripemd160": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "hash-base": "^3.0.0",
+                "inherits": "^2.0.1"
+            }
+        },
+        "run-async": {
+            "version": "2.4.1",
+            "dev": true
+        },
+        "run-queue": {
+            "version": "1.0.3",
+            "dev": true,
+            "requires": {
+                "aproba": "^1.1.1"
+            }
+        },
+        "rxjs": {
+            "version": "6.6.6",
+            "dev": true,
+            "requires": {
+                "tslib": "^1.9.0"
+            },
+            "dependencies": {
+                "tslib": {
+                    "version": "1.14.1",
+                    "dev": true
+                }
+            }
+        },
+        "safe-buffer": {
+            "version": "5.1.2",
+            "dev": true
+        },
+        "safe-regex": {
+            "version": "1.1.0",
+            "dev": true,
+            "requires": {
+                "ret": "~0.1.10"
+            }
+        },
+        "safer-buffer": {
+            "version": "2.1.2",
+            "dev": true
+        },
+        "sass": {
+            "version": "1.32.8",
+            "dev": true,
+            "requires": {
+                "chokidar": ">=2.0.0 <4.0.0"
+            }
+        },
+        "schema-utils": {
+            "version": "2.7.1",
+            "dev": true,
+            "requires": {
+                "@types/json-schema": "^7.0.5",
+                "ajv": "^6.12.4",
+                "ajv-keywords": "^3.5.2"
+            }
+        },
+        "select-hose": {
+            "version": "2.0.0",
+            "dev": true
+        },
+        "selfsigned": {
+            "version": "1.10.8",
+            "dev": true,
+            "requires": {
+                "node-forge": "^0.10.0"
+            }
+        },
+        "semver": {
+            "version": "6.3.0",
+            "dev": true
+        },
+        "send": {
+            "version": "0.17.1",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    },
+                    "dependencies": {
+                        "ms": {
+                            "version": "2.0.0",
+                            "dev": true
+                        }
+                    }
+                },
+                "ms": {
+                    "version": "2.1.1",
+                    "dev": true
+                }
+            }
+        },
+        "serialize-javascript": {
+            "version": "4.0.0",
+            "dev": true,
+            "requires": {
+                "randombytes": "^2.1.0"
+            }
+        },
+        "serve-index": {
+            "version": "1.9.1",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "http-errors": {
+                    "version": "1.6.3",
+                    "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",
+                    "dev": true
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                },
+                "setprototypeof": {
+                    "version": "1.1.0",
+                    "dev": true
+                }
+            }
+        },
+        "serve-static": {
+            "version": "1.14.1",
+            "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",
+            "dev": true
+        },
+        "set-value": {
+            "version": "2.0.1",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                }
+            }
+        },
+        "setimmediate": {
+            "version": "1.0.5",
+            "dev": true
+        },
+        "setprototypeof": {
+            "version": "1.1.1",
+            "dev": true
+        },
+        "sha.js": {
+            "version": "2.4.11",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.1",
+                "safe-buffer": "^5.0.1"
+            }
+        },
+        "shebang-command": {
+            "version": "1.2.0",
+            "dev": true,
+            "requires": {
+                "shebang-regex": "^1.0.0"
+            }
+        },
+        "shebang-regex": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "signal-exit": {
+            "version": "3.0.3",
+            "dev": true
+        },
+        "slice-ansi": {
+            "version": "0.0.4",
+            "dev": true
+        },
+        "snapdragon": {
+            "version": "0.8.2",
+            "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",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "define-property": {
+                    "version": "0.2.5",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^0.1.0"
+                    }
+                },
+                "extend-shallow": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "is-extendable": "^0.1.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "dev": true
+                }
+            }
+        },
+        "snapdragon-node": {
+            "version": "2.1.1",
+            "dev": true,
+            "requires": {
+                "define-property": "^1.0.0",
+                "isobject": "^3.0.0",
+                "snapdragon-util": "^3.0.1"
+            },
+            "dependencies": {
+                "define-property": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^1.0.0"
+                    }
+                },
+                "is-accessor-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-data-descriptor": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "kind-of": "^6.0.0"
+                    }
+                },
+                "is-descriptor": {
+                    "version": "1.0.2",
+                    "dev": true,
+                    "requires": {
+                        "is-accessor-descriptor": "^1.0.0",
+                        "is-data-descriptor": "^1.0.0",
+                        "kind-of": "^6.0.2"
+                    }
+                }
+            }
+        },
+        "snapdragon-util": {
+            "version": "3.0.1",
+            "dev": true,
+            "requires": {
+                "kind-of": "^3.2.0"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "sockjs": {
+            "version": "0.3.21",
+            "dev": true,
+            "requires": {
+                "faye-websocket": "^0.11.3",
+                "uuid": "^3.4.0",
+                "websocket-driver": "^0.7.4"
+            }
+        },
+        "sockjs-client": {
+            "version": "1.5.0",
+            "dev": true,
+            "requires": {
+                "debug": "^3.2.6",
+                "eventsource": "^1.0.7",
+                "faye-websocket": "^0.11.3",
+                "inherits": "^2.0.4",
+                "json3": "^3.3.3",
+                "url-parse": "^1.4.7"
+            },
+            "dependencies": {
+                "debug": {
+                    "version": "3.2.7",
+                    "dev": true,
+                    "requires": {
+                        "ms": "^2.1.1"
+                    }
+                }
+            }
+        },
+        "source-list-map": {
+            "version": "2.0.1",
+            "dev": true
+        },
+        "source-map": {
+            "version": "0.5.7",
+            "dev": true
+        },
+        "source-map-resolve": {
+            "version": "0.5.3",
+            "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",
+            "dev": true,
+            "requires": {
+                "buffer-from": "^1.0.0",
+                "source-map": "^0.6.0"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "source-map-url": {
+            "version": "0.4.1",
+            "dev": true
+        },
+        "spdx-license-list": {
+            "version": "6.4.0",
+            "dev": true
+        },
+        "spdy": {
+            "version": "4.0.2",
+            "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",
+            "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",
+            "dev": true,
+            "requires": {
+                "extend-shallow": "^3.0.0"
+            }
+        },
+        "ssri": {
+            "version": "6.0.1",
+            "dev": true,
+            "requires": {
+                "figgy-pudding": "^3.5.1"
+            }
+        },
+        "static-extend": {
+            "version": "0.1.2",
+            "dev": true,
+            "requires": {
+                "define-property": "^0.2.5",
+                "object-copy": "^0.1.0"
+            },
+            "dependencies": {
+                "define-property": {
+                    "version": "0.2.5",
+                    "dev": true,
+                    "requires": {
+                        "is-descriptor": "^0.1.0"
+                    }
+                }
+            }
+        },
+        "statuses": {
+            "version": "1.5.0",
+            "dev": true
+        },
+        "stream-browserify": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "inherits": "~2.0.1",
+                "readable-stream": "^2.0.2"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "stream-each": {
+            "version": "1.2.3",
+            "dev": true,
+            "requires": {
+                "end-of-stream": "^1.1.0",
+                "stream-shift": "^1.0.0"
+            }
+        },
+        "stream-http": {
+            "version": "2.8.3",
+            "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",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "stream-shift": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "string_decoder": {
+            "version": "1.3.0",
+            "dev": true,
+            "requires": {
+                "safe-buffer": "~5.2.0"
+            },
+            "dependencies": {
+                "safe-buffer": {
+                    "version": "5.2.1",
+                    "dev": true
+                }
+            }
+        },
+        "string-width": {
+            "version": "4.2.1",
+            "dev": true,
+            "requires": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.0"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.0",
+                    "dev": true
+                },
+                "strip-ansi": {
+                    "version": "6.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.0"
+                    }
+                }
+            }
+        },
+        "string.prototype.trimend": {
+            "version": "1.0.4",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            }
+        },
+        "string.prototype.trimstart": {
+            "version": "1.0.4",
+            "dev": true,
+            "requires": {
+                "call-bind": "^1.0.2",
+                "define-properties": "^1.1.3"
+            }
+        },
+        "strip-ansi": {
+            "version": "3.0.1",
+            "dev": true,
+            "requires": {
+                "ansi-regex": "^2.0.0"
+            }
+        },
+        "strip-eof": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "supports-color": {
+            "version": "5.5.0",
+            "dev": true,
+            "requires": {
+                "has-flag": "^3.0.0"
+            }
+        },
+        "symbol-observable": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "tapable": {
+            "version": "1.1.3",
+            "dev": true
+        },
+        "terser": {
+            "version": "4.8.0",
+            "dev": true,
+            "requires": {
+                "commander": "^2.20.0",
+                "source-map": "~0.6.1",
+                "source-map-support": "~0.5.12"
+            },
+            "dependencies": {
+                "commander": {
+                    "version": "2.20.3",
+                    "dev": true
+                },
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "terser-webpack-plugin": {
+            "version": "1.4.5",
+            "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": "^4.0.0",
+                "source-map": "^0.6.1",
+                "terser": "^4.1.2",
+                "webpack-sources": "^1.4.0",
+                "worker-farm": "^1.7.0"
+            },
+            "dependencies": {
+                "find-cache-dir": {
+                    "version": "2.1.0",
+                    "dev": true,
+                    "requires": {
+                        "commondir": "^1.0.1",
+                        "make-dir": "^2.0.0",
+                        "pkg-dir": "^3.0.0"
+                    }
+                },
+                "find-up": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "locate-path": "^3.0.0"
+                    }
+                },
+                "locate-path": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-locate": "^3.0.0",
+                        "path-exists": "^3.0.0"
+                    }
+                },
+                "make-dir": {
+                    "version": "2.1.0",
+                    "dev": true,
+                    "requires": {
+                        "pify": "^4.0.1",
+                        "semver": "^5.6.0"
+                    }
+                },
+                "p-locate": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-limit": "^2.0.0"
+                    }
+                },
+                "path-exists": {
+                    "version": "3.0.0",
+                    "dev": true
+                },
+                "pkg-dir": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "find-up": "^3.0.0"
+                    }
+                },
+                "schema-utils": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ajv": "^6.1.0",
+                        "ajv-errors": "^1.0.0",
+                        "ajv-keywords": "^3.1.0"
+                    }
+                },
+                "semver": {
+                    "version": "5.7.1",
+                    "dev": true
+                },
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "through": {
+            "version": "2.3.8",
+            "dev": true
+        },
+        "through2": {
+            "version": "2.0.5",
+            "dev": true,
+            "requires": {
+                "readable-stream": "~2.3.6",
+                "xtend": "~4.0.1"
+            },
+            "dependencies": {
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "thunky": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "timers-browserify": {
+            "version": "2.0.12",
+            "dev": true,
+            "requires": {
+                "setimmediate": "^1.0.4"
+            }
+        },
+        "tmp": {
+            "version": "0.0.33",
+            "dev": true,
+            "requires": {
+                "os-tmpdir": "~1.0.2"
+            }
+        },
+        "to-arraybuffer": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "to-fast-properties": {
+            "version": "2.0.0",
+            "dev": true
+        },
+        "to-object-path": {
+            "version": "0.3.0",
+            "dev": true,
+            "requires": {
+                "kind-of": "^3.0.2"
+            },
+            "dependencies": {
+                "kind-of": {
+                    "version": "3.2.2",
+                    "dev": true,
+                    "requires": {
+                        "is-buffer": "^1.1.5"
+                    }
+                }
+            }
+        },
+        "to-regex": {
+            "version": "3.0.2",
+            "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",
+            "dev": true,
+            "requires": {
+                "is-number": "^3.0.0",
+                "repeat-string": "^1.6.1"
+            }
+        },
+        "toidentifier": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "tslib": {
+            "version": "2.1.0",
+            "dev": true
+        },
+        "tty-browserify": {
+            "version": "0.0.0",
+            "dev": true
+        },
+        "type-fest": {
+            "version": "0.11.0",
+            "dev": true
+        },
+        "type-is": {
+            "version": "1.6.18",
+            "dev": true,
+            "requires": {
+                "media-typer": "0.3.0",
+                "mime-types": "~2.1.24"
+            }
+        },
+        "typedarray": {
+            "version": "0.0.6",
+            "dev": true
+        },
+        "unicode-canonical-property-names-ecmascript": {
+            "version": "1.0.4",
+            "dev": true
+        },
+        "unicode-match-property-ecmascript": {
+            "version": "1.0.4",
+            "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",
+            "dev": true
+        },
+        "unicode-property-aliases-ecmascript": {
+            "version": "1.1.0",
+            "dev": true
+        },
+        "union-value": {
+            "version": "1.0.1",
+            "dev": true,
+            "requires": {
+                "arr-union": "^3.1.0",
+                "get-value": "^2.0.6",
+                "is-extendable": "^0.1.1",
+                "set-value": "^2.0.1"
+            }
+        },
+        "unique-filename": {
+            "version": "1.1.1",
+            "dev": true,
+            "requires": {
+                "unique-slug": "^2.0.0"
+            }
+        },
+        "unique-slug": {
+            "version": "2.0.2",
+            "dev": true,
+            "requires": {
+                "imurmurhash": "^0.1.4"
+            }
+        },
+        "unpipe": {
+            "version": "1.0.0",
+            "dev": true
+        },
+        "unset-value": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "has-value": "^0.3.1",
+                "isobject": "^3.0.0"
+            },
+            "dependencies": {
+                "has-value": {
+                    "version": "0.3.1",
+                    "dev": true,
+                    "requires": {
+                        "get-value": "^2.0.3",
+                        "has-values": "^0.1.4",
+                        "isobject": "^2.0.0"
+                    },
+                    "dependencies": {
+                        "isobject": {
+                            "version": "2.1.0",
+                            "dev": true,
+                            "requires": {
+                                "isarray": "1.0.0"
+                            }
+                        }
+                    }
+                },
+                "has-values": {
+                    "version": "0.1.4",
+                    "dev": true
+                }
+            }
+        },
+        "upath": {
+            "version": "1.2.0",
+            "dev": true
+        },
+        "uri-js": {
+            "version": "4.4.1",
+            "dev": true,
+            "requires": {
+                "punycode": "^2.1.0"
+            }
+        },
+        "urix": {
+            "version": "0.1.0",
+            "dev": true
+        },
+        "url": {
+            "version": "0.11.0",
+            "dev": true,
+            "requires": {
+                "punycode": "1.3.2",
+                "querystring": "0.2.0"
+            },
+            "dependencies": {
+                "punycode": {
+                    "version": "1.3.2",
+                    "dev": true
+                }
+            }
+        },
+        "url-parse": {
+            "version": "1.5.1",
+            "dev": true,
+            "requires": {
+                "querystringify": "^2.1.1",
+                "requires-port": "^1.0.0"
+            }
+        },
+        "use": {
+            "version": "3.1.1",
+            "dev": true
+        },
+        "util": {
+            "version": "0.11.1",
+            "dev": true,
+            "requires": {
+                "inherits": "2.0.3"
+            },
+            "dependencies": {
+                "inherits": {
+                    "version": "2.0.3",
+                    "dev": true
+                }
+            }
+        },
+        "util-deprecate": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "util.promisify": {
+            "version": "1.0.0",
+            "dev": true,
+            "requires": {
+                "define-properties": "^1.1.2",
+                "object.getownpropertydescriptors": "^2.0.3"
+            }
+        },
+        "utila": {
+            "version": "0.4.0",
+            "dev": true
+        },
+        "utils-merge": {
+            "version": "1.0.1",
+            "dev": true
+        },
+        "uuid": {
+            "version": "3.4.0",
+            "dev": true
+        },
+        "v8-compile-cache": {
+            "version": "2.2.0",
+            "dev": true
+        },
+        "vary": {
+            "version": "1.1.2",
+            "dev": true
+        },
+        "vm-browserify": {
+            "version": "1.1.2",
+            "dev": true
+        },
+        "watchpack": {
+            "version": "1.7.5",
+            "dev": true,
+            "requires": {
+                "chokidar": "^3.4.1",
+                "graceful-fs": "^4.1.2",
+                "neo-async": "^2.5.0",
+                "watchpack-chokidar2": "^2.0.1"
+            }
+        },
+        "watchpack-chokidar2": {
+            "version": "2.0.1",
+            "dev": true,
+            "optional": true,
+            "requires": {
+                "chokidar": "^2.1.8"
+            },
+            "dependencies": {
+                "anymatch": {
+                    "version": "2.0.0",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "micromatch": "^3.1.4",
+                        "normalize-path": "^2.1.1"
+                    },
+                    "dependencies": {
+                        "normalize-path": {
+                            "version": "2.1.1",
+                            "dev": true,
+                            "optional": true,
+                            "requires": {
+                                "remove-trailing-separator": "^1.0.1"
+                            }
+                        }
+                    }
+                },
+                "binary-extensions": {
+                    "version": "1.13.1",
+                    "dev": true,
+                    "optional": true
+                },
+                "chokidar": {
+                    "version": "2.1.8",
+                    "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"
+                    }
+                },
+                "glob-parent": {
+                    "version": "3.1.0",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "is-glob": "^3.1.0",
+                        "path-dirname": "^1.0.0"
+                    },
+                    "dependencies": {
+                        "is-glob": {
+                            "version": "3.1.0",
+                            "dev": true,
+                            "optional": true,
+                            "requires": {
+                                "is-extglob": "^2.1.0"
+                            }
+                        }
+                    }
+                },
+                "is-binary-path": {
+                    "version": "1.0.1",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "binary-extensions": "^1.0.0"
+                    }
+                },
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "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",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
+        "wbuf": {
+            "version": "1.7.3",
+            "dev": true,
+            "requires": {
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
+        "webpack": {
+            "version": "4.46.0",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-module-context": "1.9.0",
+                "@webassemblyjs/wasm-edit": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0",
+                "acorn": "^6.4.1",
+                "ajv": "^6.10.2",
+                "ajv-keywords": "^3.4.1",
+                "chrome-trace-event": "^1.0.2",
+                "enhanced-resolve": "^4.5.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.3",
+                "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.7.4",
+                "webpack-sources": "^1.4.1"
+            },
+            "dependencies": {
+                "schema-utils": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ajv": "^6.1.0",
+                        "ajv-errors": "^1.0.0",
+                        "ajv-keywords": "^3.1.0"
+                    }
+                }
+            }
+        },
+        "webpack-cli": {
+            "version": "3.3.12",
+            "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": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "dev": true
+                },
+                "chalk": {
+                    "version": "2.4.2",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "^3.2.1",
+                        "escape-string-regexp": "^1.0.5",
+                        "supports-color": "^5.3.0"
+                    },
+                    "dependencies": {
+                        "supports-color": {
+                            "version": "5.5.0",
+                            "dev": true,
+                            "requires": {
+                                "has-flag": "^3.0.0"
+                            }
+                        }
+                    }
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "dev": true
+                },
+                "find-up": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "locate-path": "^3.0.0"
+                    }
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "dev": true
+                },
+                "locate-path": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-locate": "^3.0.0",
+                        "path-exists": "^3.0.0"
+                    }
+                },
+                "p-locate": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-limit": "^2.0.0"
+                    }
+                },
+                "path-exists": {
+                    "version": "3.0.0",
+                    "dev": true
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "dev": true,
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "5.2.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^4.1.0"
+                    }
+                },
+                "supports-color": {
+                    "version": "6.1.0",
+                    "dev": true,
+                    "requires": {
+                        "has-flag": "^3.0.0"
+                    }
+                },
+                "yargs": {
+                    "version": "13.3.2",
+                    "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"
+                    }
+                }
+            }
+        },
+        "webpack-dev-middleware": {
+            "version": "3.7.3",
+            "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"
+            },
+            "dependencies": {
+                "mime": {
+                    "version": "2.5.2",
+                    "dev": true
+                }
+            }
+        },
+        "webpack-dev-server": {
+            "version": "3.11.2",
+            "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.3.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.8",
+                "opn": "^5.5.0",
+                "p-retry": "^3.0.1",
+                "portfinder": "^1.0.26",
+                "schema-utils": "^1.0.0",
+                "selfsigned": "^1.10.8",
+                "semver": "^6.3.0",
+                "serve-index": "^1.9.1",
+                "sockjs": "^0.3.21",
+                "sockjs-client": "^1.5.0",
+                "spdy": "^4.0.2",
+                "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": "^13.3.2"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "dev": true
+                },
+                "anymatch": {
+                    "version": "2.0.0",
+                    "dev": true,
+                    "requires": {
+                        "micromatch": "^3.1.4",
+                        "normalize-path": "^2.1.1"
+                    },
+                    "dependencies": {
+                        "normalize-path": {
+                            "version": "2.1.1",
+                            "dev": true,
+                            "requires": {
+                                "remove-trailing-separator": "^1.0.1"
+                            }
+                        }
+                    }
+                },
+                "binary-extensions": {
+                    "version": "1.13.1",
+                    "dev": true
+                },
+                "chokidar": {
+                    "version": "2.1.8",
+                    "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"
+                    }
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "dev": true
+                },
+                "find-up": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "locate-path": "^3.0.0"
+                    }
+                },
+                "glob-parent": {
+                    "version": "3.1.0",
+                    "dev": true,
+                    "requires": {
+                        "is-glob": "^3.1.0",
+                        "path-dirname": "^1.0.0"
+                    },
+                    "dependencies": {
+                        "is-glob": {
+                            "version": "3.1.0",
+                            "dev": true,
+                            "requires": {
+                                "is-extglob": "^2.1.0"
+                            }
+                        }
+                    }
+                },
+                "is-binary-path": {
+                    "version": "1.0.1",
+                    "dev": true,
+                    "requires": {
+                        "binary-extensions": "^1.0.0"
+                    }
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "dev": true
+                },
+                "locate-path": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-locate": "^3.0.0",
+                        "path-exists": "^3.0.0"
+                    }
+                },
+                "p-locate": {
+                    "version": "3.0.0",
+                    "dev": true,
+                    "requires": {
+                        "p-limit": "^2.0.0"
+                    }
+                },
+                "path-exists": {
+                    "version": "3.0.0",
+                    "dev": true
+                },
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "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",
+                    "dev": true,
+                    "requires": {
+                        "graceful-fs": "^4.1.11",
+                        "micromatch": "^3.1.10",
+                        "readable-stream": "^2.0.2"
+                    }
+                },
+                "schema-utils": {
+                    "version": "1.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ajv": "^6.1.0",
+                        "ajv-errors": "^1.0.0",
+                        "ajv-keywords": "^3.1.0"
+                    }
+                },
+                "string_decoder": {
+                    "version": "1.1.1",
+                    "dev": true,
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "dev": true,
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    },
+                    "dependencies": {
+                        "strip-ansi": {
+                            "version": "5.2.0",
+                            "dev": true,
+                            "requires": {
+                                "ansi-regex": "^4.1.0"
+                            }
+                        }
+                    }
+                },
+                "supports-color": {
+                    "version": "6.1.0",
+                    "dev": true,
+                    "requires": {
+                        "has-flag": "^3.0.0"
+                    }
+                },
+                "yargs": {
+                    "version": "13.3.2",
+                    "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"
+                    }
+                }
+            }
+        },
+        "webpack-log": {
+            "version": "2.0.0",
+            "dev": true,
+            "requires": {
+                "ansi-colors": "^3.0.0",
+                "uuid": "^3.3.2"
+            }
+        },
+        "webpack-sources": {
+            "version": "1.4.3",
+            "dev": true,
+            "requires": {
+                "source-list-map": "^2.0.0",
+                "source-map": "~0.6.1"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "dev": true
+                }
+            }
+        },
+        "websocket-driver": {
+            "version": "0.7.4",
+            "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",
+            "dev": true
+        },
+        "which": {
+            "version": "1.3.1",
+            "dev": true,
+            "requires": {
+                "isexe": "^2.0.0"
+            }
+        },
+        "which-module": {
+            "version": "2.0.0",
+            "dev": true
+        },
+        "worker-farm": {
+            "version": "1.7.0",
+            "dev": true,
+            "requires": {
+                "errno": "~0.1.7"
+            }
+        },
+        "wrap-ansi": {
+            "version": "3.0.1",
+            "dev": true,
+            "requires": {
+                "string-width": "^2.1.1",
+                "strip-ansi": "^4.0.0"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "3.0.0",
+                    "dev": true
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "dev": true
+                },
+                "string-width": {
+                    "version": "2.1.1",
+                    "dev": true,
+                    "requires": {
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^4.0.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "4.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^3.0.0"
+                    }
+                }
+            }
+        },
+        "wrappy": {
+            "version": "1.0.2",
+            "dev": true
+        },
+        "ws": {
+            "version": "6.2.1",
+            "dev": true,
+            "requires": {
+                "async-limiter": "~1.0.0"
+            }
+        },
+        "xtend": {
+            "version": "4.0.2",
+            "dev": true
+        },
+        "y18n": {
+            "version": "4.0.1",
+            "dev": true
+        },
+        "yallist": {
+            "version": "3.1.1",
+            "dev": true
+        },
+        "yargs": {
+            "version": "16.2.0",
+            "dev": true,
+            "requires": {
+                "cliui": "^7.0.2",
+                "escalade": "^3.1.1",
+                "get-caller-file": "^2.0.5",
+                "require-directory": "^2.1.1",
+                "string-width": "^4.2.0",
+                "y18n": "^5.0.5",
+                "yargs-parser": "^20.2.2"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "5.0.0",
+                    "dev": true
+                },
+                "ansi-styles": {
+                    "version": "4.3.0",
+                    "dev": true,
+                    "requires": {
+                        "color-convert": "^2.0.1"
+                    }
+                },
+                "cliui": {
+                    "version": "7.0.4",
+                    "dev": true,
+                    "requires": {
+                        "string-width": "^4.2.0",
+                        "strip-ansi": "^6.0.0",
+                        "wrap-ansi": "^7.0.0"
+                    }
+                },
+                "color-convert": {
+                    "version": "2.0.1",
+                    "dev": true,
+                    "requires": {
+                        "color-name": "~1.1.4"
+                    }
+                },
+                "color-name": {
+                    "version": "1.1.4",
+                    "dev": true
+                },
+                "strip-ansi": {
+                    "version": "6.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-regex": "^5.0.0"
+                    }
+                },
+                "wrap-ansi": {
+                    "version": "7.0.0",
+                    "dev": true,
+                    "requires": {
+                        "ansi-styles": "^4.0.0",
+                        "string-width": "^4.1.0",
+                        "strip-ansi": "^6.0.0"
+                    }
+                },
+                "y18n": {
+                    "version": "5.0.5",
+                    "dev": true
+                },
+                "yargs-parser": {
+                    "version": "20.2.6",
+                    "dev": true
+                }
+            }
+        },
+        "yargs-parser": {
+            "version": "13.1.2",
+            "dev": true,
+            "requires": {
+                "camelcase": "^5.0.0",
+                "decamelize": "^1.2.0"
+            }
+        }
+    }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..25ad0694bd221a9e51f3ea3fd513fbfb4c05f343
--- /dev/null
+++ b/package.json
@@ -0,0 +1,30 @@
+{
+    "name": "@schukai/grapesjs-project-manager",
+    "version": "1.0.0",
+    "description": "Grapesjs Project Manager",
+    "main": "dist/@schukai/grapesjs-project-manager.min.js",
+    "repository": {
+        "type": "git",
+        "url": "https://gitlab.schukai.com/oss/minerva/grapesjs-project-manager.git"
+    },
+    "scripts": {
+        "start": "grapesjs-cli serve --entry=source/index.js",
+        "build": "grapesjs-cli build",
+        "build:css": "sass source/styles.scss dist/grapesjs-project-manager.min.css --style compressed",
+        "watch:scss": "sass --watch source/styles.scss dist/grapesjs-project-manager.min.css --style compressed",
+        "bump": "npm version patch -m 'Bump v%s'"
+    },
+    "keywords": [
+        "grapesjs",
+        "plugin"
+    ],
+    "devDependencies": {
+        "grapesjs-cli": "^1.0.14",
+        "sass": "^1.32.8"
+    },
+    "author": "schukai GmbH, Brendon Ngirazi",
+    "license": "AGPL 3.0",
+    "dependencies": {
+        "dom-to-image": "^2.6.0"
+    }
+}
diff --git a/scripts/increase-version.sh b/scripts/increase-version.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2800557cbc33e7067f51cc6562af4b2affe3e64a
--- /dev/null
+++ b/scripts/increase-version.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+### Increments the part of the string
+## $1: version itself
+## $2: number of part: 0 – major, 1 – minor, 2 – patch
+increment_version() {
+  local delimiter=.
+  local array=($(echo "$1" | tr $delimiter '\n'))
+  array[$2]=$((array[$2] + 1))
+  if [ $2 -lt 2 ]; then array[2]=0; fi
+  if [ $2 -lt 1 ]; then array[1]=0; fi
+  echo $(
+    local IFS=$delimiter
+    echo "${array[*]}"
+  )
+}
+
+JSON="${1}"
+VERSION="${2}"
+MODE="${3:-1}"
+
+jq '.version="'$(increment_version "${VERSION}" "${MODE}")'"' "${JSON}" > "${JSON}.new"
+rm "${JSON}"
+mv "${JSON}.new" "${JSON}"
diff --git a/source/commands.js b/source/commands.js
new file mode 100644
index 0000000000000000000000000000000000000000..338fe06591188e7aacdd45f069a0dc1c6e74b812
--- /dev/null
+++ b/source/commands.js
@@ -0,0 +1,88 @@
+import domtoimage from 'dom-to-image';
+
+export default (editor, opts = {}) => {
+    const cm = editor.Commands;
+    const cs = editor.Storage.getCurrentStorage();
+    const mdl = editor.Modal;
+    const pfx = editor.getConfig('stylePrefix');
+    const mdlClass = `${pfx}mdl-dialog-tml`;
+    const mdlClassMd = `${pfx}mdl-dialog-md`;
+
+    editor.domtoimage = domtoimage;
+
+    cm.add('open-templates', {
+        run(editor, sender) {
+            const mdlDialog = document.querySelector(`.${pfx}mdl-dialog`);
+            mdlDialog.classList.add(mdlClass);
+            sender?.set && sender.set('active');
+            mdl.setTitle(opts.mdlTitle);
+            mdl.setContent(editor.TemplateManager.render());
+            mdl.open();
+            mdl.getModel().once('change:open', () => {
+                mdlDialog.classList.remove(mdlClass);
+            });
+        }
+    });
+
+    cm.add('open-settings', {
+        run(editor, sender) {
+            const mdlDialog = document.querySelector(`.${pfx}mdl-dialog`);
+            mdlDialog.classList.add(mdlClassMd);
+            sender?.set && sender.set('active');
+            mdl.setTitle(opts.mdlTitle);
+            mdl.setContent(editor.SettingsApp.render());
+            mdl.open();
+            mdl.getModel().once('change:open', () => {
+                mdlDialog.classList.remove(mdlClassMd);
+            });
+        }
+    });
+
+    cm.add('open-pages', {
+        run(editor) {
+            editor.PagesApp.showPanel();
+        },
+        stop(editor) {
+            editor.PagesApp.hidePanel();
+        }
+    })
+
+    //some magic from gist.github.com/jed/982883
+    const uuidv4 = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
+        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
+    );
+
+    const getJpeg = (node, opts = {}, clb, clbErr) => {
+        domtoimage.toJpeg(node, opts)
+            .then(dataUrl => clb && clb(dataUrl))
+            .catch(err => clbErr && clbErr(err))
+    };
+
+    cm.add('get-uuidv4', () => {
+        if (crypto) {
+            return crypto.randomUUID ? crypto.randomUUID() : uuidv4();
+        }
+    });
+
+    cm.add('take-screenshot', (editor, s, options = { clb(d) { return d } }) => {
+        const el = editor.getWrapper().getEl();
+        getJpeg(el, {
+            quality: opts.quality,
+            height: 1000,
+            'cacheBust': true,
+            style: {
+                'background-color': 'white',
+                ...editor.getWrapper().getStyle()
+            },
+        }, options.clb, opts.onScreenshotError);
+    });
+
+    cm.add('save-as-template', editor => {
+        cs.setIsTemplate(true);
+        editor.store();
+    });
+
+    cm.add('delete-template', editor => {
+        cs.delete(opts.onDelete, opts.onDeleteError);
+    });
+}
\ No newline at end of file
diff --git a/source/consts.js b/source/consts.js
new file mode 100644
index 0000000000000000000000000000000000000000..1edad8b49b918f79cce93d19dd3509bbc256b042
--- /dev/null
+++ b/source/consts.js
@@ -0,0 +1,3 @@
+export const storageIDB = 'indexeddb',
+    storageRemote = 'rest-api',
+    storageFireStore = 'firestore';
\ No newline at end of file
diff --git a/source/index.js b/source/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..caa27948afd7093ae81d227f4436c15aa49a4569
--- /dev/null
+++ b/source/index.js
@@ -0,0 +1,120 @@
+import TemplateManager, { PagesApp, SettingsApp } from './manager';
+import commands from './commands';
+import storage from './storage';
+import en from './locale/en';
+
+export default (editor, opts = {}) => {
+    const options = {
+        ...{
+            // default options
+            // Database name
+            dbName: 'gjs',
+
+            // Collection name
+            objectStoreName: 'projects',
+
+            // Load first template in storage
+            loadFirst: true,
+
+            // Custom load
+            customLoad: false,
+
+            // Add uuid as path parameter to store path for rest-api
+            uuidInPath: true,
+
+            // Indexeddb version schema
+            indexeddbVersion: 5,
+
+            // When template or page is deleted
+            onDelete(res) {
+                console.log('Deleted:', res)
+            },
+
+            // When error onDelete
+            onDeleteError(err) {
+                console.log(err)
+            },
+
+            // On screenshot error
+            onScreenshotError(err) {
+                console.log(err)
+            },
+
+            // Quality of screenshot image from 0 to 1, more quality increases the image size
+            quality: .01,
+
+            // Content for templates modal title
+            mdlTitle: 'Project Manager',
+
+            // Show when no pages yet pages
+            nopages: '<div style="display:flex;align-items:center;padding:50px;margin:auto;">No Projects Yet</div>',
+
+            // Firebase API key
+            apiKey: '',
+
+            // Firebase Auth domain
+            authDomain: '',
+
+            // Cloud Firestore project ID
+            projectId: '',
+
+            // Enable support for offline data persistence
+            enableOffline: true,
+
+            // Firebase app config
+            firebaseConfig: {},
+
+            // Database settings (https://firebase.google.com/docs/reference/js/firebase.firestore.Settings)
+            settings: { timestampsInSnapshots: true },
+
+            // Show estimated project statistics
+            size: false,
+
+            // Send feedback when open is clicked on current page
+            currentPageOpen() {
+                console.log('Current page already open')
+            },
+
+            i18n: {},
+        },
+        ...opts,
+    };
+
+    editor.I18n.addMessages({
+        en,
+        ...options.i18n,
+    });
+
+    // Init and add dashboard object to editor
+    editor.TemplateManager = new TemplateManager(editor, options);
+    editor.PagesApp = new PagesApp(editor, options);
+    editor.SettingsApp = new SettingsApp(editor, options);
+
+    // Load commands
+    commands(editor, options);
+
+    // Load storages
+    storage(editor, options);
+
+    // Load page with index zero
+    editor.on('load', () => {
+        const cs = editor.Storage.getCurrentStorage();
+        const { customLoad } = options;
+        customLoad && typeof customLoad === 'function' && customLoad(editor, cs);
+        !customLoad && cs.loadAll(res => {
+            const firstPage = res[0];
+            if (firstPage && options.loadFirst) {
+                cs.setId(firstPage.id);
+                cs.setName(firstPage.name);
+                cs.setThumbnail(firstPage.thumbnail);
+                cs.setIsTemplate(firstPage.template);
+                editor.load();
+            } else {
+                cs.setId(editor.runCommand('get-uuidv4'));
+                cs.setName(`Default-${cs.currentId.substr(0, 7)}`);
+                options.components && editor.setComponents(options.components);
+                options.style && editor.setStyle(options.style);
+            }
+        });
+    });
+};
\ No newline at end of file
diff --git a/source/locale/en.js b/source/locale/en.js
new file mode 100644
index 0000000000000000000000000000000000000000..590fdfea30fd627729148501095310cf85464682
--- /dev/null
+++ b/source/locale/en.js
@@ -0,0 +1,50 @@
+export default {
+    'grapesjs-project-manager': {
+        templates: {
+            all: 'All',
+            templates: 'Templates',
+            search: 'Search for sites by name or id',
+            open: 'Open',
+            new: 'Enter new page name',
+            create: 'Create',
+            help: 'Select a template, enter project name, then click create. If no template is selected a blank project will be created.',
+            info: 'Site Info',
+            updated: 'Last Updated',
+            pages: 'Pages',
+            created: 'Created At',
+            size: 'Size',
+            actions: 'Actions',
+            titles: {
+                open: 'Select to open site',
+                info: 'Click to sort by site name',
+                updated: 'Click to sort by last update date',
+                pages: 'Click to sort by number of pages',
+                created: 'Click to sort by site creation date',
+                size: 'Click to sort by site size',
+                actions: 'Click to sort by site name',
+                delete: 'Delete',
+                edit: 'Edit',
+            }
+        },
+        pages: {
+            placeholder: 'page name',
+            new: 'New Page +',
+        },
+        settings: {
+            save: 'Save',
+            generate: 'Generate',
+            help: 'Enter url, or generate thumbnail.',
+            labels: {
+                name: 'Name',
+                thumbnail: 'Thumbnail',
+                description: 'Description',
+                template: 'Template'
+            },
+            placeholders: {
+                name: 'Name...',
+                thumbnail: 'Thumbnail...',
+                description: 'Description...',
+            },
+        },
+    }
+}
\ No newline at end of file
diff --git a/source/manager/index.js b/source/manager/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..1bb79df11db1280fce773655aa2b6148a96eb5c5
--- /dev/null
+++ b/source/manager/index.js
@@ -0,0 +1,6 @@
+import TemplateManager from "./templates";
+import PagesApp from "./pages";
+import SettingsApp from "./settings";
+
+export default TemplateManager;
+export { TemplateManager, PagesApp, SettingsApp };
\ No newline at end of file
diff --git a/source/manager/pages.js b/source/manager/pages.js
new file mode 100644
index 0000000000000000000000000000000000000000..325ab804aeaba99f0ba8a8f71ceb63d7c76858a1
--- /dev/null
+++ b/source/manager/pages.js
@@ -0,0 +1,160 @@
+import UI from '../utils/ui';
+
+export default class PagesApp extends UI {
+    constructor(editor, opts = {}) {
+        super(editor, opts);
+        this.addPage = this.addPage.bind(this);
+        this.selectPage = this.selectPage.bind(this);
+        this.removePage = this.removePage.bind(this);
+        this.isSelected = this.isSelected.bind(this);
+        this.handleNameInput = this.handleNameInput.bind(this);
+        this.openEdit = this.openEdit.bind(this);
+
+        /* Set initial app state */
+        this.state = {
+            editablePageId: '',
+            isShowing: true,
+            nameText: '',
+            pages: [],
+            loading: false
+        };
+    }
+
+    get editableId() {
+        return this.state.editablePageId;
+    }
+
+    onRender() {
+        const { pm, setState, editor } = this;
+        setState({
+            loading: true
+        });
+        setState({
+            pages: [...pm.getAll()]
+        });
+        editor.on('page', () => {
+            setState({
+                pages: [...pm.getAll()]
+            })
+        });
+        setState({
+            loading: false
+        });
+    }
+
+    isSelected(page) {
+        return this.pm.getSelected().id === page.id;
+    }
+
+    selectPage(e) {
+        this.pm.select(e.currentTarget.dataset.key);
+        this.update();
+    }
+
+    removePage(e) {
+        this.pm.remove(e.currentTarget.dataset.key);
+        this.update();
+    }
+
+    openEdit(e) {
+        const { editor } = this;
+        this.setStateSilent({
+            editablePageId: e.currentTarget.dataset.key
+        });
+        editor.Modal.close();
+        editor.SettingsApp.setTab('page');
+        editor.runCommand('open-settings');
+    }
+
+    editPage(id, name) {
+        const currentPage = this.pm.get(id);
+        currentPage?.set('name', name);
+        this.update()
+    }
+
+    addPage() {
+        const { pm } = this;
+        const { nameText } = this.state
+        if (!nameText) return;
+        pm.add({
+            name: nameText,
+            component: ''
+        });
+        this.update();
+    }
+
+    handleNameInput(e) {
+        this.setStateSilent({
+            nameText: e.target.value.trim()
+        })
+    }
+
+    renderPagesList() {
+        const { pages, loading } = this.state;
+        const { opts, isSelected } = this;
+
+        if (loading) return opts.loader || '<div>Loading pages...</div>';
+
+        return pages.map((page, i) => `<div 
+                data-id="${i}" 
+                data-key="${page.id}"  
+                class="page ${isSelected(page) ? 'selected' : ''}"
+            >
+                <i class="fa fa-file-o" style="margin:5px;"></i>
+                ${page.get('name') || page.id}
+                ${isSelected(page) ? '' : `<span class="page-close" data-key="${page.id}">&Cross;</span>`}
+                <span class="page-edit" data-key="${page.id}"><i class="fa fa-hand-pointer-o"></i></span>
+            </div>`).join("\n");
+    }
+
+    update() {
+        this.$el?.find('.pages').html(this.renderPagesList());
+        this.$el?.find('.page').on('click', this.selectPage);
+        this.$el?.find('.page-edit').on('click', this.openEdit);
+        this.$el?.find('.page-close').on('click', this.removePage);
+    }
+
+    render() {
+        const { $, editor } = this;
+
+        // Do stuff on render
+        this.onRender();
+        this.$el?.remove();
+
+        const cont = $(`<div style="display: ${this.state.isShowing ? 'flex' : 'none'};" class="pages-wrp">
+                <div class="pages">
+                    ${this.renderPagesList()}
+                </div>
+                <div  class="flex-row">
+                    <input 
+                        class="tm-input sm" 
+                        type="text" 
+                        placeholder="${editor.I18n.t('grapesjs-project-manager.pages.placeholder')}" 
+                    />
+                </div>
+                <div class="add-page">
+                    ${editor.I18n.t('grapesjs-project-manager.pages.new')}
+                </div>
+            </div>`);
+        cont.find('.add-page').on('click', this.addPage);
+        cont.find('input').on('change', this.handleNameInput);
+
+        this.$el = cont;
+        return cont;
+    }
+
+    get findPanel() {
+        return this.editor.Panels.getPanel('views-container');
+    }
+
+    showPanel() {
+        this.state.isShowing = true;
+        this.findPanel?.set('appendContent', this.render()).trigger('change:appendContent');
+        this.update();
+    }
+
+    hidePanel() {
+        this.state.isShowing = false;
+        this.render();
+    }
+}
\ No newline at end of file
diff --git a/source/manager/settings.js b/source/manager/settings.js
new file mode 100644
index 0000000000000000000000000000000000000000..d72fd1fab4104a8af8500293dea2f6c98801654a
--- /dev/null
+++ b/source/manager/settings.js
@@ -0,0 +1,169 @@
+import UI from '../utils/ui';
+
+export default class SettingsApp extends UI {
+    constructor(editor, opts = {}) {
+        super(editor, opts);
+        this.handleSave = this.handleSave.bind(this);
+        this.handleThumbnail = this.handleThumbnail.bind(this);
+        this.handleThumbnailInput = this.handleThumbnailInput.bind(this);
+
+        /* Set initial app state */
+        this.state = {
+            tab: 'page',
+            loading: false
+        };
+    }
+
+    setTab(tab) {
+        this.state.tab = tab;
+    }
+
+    update() {
+        const { $el } = this;
+        $el?.find('#settings').html(this.renderSettings());
+        $el?.find('#generate').on('click', this.handleThumbnail);
+        $el?.find('input#thumbnail').on('change', this.handleThumbnailInput);
+    }
+
+    onRender() {
+        const { setState } = this;
+        setState({
+            loading: true
+        });
+        //? Setup code here 
+        setState({
+            loading: false
+        });
+    }
+
+    handleSave(e) {
+        const { $el, editor } = this;
+        const { tab } = this.state;
+        if (tab === 'page') {
+            const id = editor.PagesApp.editableId;
+            const name = $el?.find('input.name').val().trim();
+            id && editor.PagesApp.editPage(id, name);
+        } else {
+            const id = editor.TemplateManager.editableId;
+            const thumbnail = $el?.find('input.thumbnail').val().trim();
+            const name = $el?.find('input.name').val().trim();
+            const description = $el?.find('input.desc').val().trim();
+            const template = $el?.find('input.template').get(0).checked;
+            id && editor.TemplateManager.handleEdit({ id, thumbnail, name, description, template });
+        }
+        editor.Modal.close();
+    }
+
+    handleThumbnail(e) {
+        const { editor, $el } = this;
+        editor.runCommand('take-screenshot', {
+            clb(dataUrl) {
+                $el?.find('input.thumbnail').val(dataUrl);
+                $el?.find('img').attr('src', dataUrl);
+            }
+        })
+    }
+
+    handleThumbnailInput(e) {
+        this.$el?.find('img').attr('src', e.target.value.trim());
+    }
+
+    renderSettings() {
+        const { tab, loading } = this.state;
+        const { opts, pfx, pm, editor } = this;
+
+        if (loading) return opts.loader || '<div>Loading settings...</div>';
+
+        if (tab === 'page') {
+            const page = pm.get(editor.PagesApp.editableId);
+            const value = page?.get('name') || page?.id || '';
+            return `<label for="name">
+                    ${editor.I18n.t('grapesjs-project-manager.settings.labels.name')}
+                </label>
+                <div class="flex-row">
+                    <input 
+                        class="name tm-input" 
+                        value="${value}" 
+                        placeholder="${editor.I18n.t('grapesjs-project-manager.settings.placeholders.name')}"/>
+                </div>`
+        } else {
+            const clb = site => site.id === editor.TemplateManager.editableId;
+            const site = editor.TemplateManager.allSites.find(clb);
+            return `<div class="${pfx}tip-about ${pfx}four-color">
+                    ${editor.I18n.t('grapesjs-project-manager.settings.help')}
+                </div>
+                <label for="thumbnail">
+                    ${editor.I18n.t('grapesjs-project-manager.settings.labels.thumbnail')}
+                </label>
+                <div class="flex-row">
+                    <input 
+                        id="thumbnail" 
+                        class="thumbnail tm-input" 
+                        value="${site?.thumbnail || ''}" 
+                        placeholder="${editor.I18n.t('grapesjs-project-manager.settings.placeholders.thumbnail')}"
+                    />
+                </div>
+                <div class="flex-row" style="margin-bottom:15px;">
+                    <div class="site-screenshot">
+                        <img src="${site?.thumbnail || ''}" alt="screenshot" />
+                    </div>
+                    <button id="generate" class="primary-button">
+                        ${editor.I18n.t('grapesjs-project-manager.settings.generate')}
+                    </button>
+                </div>
+                <label for="name">
+                    ${editor.I18n.t('grapesjs-project-manager.settings.labels.name')}
+                </label>
+                <div class="flex-row">
+                    <input 
+                        id="name" 
+                        class="name tm-input" 
+                        value="${site?.name || ''}" 
+                        placeholder="${editor.I18n.t('grapesjs-project-manager.settings.placeholders.name')}"
+                    />
+                </div>
+                <label for="desc">
+                    ${editor.I18n.t('grapesjs-project-manager.settings.labels.description')}
+                </label>
+                <div class="flex-row">
+                    <input 
+                        id="desc" 
+                        class="desc tm-input" 
+                        value="${site?.description || ''}" 
+                        placeholder="${editor.I18n.t('grapesjs-project-manager.settings.placeholders.description')}"
+                    />
+                </div>
+                <div class="flex-row group">
+                    <input id="template" class="template" type="checkbox" ${site?.template ? 'checked' : ''}/>
+                    <label for="template">
+                        ${editor.I18n.t('grapesjs-project-manager.settings.labels.template')}
+                    </label>
+                </div>`
+        }
+    }
+
+    render() {
+        const { $, editor } = this;
+
+        // Do stuff on render
+        this.onRender();
+        this.$el?.remove();
+
+        const cont = $(`<div class="app">
+                <div id="settings">
+                    ${this.renderSettings()}
+                </div>
+                <div class="flex-row">
+                    <button id="save" class="primary-button">
+                        ${editor.I18n.t('grapesjs-project-manager.settings.save')}
+                    </button>
+                </div>
+            </div>`);
+        cont.find('#save').on('click', this.handleSave);
+        cont.find('#generate').on('click', this.handleThumbnail);
+        cont.find('input#thumbnail').on('change', this.handleThumbnailInput);
+
+        this.$el = cont;
+        return cont;
+    }
+}
\ No newline at end of file
diff --git a/source/manager/templates.js b/source/manager/templates.js
new file mode 100644
index 0000000000000000000000000000000000000000..6b7d8fea0e7422297b16b592821eb82b11a9bd36
--- /dev/null
+++ b/source/manager/templates.js
@@ -0,0 +1,428 @@
+import ago from '../utils/timeago';
+import UI from '../utils/ui';
+import objSize from '../utils/objsize';
+import { sortByDate, sortByName, sortByPages, sortBySize, matchText } from '../utils/sort';
+
+export default class TemplateManager extends UI {
+    constructor(editor, opts = {}) {
+        super(editor, opts);
+        this.handleSort = this.handleSort.bind(this);
+        this.handleFilterInput = this.handleFilterInput.bind(this);
+        this.handleNameInput = this.handleNameInput.bind(this);
+        this.handleOpen = this.handleOpen.bind(this);
+        this.handleCreate = this.handleCreate.bind(this);
+        this.handleDelete = this.handleDelete.bind(this);
+        this.openEdit = this.openEdit.bind(this);
+
+        /* Set initial app state */
+        this.state = {
+            editableProjectId: '',
+            projectId: '',
+            tab: 'pages',
+            sites: [],
+            nameText: '',
+            filterText: '',
+            loading: false,
+            sortBy: 'published_at',
+            sortOrder: 'desc'
+        };
+    }
+
+    get editableId() {
+        return this.state.editableProjectId;
+    }
+
+    get allSites() {
+        return this.state.sites;
+    }
+
+    get allSitesSize() {
+        return objSize(this.state.sites);
+    }
+
+    onRender() {
+        const { setState, cs } = this;
+
+        /* Set request loading state */
+        setState({
+            loading: true
+        });
+
+        /* Fetch sites from storage API */
+        cs.loadAll(sites => {
+            /* Set sites and turn off loading state */
+            setState({
+                sites,
+                loading: false
+            });
+        },
+            err => console.log("Error", err));
+    }
+
+    handleFilterInput(e) {
+        this.setState({
+            filterText: e.target.value.trim()
+        });
+    }
+
+    handleNameInput(e) {
+        this.setStateSilent({
+            nameText: e.target.value.trim()
+        })
+    }
+
+    handleSort(e) {
+        const { sortOrder } = this.state;
+        if (e.target && e.target.dataset) {
+            this.setState({
+                sortBy: e.target.dataset.sort,
+                // invert sort order
+                sortOrder: sortOrder === 'desc' ? 'asc' : 'desc'
+            });
+        }
+    }
+
+    handleTabs(e) {
+        const { target } = e;
+        const { $el, pfx, $ } = this;
+        $el.find(`.${pfx}tablinks`).removeClass('active');
+        $(target).addClass('active');
+        if (target.id === 'pages') {
+            this.setState({ tab: 'pages' });
+        } else {
+            this.setState({ tab: 'templates' });
+        }
+    }
+
+    handleOpen(e) {
+        const { editor, cs } = this;
+        const { projectId } = this.state;
+        if (!projectId || projectId === cs.currentId) {
+            this.opts.currentPageOpen()
+            return;
+        }
+        cs.setId(projectId);
+        editor.load(res => {
+            cs.setName(res.name);
+            cs.setThumbnail(res.thumbnail || '');
+            cs.setIsTemplate(res.template);
+            cs.setDescription(res.description || 'No description');
+            editor.Modal.close();
+        });
+    }
+
+    handleCreate(e) {
+        const { editor, cs } = this;
+        const { projectId, nameText } = this.state;
+        const id = editor.runCommand('get-uuidv4');
+        const name = nameText || 'New-' + id.substr(0, 8);
+        const def = {
+            id,
+            name,
+            template: false,
+            thumbnail: '',
+            styles: '[]',
+            description: 'No description',
+        };
+        def[`${this.id}pages`] = `[{"id": "${crypto.randomUUID().substr(0, 8)}", "name": "index"}]`;
+        def[`${this.id}styles`] = '[]';
+        def[`${this.id}assets`] = '[]';
+        if (!projectId) {
+            cs.setId(id);
+            cs.store(def, res => {
+                cs.setIsTemplate(false);
+                editor.load(res => {
+                    cs.setId(res.id);
+                    cs.setName(res.name);
+                    cs.setThumbnail(res.thumbnail || '');
+                    cs.setDescription(res.description || 'No description');
+                    editor.Modal.close();
+                });
+            });
+        } else {
+            cs.setId(projectId);
+            cs.setIsTemplate(false);
+            editor.load(res => {
+                cs.setId(id);
+                cs.setName(name);
+                cs.setThumbnail(res.thumbnail || '');
+                cs.setDescription(res.description || 'No description');
+                editor.Modal.close();
+            });
+        }
+    }
+
+    openEdit(e) {
+        const { editor, setStateSilent } = this;
+        setStateSilent({
+            editableProjectId: e.currentTarget.dataset.id
+        });
+        editor.Modal.close();
+        editor.SettingsApp.setTab('project');
+        editor.runCommand('open-settings');
+    }
+
+    handleEdit(data) {
+        this.cs.update({ ...data, updated_at: Date() });
+    }
+
+    handleDelete(e) {
+        const { cs, setState, opts } = this;
+        cs.delete(res => {
+            opts.onDelete(res);
+            cs.loadAll(sites => setState({ sites }),
+                err => console.log("Error", err));
+        }, opts.onDeleteError, e.currentTarget.dataset.id);
+    }
+
+    renderSiteList() {
+        const { sites, tab, filterText, loading, sortBy, sortOrder } = this.state;
+        const { pfx, opts, cs, editor } = this;
+
+        if (loading) return opts.loader || '<div>Loading sites...</div>';
+
+        if (!sites.length) return opts.nosites || '<div>No Sites</div>';
+
+        let order
+        if (sortBy === 'id') {
+            order = sortByName(sortBy, sortOrder);
+        } else if (sortBy === 'updated_at' || sortBy === 'created_at') {
+            order = sortByDate(sortBy, sortOrder);
+        } else if (sortBy === 'pages') {
+            order = sortByPages(this.id + sortBy, sortOrder);
+        } else if (sortBy === 'size') {
+            order = sortBySize(sortOrder);
+        }
+
+        const sortedSites = sites.sort(order);
+
+        let matchingSites = sortedSites.filter(site => {
+            // No search query. Show all
+            if (!filterText && tab === 'pages') {
+                return true;
+            }
+
+            const { id, name, template } = site;
+            if (
+                (matchText(filterText, id) ||
+                    matchText(filterText, name)) &&
+                tab === 'pages'
+            ) {
+                return true;
+            }
+
+            if (tab === 'templates' && template) {
+                return true;
+            }
+
+            // no match!
+            return false;
+        })
+            .map((site, i) => {
+                const {
+                    id,
+                    name,
+                    description,
+                    thumbnail,
+                    created_at,
+                    updated_at
+                } = site;
+                const size = objSize(site);
+                const pages = JSON.parse(site[`${this.id}pages`]);
+                const time = updated_at ? ago(new Date(updated_at).getTime()) : 'NA';
+                const createdAt = created_at ? ago(new Date(created_at).getTime()) : 'NA';
+                const pageNames = pages.map(page => page.name).join(', ');
+                return `<div 
+                    class="site-wrapper ${cs.currentId === id ? 'open' : ''}" 
+                    key="${i}" 
+                    data-id="${id}" 
+                    title="${editor.I18n.t('grapesjs-project-manager.templates.titles.open')}">
+                        <div class="site-screenshot">
+                            <img src="${thumbnail}" alt="" />
+                        </div>
+                        <div class="site-info">
+                            <h2>
+                                ${name}
+                            </h2>
+                            <div class="site-meta">
+                                ${description}
+                            </div>
+                        </div>
+                        <div class="site-update-time">${time}</div>
+                        <div class="site-pages">
+                            <div title="${pageNames || id}">
+                                ${pages.length || 1}
+                            </div>
+                        </div>
+                        <div class="site-create-time">${createdAt}</div>
+                        ${opts.size ? `<div class="site-size" title="${size} KB">
+                            ${size.toFixed(2)} KB
+                        </div>` : ''}
+                        <div class="site-actions">
+                            <i class="${pfx}caret-icon fa fa-hand-pointer-o edit" title="${editor.I18n.t('grapesjs-project-manager.templates.titles.edit')}" data-id="${id}"></i>
+                            ${!(cs.currentId === id) ? `<i class="${pfx}caret-icon fa fa-trash-o delete" title="${editor.I18n.t('grapesjs-project-manager.templates.titles.delete')}" data-id="${id}"></i>` : ''}
+                        </div>
+                    </div>`;
+            }).join('\n');
+
+        if (!matchingSites.length) {
+            if (tab === 'templates') return opts.nosites || '<div>No Templates Available.</div>';
+            matchingSites = `<div>
+                    <h3>
+                        No '${filterText}' examples found. Clear your search and try again.
+                    </h3>
+                </div>`;
+        }
+        return matchingSites;
+    }
+
+    renderSiteActions() {
+        const { editor } = this;
+
+        return this.state.tab === 'pages' ?
+            `<div  class="flex-row">
+                <input 
+                    class="search tm-input" 
+                    placeholder="${editor.I18n.t('grapesjs-project-manager.templates.search')}"
+                />
+                <button id="open" class="primary-button">
+                    ${editor.I18n.t('grapesjs-project-manager.templates.open')}
+                </button>
+            </div>` :
+            `<div class="${this.pfx}tip-about ${this.pfx}four-color">
+                ${editor.I18n.t('grapesjs-project-manager.templates.help')}
+            </div>
+            <div class="flex-row">
+                <input 
+                    class="name tm-input" 
+                    placeholder="${editor.I18n.t('grapesjs-project-manager.templates.new')}"
+                />
+                <button id="create" class="primary-button">
+                    ${editor.I18n.t('grapesjs-project-manager.templates.create')}
+                </button>
+            </div>`;
+    }
+
+    renderThumbnail(thumbnail, page) {
+        const def = `<img src="${thumbnail}" alt="" />`;
+        if (thumbnail) return def;
+        else if (page.html) return `<svg xmlns="http://www.w3.org/2000/svg" class="template-preview" viewBox="0 0 1300 1100" width="99%" height="220">
+                <foreignObject width="100%" height="100%" style="pointer-events:none">
+                    <div xmlns="http://www.w3.org/1999/xhtml">
+                        ${page.html + '<style scoped>' + page.css + '</style>'}
+                    </div>
+                </foreignObject>
+            </svg>`;
+        return def;
+    }
+
+    update() {
+        this.$el?.find('#site-list').html(this.renderSiteList());
+        this.$el?.find('#tm-actions').html(this.renderSiteActions());
+        const sites = this.$el?.find('.site-wrapper');
+        const search = this.$el?.find('input.search');
+        const name = this.$el?.find('input.name');
+        this.setStateSilent({ projectId: '' });
+        if (sites) {
+            sites.on('click', e => {
+                sites.removeClass('selected');
+                this.$(e.currentTarget).addClass('selected');
+                this.setStateSilent({ projectId: e.currentTarget.dataset.id });
+            });
+        }
+        if (search) {
+            search.val(this.state.filterText);
+            search.on('change', this.handleFilterInput);
+        }
+        if (name) {
+            name.val(this.state.nameText);
+            name.on('change', this.handleNameInput);
+        }
+        this.$el?.find('#open').on('click', this.handleOpen);
+        this.$el?.find('#create').on('click', this.handleCreate);
+        this.$el?.find('i.edit').on('click', this.openEdit);
+        this.$el?.find('i.delete').on('click', this.handleDelete);
+    }
+
+    render() {
+        const { $, pfx, opts, editor } = this;
+        const { tab } = this.state
+
+        // Do stuff on render
+        this.onRender();
+        this.$el?.remove();
+
+        /* Show admin UI */
+        const cont = $(`<div class="app">
+                <div class="contents">
+                    <div class="${pfx}tab">
+                        <button id="pages" class="${pfx}tablinks ${tab === 'pages' ? 'active' : ''}">
+                            ${editor.I18n.t('grapesjs-project-manager.templates.all')}
+                        </button>
+                        <button id="templates" class="${pfx}tablinks ${tab === 'templates' ? 'active' : ''}"">
+                            ${editor.I18n.t('grapesjs-project-manager.templates.templates')}
+                        </button>
+                    </div>
+                    <div id="tm-actions">
+                        ${this.renderSiteActions()}
+                    </div>
+                    <div class="site-wrapper-header">
+                        <div
+                            class="site-screenshot-header header"
+                            data-sort="id"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.info')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.info')}
+                        </div>
+                        <div
+                            class="site-info header"
+                            data-sort="id"
+                        ></div>
+                        <div
+                            class="site-update-time header"
+                            data-sort="updated_at"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.updated')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.updated')}
+                        </div>
+                        <div
+                            class="site-pages header"
+                            data-sort="pages"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.pages')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.pages')}
+                        </div>
+                        <div
+                            class="site-create-time header"
+                            data-sort="created_at"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.created')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.created')}
+                        </div>
+                        ${opts.size ? `<div
+                            class="site-size header"
+                            data-sort="size"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.size')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.size')}
+                        </div>` : ''}
+                        <div
+                            class="site-actions header"
+                            data-sort="id"
+                            title="${editor.I18n.t('grapesjs-project-manager.templates.titles.actions')}"
+                        >
+                            ${editor.I18n.t('grapesjs-project-manager.templates.actions')}
+                        </div>
+                    </div>
+                    <div id="site-list">
+                        ${this.renderSiteList()}
+                    </div>
+                </div>
+            </div>`);
+        cont.find('.header').on('click', this.handleSort);
+        cont.find('#pages, #templates').on('click', this.handleTabs);
+
+        this.$el = cont;
+        return cont;
+    }
+}
\ No newline at end of file
diff --git a/source/storage/firestore.js b/source/storage/firestore.js
new file mode 100644
index 0000000000000000000000000000000000000000..5996fd9d3609b8988015d723057421216b6e4233
--- /dev/null
+++ b/source/storage/firestore.js
@@ -0,0 +1,147 @@
+import { storageFireStore } from '../consts';
+
+export default (editor, opts = {}) => {
+    const sm = editor.StorageManager;
+    const storageName = storageFireStore;
+
+    let db;
+    let doc;
+    let collection;
+    const { apiKey, authDomain, projectId } = opts;
+    const dbSettings = opts.settings;
+    const onError = err => sm.onError(storageName, err.code || err);
+
+    const getDoc = () => doc;
+
+    const getAsyncCollection = (clb) => {
+        if (collection) return clb(collection);
+        if (!firebase.apps.length) {
+            firebase.initializeApp({ apiKey, authDomain, projectId, ...opts.firebaseConfig });
+            db = firebase.firestore();
+            db.settings(dbSettings);
+        }
+        else {
+            firebase.app();
+            db = firebase.firestore();
+            db.settings(dbSettings);
+        }
+
+        const callback = () => {
+            collection = db.collection(opts.objectStoreName);
+            clb(collection);
+        }
+
+        callback();
+
+        //if (opts.enableOffline) {
+        //    db.enablePersistence().then(callback).catch(onError);
+        //} else {
+        //    callback();
+        //}
+    };
+
+    const getAsyncDoc = (clb) => {
+        getAsyncCollection(cll => {
+            const cs = editor.Storage.getCurrentStorage();
+            doc = cll.doc(cs.currentId);
+            clb(doc);
+        });
+    };
+
+    sm.add(storageName, {
+        currentName: 'Default',
+        currentId: 'uuidv4',
+        currentThumbnail: '',
+        isTemplate: false,
+        description: 'No description',
+        getDoc,
+
+        setDocId(id) {
+            this.currentId = id;
+        },
+
+        setId(id) {
+            this.currentId = id;
+        },
+
+        setName(name) {
+            this.currentName = name;
+        },
+
+        setThumbnail(thumbnail) {
+            this.currentThumbnail = thumbnail;
+        },
+
+        setIsTemplate(isTemplate) {
+            this.isTemplate = !!isTemplate;
+        },
+
+        setDescription(description) {
+            this.description = description;
+        },
+
+        load(keys, clb, clbError) {
+            getAsyncDoc(doc => {
+                doc.get()
+                    .then(doc => {
+                        if (doc.exists) clb(doc.data());
+                        else clb({});
+                    })
+                    .catch(clbError);
+            });
+        },
+
+        loadAll(clb, clbError) {
+            getAsyncCollection(cll => {
+                cll.get()
+                    .then(docs => {
+                        const data = [];
+                        docs.forEach(doc => data.push(doc.data()));
+                        clb(data);
+                    })
+                    .catch(clbError);
+            });
+        },
+
+        store(data, clb, clbError) {
+            getAsyncCollection(cll => {
+                cll.doc(data.id || this.currentId).set({
+                    id: this.currentId,
+                    name: this.currentName,
+                    template: this.isTemplate,
+                    thumbnail: this.currentThumbnail,
+                    description: this.description,
+                    updated_at: Date(),
+                    ...data
+                })
+                    .then(clb)
+                    .catch(clbError);
+            });
+        },
+
+        update(data, clb, clbError) {
+            const { id, ..._data } = data;
+            getAsyncCollection(cll => {
+                cll.doc(id).set(_data, { merge: true })
+                    .then(clb)
+                    .catch(clbError);
+            });
+        },
+
+        delete(clb, clbError, index) {
+            if (!index) {
+                getAsyncDoc(doc => {
+                    doc.delete()
+                        .then(clb)
+                        .catch(clbError);
+                });
+            } else {
+                getAsyncCollection(cll => {
+                    cll.doc(index).delete()
+                        .then(clb)
+                        .catch(clbError);
+                });
+            }
+        }
+    });
+}
\ No newline at end of file
diff --git a/source/storage/index.js b/source/storage/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..def47d0441b866dc41c13d20847fa432e3f2cbcf
--- /dev/null
+++ b/source/storage/index.js
@@ -0,0 +1,14 @@
+import indexeddb from './indexeddb';
+import remote from './remote';
+import firestore from './firestore';
+
+export default (editor, opts = {}) => {
+    // Load indexeddb storage
+    indexeddb(editor, opts);
+
+    // Load remote storage
+    remote(editor, opts);
+
+    // Load firestore storage
+    firestore(editor, opts);
+}
\ No newline at end of file
diff --git a/source/storage/indexeddb.js b/source/storage/indexeddb.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a2671c1707cfdc6e746ee2017256aac3fb2f80a
--- /dev/null
+++ b/source/storage/indexeddb.js
@@ -0,0 +1,131 @@
+import { storageIDB } from '../consts';
+
+export default (editor, opts = {}) => {
+    let db;
+    const sm = editor.StorageManager;
+    const storageName = storageIDB;
+    const objsName = opts.objectStoreName;
+
+    // Functions for DB retrieving
+    const getDb = () => db;
+    const getAsyncDb = (clb) => {
+        if (db) {
+            clb(db);
+        } else {
+            const indexedDB = window.indexedDB || window.mozIndexedDB ||
+                window.webkitIndexedDB || window.msIndexedDB;
+            const request = indexedDB.open(opts.dbName, opts.indexeddbVersion);
+            const onError = () => sm.onError(storageName, request.errorCode);
+            request.onerror = onError;
+            request.onsuccess = () => {
+                db = request.result;
+                db.onerror = onError;
+                clb(db);
+            };
+            request.onupgradeneeded = e => {
+                const objs = e.currentTarget.result.createObjectStore(objsName, { keyPath: 'id' });
+                objs.createIndex('name', 'name', { unique: false });
+            };
+        }
+    };
+
+    // Functions for object store retrieving
+    const getObjectStore = () => {
+        return db.transaction([objsName], 'readwrite').objectStore(objsName);
+    };
+    const getAsyncObjectStore = clb => {
+        if (db) {
+            clb(getObjectStore());
+        } else {
+            getAsyncDb(db => clb(getObjectStore()))
+        }
+    };
+
+    // Add custom storage to the editor
+    sm.add(storageName, {
+        currentName: 'Default',
+        currentId: 'uuidv4',
+        currentThumbnail: '',
+        isTemplate: false,
+        description: 'No description',
+        getDb,
+
+        getObjectStore,
+
+        setId(id) {
+            this.currentId = id;
+        },
+
+        setName(name) {
+            this.currentName = name;
+        },
+
+        setThumbnail(thumbnail) {
+            this.currentThumbnail = thumbnail;
+        },
+
+        setIsTemplate(isTemplate) {
+            this.isTemplate = !!isTemplate;
+        },
+
+        setDescription(description) {
+            this.description = description;
+        },
+
+        load(keys, clb, clbErr) {
+            getAsyncObjectStore(objs => {
+                const request = objs.get(this.currentId);
+                request.onerror = clbErr;
+                request.onsuccess = () => {
+                    clb && clb(request.result);
+                };
+            });
+        },
+
+        loadAll(clb, clbErr) {
+            getAsyncObjectStore(objs => {
+                const request = objs.getAll();
+                request.onerror = clbErr;
+                request.onsuccess = () => {
+                    clb && clb(request.result);
+                };
+            });
+        },
+
+        store(data, clb, clbErr) {
+            getAsyncObjectStore(objs => {
+                const request = objs.put({
+                    id: this.currentId,
+                    name: this.currentName,
+                    template: this.isTemplate,
+                    thumbnail: this.currentThumbnail,
+                    description: this.description,
+                    updated_at: Date(),
+                    ...data
+                });
+                request.onerror = clbErr;
+                request.onsuccess = clb;
+            });
+        },
+
+        update(data, clb, clbErr) {
+            const { id, ..._data } = data;
+            getAsyncObjectStore(objs => {
+                const request = objs.get(id);
+                request.onerror = clbErr;
+                request.onsuccess = () => {
+                    objs.put({ id, ...request.result, ..._data });
+                    clb && clb(request.result);
+                };
+            });
+        },
+
+        delete(clb, clbErr, index) {
+            getAsyncObjectStore(objs => {
+                const request = objs.delete(index || this.currentId);
+                request.onerror = clbErr;
+                request.onsuccess = clb;
+            });
+        }
+    });
+}
\ No newline at end of file
diff --git a/source/storage/remote.js b/source/storage/remote.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a8e7f18aca0c1db2e90f1f3b3a19fa8442f61c1
--- /dev/null
+++ b/source/storage/remote.js
@@ -0,0 +1,87 @@
+import { storageRemote } from '../consts';
+
+export default (editor, opts = {}) => {
+    const sm = editor.StorageManager;
+    const storageName = storageRemote;
+    const remote = sm.get('remote');
+
+    // Add custom storage to the editor
+    sm.add(storageName, {
+        currentName: 'Default',
+        currentId: 'uuidv4',
+        currentThumbnail: '',
+        isTemplate: false,
+        description: 'No description',
+
+        setId(id) {
+            this.currentId = id;
+        },
+
+        setName(name) {
+            this.currentName = name;
+        },
+
+        setThumbnail(thumbnail) {
+            this.currentThumbnail = thumbnail;
+        },
+
+        setIsTemplate(isTemplate) {
+            this.isTemplate = !!isTemplate;
+        },
+
+        setDescription(description) {
+            this.description = description;
+        },
+
+        load(keys, clb, clbErr) {
+            const urlLoad = remote.get('urlLoad');
+            const id = urlLoad.endsWith('/') ? this.currentId : `/${this.currentId}`;
+            remote.set({ urlLoad: urlLoad + id });
+            remote.load(keys, clb, clbErr);
+            remote.set({ urlLoad });
+        },
+
+        loadAll(clb, clbErr) {
+            remote.load({}, clb, clbErr);
+        },
+
+        store(data, clb, clbErr) {
+            const urlStore = remote.get('urlStore');
+            const id = urlStore.endsWith('/') ? this.currentId : `/${this.currentId}`;
+            opts.uuidInPath && remote.set({ urlStore: urlStore + id });
+            remote.store({
+                id: this.currentId,
+                name: this.currentName,
+                template: this.isTemplate,
+                thumbnail: this.currentThumbnail,
+                description: this.description,
+                updated_at: Date(),
+                ...data
+            }, clb, clbErr);
+            remote.set({ urlStore });
+        },
+
+        update(data, clb, clbErr) {
+            const urlLoad = remote.get('urlLoad');
+            let { id } = data;
+            id = urlLoad.endsWith('/') ? id : `/${id}`;
+            remote.set({ urlLoad: urlLoad + id });
+            remote.load({}, res => {
+                const body = { ...res, ...data };
+                const method = 'post';
+                const urlUpdate = remote.get('urlStore');
+                id = data.id;
+                id = urlUpdate.endsWith('/') ? id : `/${id}`;
+                remote.request(urlUpdate + id, { method, body }, clb, clbErr);
+            }, clbErr);
+            remote.set({ urlLoad });
+        },
+
+        delete(clb, clbErr, index) {
+            const urlDelete = remote.get('urlDelete');
+            let id = index || this.currentId;
+            id = urlDelete.endsWith('/') ? id : `/${id}`;
+            remote.request(urlDelete + id, { method: 'delete' }, clb, clbErr);
+        }
+    });
+}
\ No newline at end of file
diff --git a/source/styles.scss b/source/styles.scss
new file mode 100644
index 0000000000000000000000000000000000000000..bf40f5ff8e9e732196a8fc5b8ca88a33375227c3
--- /dev/null
+++ b/source/styles.scss
@@ -0,0 +1,440 @@
+/* Class names prefixes */
+$prefix: 'gjs-' !default;
+/* Main color */
+$mainColor: #936a9b;
+
+:root {
+    --border-color: rgba(0, 0, 0, 0.15);
+    --background-color: #3c4a49;
+
+    --background-box-title: #263332;
+}
+
+.app {
+    margin: 20px;
+    margin-top: 30px;
+    animation: fadein .3s;
+
+    a {
+        text-decoration: none;
+        color: $mainColor;
+    }
+
+    h1 {
+        margin-bottom: 30px;
+    }
+
+    h2 {
+        color: $mainColor;
+    }
+
+    button {
+        cursor: pointer;
+        background-color: #424242;
+        font-family: inherit;
+        color: #fff;
+        display: inline-flex;
+        align-items: center;
+        justify-content: center;
+        font-size: 15px;
+        border: 1px solid #e9ebeb;
+        border-bottom-color: #e1e3e3;
+        border-radius: 4px;
+        background-color: #fff;
+        color: rgba(14, 30, 37, .87);
+        box-shadow: 0 2px 4px 0 rgba(14, 30, 37, .12);
+        transition: all .2s ease;
+        transition-property: background-color, color, border, box-shadow;
+        outline: 0;
+        font-weight: 500;
+        background: $mainColor;
+        color: #fff;
+        border-color: transparent;
+    }
+}
+
+.title-inner {
+    display: flex;
+    align-items: center;
+
+    button {
+        margin-left: 20px;
+    }
+}
+
+.primary-button {
+    padding: 13px 18px;
+
+    &:hover {
+        background: #73308d;
+    }
+}
+
+.flex-row {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    button {
+        height: 45px;
+    }
+}
+
+.tm-input {
+    border-radius: 2px;
+    font-size: 16px;
+    padding: 11px 15px;
+    min-width: 300px;
+    display: inline-block;
+    box-shadow: 0 0 0 2px rgba(120, 130, 152, .25);
+    border: none;
+    outline: none;
+    transition: all .3s ease;
+    margin: 20px 0;
+    color: white;
+    background-color: rgba(0, 0, 0, 0.2);
+
+    &:active,
+    &:focus,
+    &:hover {
+        box-shadow: 0 0 0 2px $mainColor;
+    }
+
+    &.sm {
+        width: 100%;
+        min-width: 0;
+        font-size: 12px;
+        margin: 10px 0;
+        padding: 8px 10px;
+    }
+}
+
+.header {
+    cursor: pointer;
+    font-weight: bold;
+    font-size: 16px !important;
+}
+
+.item {
+    text-align: center;
+}
+
+#site-list {
+    max-height: 400px;
+    overflow-y: auto;
+    overflow-x: hidden;
+}
+
+.site-wrapper,
+.site-wrapper-header {
+    display: flex;
+    align-items: center;
+    padding: 10px 0;
+    padding-left: 20px;
+    font-size: 14px;
+    transition: .3s;
+}
+
+.site-wrapper.selected {
+    border: 2px solid $mainColor;
+}
+
+.site-wrapper.open,
+.site-wrapper:nth-child(even).open {
+    background-color: rgba(147, 106, 155, .2);
+}
+
+.site-wrapper-header {
+    padding-left: 15px;
+    border-bottom: 2px solid rgba(14, 30, 37, .2);
+}
+
+.site-wrapper:hover,
+.site-wrapper:nth-child(even):hover {
+    background: rgba(255, 255, 255, .1);
+}
+
+.site-wrapper-header,
+.site-wrapper:nth-child(even) {
+    background-color: rgba(0, 0, 0, .1);
+}
+
+.site-screenshot,
+.site-screenshot-header {
+    height: 64px;
+    margin: 0 24px 0 0;
+    min-width: 102.4px;
+    position: relative;
+    overflow: hidden;
+}
+
+.site-screenshot-header {
+    height: 30px;
+}
+
+.site-screenshot:before {
+    background: #dadcdd;
+    bottom: 0;
+    content: " ";
+    left: 0;
+    position: absolute;
+    right: 0;
+    top: 0;
+}
+
+.site-screenshot a {
+    display: block;
+    position: relative;
+    z-index: 9;
+    height: 100%;
+}
+
+.site-screenshot img {
+    position: relative;
+    width: 100%;
+    width: 102.4px;
+    border: none;
+}
+
+.site-screenshot img[alt]:after {
+    display: block;
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: #dadcdd;
+    font-weight: 300;
+    line-height: 2;
+    text-align: center;
+    content: '';
+}
+
+.site-info {
+    min-width: 250px;
+    max-width: 250px;
+
+    h2 {
+        margin: 0px;
+        margin-bottom: 5px;
+    }
+
+    a {
+        text-decoration: none;
+    }
+}
+
+.site-meta a {
+    font-size: 14px;
+    color: rgba(165, 210, 230, 0.8);
+}
+
+.site-update-time {
+    min-width: 150px;
+}
+
+.site-create-time {
+    min-width: 130px;
+}
+
+.site-pages,
+.site-size {
+    min-width: 80px;
+}
+
+.site-actions {
+    min-width: 200px;
+
+    i {
+        color: $mainColor;
+        background-color: rgba(0, 0, 0, 0.1);
+        border: 1px solid $mainColor;
+        border-radius: 2px;
+        padding: 5px;
+        cursor: pointer;
+
+        &:hover {
+            background-color: $mainColor;
+            color: white;
+        }
+    }
+}
+
+.#{$prefix}templates-overlay {
+    position: absolute;
+    pointer-events: none;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(255, 255, 255, 0.05);
+}
+
+.#{$prefix}mdl-dialog-tml {
+    max-width: 1000px;
+    margin-top: 45px;
+}
+
+.#{$prefix}mdl-dialog-md {
+    max-width: 400px;
+    margin-top: 45px;
+}
+
+.#{$prefix}tip-about {
+    padding: 10px;
+    font-size: .9rem;
+    border: 1px solid rgba(0, 0, 0, 0.2);
+    border-left: 3px solid $mainColor;
+    background-color: rgba(0, 0, 0, 0.1);
+    margin-bottom: 10px;
+}
+
+.#{$prefix}tab {
+    overflow: hidden;
+    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+    margin-bottom: 10px;
+
+    button {
+        background-color: inherit;
+        color: inherit;
+        float: left;
+        border: 1px solid rgba(0, 0, 0, 0.1);
+        outline: none;
+        cursor: pointer;
+        padding: 14px 16px;
+        transition: .3s;
+
+        &:hover {
+            background-color: rgba(0, 0, 0, 0.1);
+        }
+
+        &.active {
+            background-color: rgba(0, 0, 0, 0.2);
+        }
+    }
+}
+
+.pages-wrp,
+.pages {
+    display: flex;
+    flex-direction: column;
+}
+
+.pages-wrp {
+    padding: 5px;
+}
+
+.pages-title {
+    padding: 5px;
+    margin: 0;
+    border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+
+.add-page {
+    background: $mainColor;
+    color: white;
+    font-size: 12px;
+    padding: 8px 5px;
+    border-radius: 2px;
+    cursor: pointer;
+    white-space: nowrap;
+    margin-bottom: 10px;
+}
+
+.page {
+    font-size: 12px;
+    text-align: left;
+    padding: 5px;
+    margin-bottom: 5px;
+    border-radius: 2px;
+    border: 1px solid rgba(0, 0, 0, .2);
+    box-shadow: 0 1px 0 0 rgb(0, 0, 0, .15);
+    transition: all .2s ease 0s;
+    transition-property: box-shadow, color;
+    cursor: pointer;
+
+    &:hover {
+        color: $mainColor;
+        box-shadow: 0 3px 4px 0 rgb(0, 0, 0, .15);
+    }
+
+    &.selected {
+        color: $mainColor;
+        border: 1px solid $mainColor;
+        background-color: rgba(0, 0, 0, .1);
+    }
+}
+
+.page-edit,
+.page-close {
+    opacity: .5;
+    float: right;
+    background-color: rgba(0, 0, 0, .1);
+    border: 1px solid rgba(0, 0, 0, .2);
+    height: 17px;
+    width: 17px;
+    text-align: center;
+    border-radius: 3px;
+
+    &:hover {
+        opacity: 1;
+    }
+}
+
+.page-edit {
+    margin-right: 5px;
+}
+
+.group {
+    margin-bottom: 15px;
+
+    input {
+        padding: 0;
+        height: initial;
+        width: initial;
+        margin-bottom: 0;
+        display: none;
+        cursor: pointer;
+
+        &:checked+label:after {
+            content: '';
+            display: block;
+            position: absolute;
+            top: 2px;
+            left: 9px;
+            width: 6px;
+            height: 14px;
+            border: solid $mainColor;
+            border-width: 0 2px 2px 0;
+            transform: rotate(45deg);
+        }
+    }
+
+    label {
+        position: relative;
+        cursor: pointer;
+
+        &:before {
+            content: '';
+            -webkit-appearance: none;
+            background-color: transparent;
+            border: 2px solid $mainColor;
+            box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05);
+            padding: 10px;
+            display: inline-block;
+            position: relative;
+            vertical-align: middle;
+            cursor: pointer;
+            margin-right: 5px;
+        }
+    }
+}
+
+@keyframes fadein {
+    0% {
+        opacity: 0;
+    }
+
+    100% {
+        opacity: 1;
+    }
+}
\ No newline at end of file
diff --git a/source/utils/objsize.js b/source/utils/objsize.js
new file mode 100644
index 0000000000000000000000000000000000000000..c277fea4db7f105172b32d780ee027f784795cfc
--- /dev/null
+++ b/source/utils/objsize.js
@@ -0,0 +1,11 @@
+export function objSizeMegaBytes(obj) {
+    return objSizeBytes(obj) / (1024 * 1024);
+}
+
+export default function objSizeKiloBytes(obj) {
+    return objSizeBytes(obj) / 1024;
+}
+
+export function objSizeBytes(obj) {
+    return new TextEncoder().encode(JSON.stringify(obj)).length;
+}
\ No newline at end of file
diff --git a/source/utils/sort.js b/source/utils/sort.js
new file mode 100644
index 0000000000000000000000000000000000000000..ea22020bfcecf01ac2bc741afeafd67a93ed6916
--- /dev/null
+++ b/source/utils/sort.js
@@ -0,0 +1,62 @@
+// https://github.com/netlify-labs/oauth-example/blob/master/source/utils/sort.js
+// License MIT
+import objSize from './objsize';
+
+export function matchText(search, text) {
+    if (!text || !search) {
+        return false
+    }
+    return text.toLowerCase().indexOf(search.toLowerCase()) > -1
+}
+
+export function sortByDate(dateType, order) {
+    return function (a, b) {
+        const timeA = new Date(a[dateType]).getTime()
+        const timeB = new Date(b[dateType]).getTime()
+        if (order === 'asc') {
+            return timeA - timeB
+        }
+        // default 'desc' descending order
+        return timeB - timeA
+    }
+}
+
+export function sortByName(key, order) {
+    return function (a, b) {
+        if (order === 'asc') {
+            if (a[key] < b[key]) return -1
+            if (a[key] > b[key]) return 1
+        }
+        if (a[key] > b[key]) return -1
+        if (a[key] < b[key]) return 1
+        return 0
+    }
+}
+
+export function sortByPages(key, order) {
+    return function (a, b) {
+        const pagesA = JSON.parse(a[key]);
+        const pagesB = JSON.parse(b[key]);
+        if (order === 'desc') {
+            if (pagesA.length < pagesB.length) return -1
+            if (pagesA.length > pagesB.length) return 1
+        }
+        if (pagesA.length > pagesB.length) return -1
+        if (pagesA.length < pagesB.length) return 1
+        return 0
+    }
+}
+
+export function sortBySize(order) {
+    return function (a, b) {
+        const sizeA = objSize(a);
+        const sizeB = objSize(b);
+        if (order === 'asc') {
+            if (sizeA < sizeB) return -1
+            if (sizeA > sizeB) return 1
+        }
+        if (sizeA > sizeB) return -1
+        if (sizeA < sizeB) return 1
+        return 0
+    }
+}
\ No newline at end of file
diff --git a/source/utils/timeago.js b/source/utils/timeago.js
new file mode 100644
index 0000000000000000000000000000000000000000..e894b371358a862ad317eed73b57c33ddc9b4933
--- /dev/null
+++ b/source/utils/timeago.js
@@ -0,0 +1,30 @@
+export default function timeago(date, short) {
+    const obj = {
+        second: 1000,
+        minute: 60 * 1000,
+        hour: 60 * 1000 * 60,
+        day: 24 * 60 * 1000 * 60,
+        week: 7 * 24 * 60 * 1000 * 60,
+        month: 30 * 24 * 60 * 1000 * 60,
+        year: 365 * 24 * 60 * 1000 * 60,
+    }
+
+    const { round } = Math,
+        dir = ' ago',
+        pl = function (v, n) {
+            return (short === undefined) ? `${n} ${v + (n > 1 ? 's' : '') + dir}` : n + v.substring(0, 1)
+        },
+        ts = Date.now() - new Date(date).getTime();
+    let ii;
+
+    if (ts < 0) {
+        ts *= -1;
+        dir = ' from now';
+    }
+
+    for (var i in obj) {
+        if (round(ts) < obj[i]) return pl(ii || 'm', round(ts / (obj[ii] || 1)))
+        ii = i;
+    }
+    return pl(i, round(ts / obj[i]));
+}
\ No newline at end of file
diff --git a/source/utils/ui.js b/source/utils/ui.js
new file mode 100644
index 0000000000000000000000000000000000000000..d999aab200ce95a5b4c4d19bfa0c083a8ec03125
--- /dev/null
+++ b/source/utils/ui.js
@@ -0,0 +1,38 @@
+export default class UI {
+    constructor(editor, opts = {}) {
+        this.editor = editor;
+        this.$ = editor.$;
+        this.pfx = editor.getConfig('stylePrefix');
+        this.id = editor.Storage.getConfig().id;
+        this.opts = opts;
+        this.setState = this.setState.bind(this);
+        this.setStateSilent = this.setStateSilent.bind(this);
+        this.onRender = this.onRender.bind(this);
+        this.handleTabs = this.handleTabs.bind(this);
+    }
+
+    setState(state) {
+        this.state = { ...this.state, ...state };
+        this.update();
+    }
+
+    setStateSilent(state) {
+        this.state = { ...this.state, ...state };
+    }
+
+    get sm() {
+        return this.editor.Storage;
+    }
+
+    get cs() {
+        return this.editor.Storage.getCurrentStorage();
+    }
+
+    get pm() {
+        return this.editor.Pages;
+    }
+
+    onRender() { }
+
+    handleTabs() { }
+}
\ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000000000000000000000000000000000000..f07a59a5f59184c8a619f4f4e1a6feda91bd8bbc
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,55 @@
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const TerserPlugin = require("terser-webpack-plugin");
+const pkg = require('./package.json');
+const webpack = require('webpack');
+const fs = require('fs');
+const name = pkg.name;
+let plugins = [];
+let optimization = {};
+
+
+module.exports = (env = {}) => {
+    if (env.production) {
+        optimization.minimizer = [
+            new TerserPlugin({
+                parallel: true,
+            })
+        ];
+        plugins = [
+            new webpack.BannerPlugin(`${name} - ${pkg.version}`),
+        ]
+    } else {
+        const index = 'index.html';
+        const indexDev = '_' + index;
+        plugins.push(new HtmlWebpackPlugin({
+            template: fs.existsSync(indexDev) ? indexDev : index
+        }));
+    }
+
+    return {
+        mode: env.production ? 'production' : 'development',
+        entry: './source',
+        output: {
+            filename: `./${name}.min.js`,
+            library: name,
+            libraryTarget: 'umd',
+        },
+        module: {
+            rules: [
+                {
+                    test: /\.js$/,
+                    include: /source/,
+                    use: {
+                        loader: 'babel-loader',
+                    }
+                },
+            ],
+        },
+        externals: {'grapesjs': 'grapesjs'},
+        optimization: optimization,
+        plugins: plugins,
+        watchOptions: {
+            ignored: /node_modules/
+        }
+    };
+};