Changeset - b9e24c7beb48
[Not reviewed]
Merge default
0 40 0
Mads Kiilerich (mads) - 20 months ago 2024-07-20 22:00:23
mads@kiilerich.com
Merge from stable
40 files changed with 1257 insertions and 2950 deletions:
0 comments (0 inline, 0 general)
CONTRIBUTORS
Show inline comments
 
List of contributors to Kallithea project:
 

	
 
    Mads Kiilerich <mads@kiilerich.com> 2016-2023
 
    Mads Kiilerich <mads@kiilerich.com> 2016-2024
 
    Aristotelis Stageiritis <aristotelis79@gmail.com> 2024
 
    Poesty Li <poesty7450@gmail.com> 2024
 
    Manuel Jacob <me@manueljacob.de> 2019-2020 2022-2023
 
    Mathias De Mare <mathias.de_mare@nokia.com> 2023
 
    qy117121 <mixuan121@gmail.com> 2023
 
    Asterios Dimitriou <steve@pci.gr> 2016-2017 2020 2022
 
    Étienne Gilli <etienne@gilli.io> 2020-2022
 
    Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net> 2022
 
    Louis Bertrand <louis.bertrand@durhamcollege.ca> 2022
 
    toras9000 <toras9000@gmail.com> 2022
 
    yzqzss <yzqzss@othing.xyz> 2022
 
    МАН69К <weblate@mah69k.net> 2022
 
    Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> 2014-2021
 
    ssantos <ssantos@web.de> 2018-2021
 
    Private <adamantine.sword@gmail.com> 2019-2021
 
    Étienne Gilli <etienne@gilli.io> 2020-2021
 
    fresh <fresh190@protonmail.com> 2020-2021
 
    robertus <robertuss12@gmail.com> 2020-2021
 
    Eugenia Russell <eugenia.russell2019@gmail.com> 2021
 
    Michalis <michalisntovas@yahoo.gr> 2021
 
    vs <vsuhachev@yandex.ru> 2021
 
    Александр <akonn7@mail.ru> 2021
Jenkinsfile
Show inline comments
 
@@ -24,14 +24,14 @@ node {
 
            bat 'hg --config extensions.purge= purge --all'
 
        }
 
    }
 
    stage('virtual env') {
 
        def virtualenvscript = """$createvirtualenv
 
            $activatevirtualenv
 
            python -m pip install --upgrade pip
 
            pip install --upgrade setuptools
 
            python -m pip install --upgrade "pip<24.1"
 
            pip install --upgrade "setuptools<67"
 
            pip install --upgrade pylint
 
            pip install --upgrade pytest-cov
 
            """
 
        if (isUnix()) {
 
            virtualenvscript += """
 
                pip install --upgrade python-ldap
dev_requirements.txt
Show inline comments
 
pytest >= 4.6.6, < 6.3
 
pytest-sugar >= 0.9.2, < 0.10
 
pytest-benchmark >= 3.2.2, < 3.3
 
pytest-localserver >= 0.5.0, < 0.6
 
mock >= 3.0.0, < 4.1
 
pytest >= 4.6.6, < 8.3
 
pytest-sugar >= 0.9.2, < 1.1
 
pytest-benchmark >= 3.2.2, < 4.1
 
pytest-localserver >= 0.5.0, < 0.9
 
mock >= 3.0.0, < 5.2
 
Sphinx >= 1.8.0, < 5.2
 
WebTest >= 2.0.6, < 2.1
 
isort == 5.1.2
 
pyflakes == 2.2.0
 
WebTest >= 2.0.6, < 3.1
 
isort == 5.13.2
 
pyflakes == 3.2.0
docs/conf.py
Show inline comments
 
@@ -44,13 +44,13 @@ source_suffix = '.rst'
 

	
 
# The master toctree document.
 
master_doc = 'index'
 

	
 
# General information about the project.
 
project = 'Kallithea'
 
copyright = '2010-2023 by various authors, licensed as GPLv3.'
 
copyright = '2010-2024 by various authors, licensed as GPLv3.'
 

	
 
# The version info for the project you're documenting, acts as replacement for
 
# |version| and |release|, also used in various other places throughout the
 
# built documents.
 
#
 
# The short X.Y version.
docs/contributing.rst
Show inline comments
 
@@ -30,13 +30,13 @@ To get started with Kallithea developmen
 
bash shell::
 

	
 
        hg clone https://kallithea-scm.org/repos/kallithea
 
        cd kallithea
 
        python3 -m venv venv
 
        . venv/bin/activate
 
        pip install --upgrade pip setuptools
 
        pip install --upgrade "pip<24.1" "setuptools<67"
 
        pip install --upgrade -e . -r dev_requirements.txt python-ldap python-pam
 
        kallithea-cli config-create my.ini
 
        kallithea-cli db-create -c my.ini --user=user --email=user@example.com --password=password --repos=/tmp
 
        kallithea-cli front-end-build
 
        gearbox serve -c my.ini --reload &
 
        firefox http://127.0.0.1:5000/
docs/installation.rst
Show inline comments
 
@@ -52,13 +52,13 @@ To install Kallithea in a virtualenv usi
 
repository, use the following commands in your bash shell::
 

	
 
        hg clone https://kallithea-scm.org/repos/kallithea -u stable
 
        cd kallithea
 
        python3 -m venv venv
 
        . venv/bin/activate
 
        pip install --upgrade pip setuptools
 
        pip install --upgrade "pip<24.1" "setuptools<67"
 
        pip install --upgrade -e .
 
        python3 setup.py compile_catalog   # for translation of the UI
 

	
 
.. note::
 
   This will install all Python dependencies into the virtualenv. Kallithea
 
   itself will however only be installed as a pointer to the source location.
 
@@ -95,13 +95,13 @@ An additional benefit of virtualenv is t
 

	
 
- Activate the virtualenv in your current shell session and make sure the
 
  basic requirements are up-to-date by running the following commands in your
 
  bash shell::
 

	
 
    . /srv/kallithea/venv/bin/activate
 
    pip install --upgrade pip setuptools
 
    pip install --upgrade "pip<24.1" "setuptools<67"
 

	
 
.. note:: You can't use UNIX ``sudo`` to source the ``activate`` script; it
 
   will "activate" a shell that terminates immediately.
 

	
 
- Install Kallithea in the activated virtualenv::
 

	
docs/installation_win.rst
Show inline comments
 
@@ -101,13 +101,13 @@ Download and install "Microsoft Visual C
 
  You can also install the dependencies using already compiled Windows binaries packages. A good source of compiled Python packages is http://www.lfd.uci.edu/~gohlke/pythonlibs/. However, not all of the necessary packages for Kallithea are on this site and some are hard to find, so we will stick with using the compiler.
 

	
 
In a command prompt type (adapting paths if necessary)::
 

	
 
  cd C:\Kallithea\Env\Scripts
 
  activate
 
  pip install --upgrade pip setuptools
 
  pip install --upgrade "pip<24.1" "setuptools<67"
 

	
 
The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
 
(depending of your folder structure). Then type::
 

	
 
  pip install kallithea
 

	
docs/installation_win_old.rst
Show inline comments
 
@@ -167,13 +167,13 @@ to::
 
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64
 

	
 
In that CMD (loaded with VS2008 PATHs) type::
 

	
 
  cd C:\Kallithea\Env\Scripts (or similar)
 
  activate
 
  pip install --upgrade pip setuptools
 
  pip install --upgrade "pip<24.1" "setuptools<67"
 

	
 
The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
 
(depending of your folder structure). Then type::
 

	
 
 pip install kallithea
 

	
kallithea/config/app_cfg.py
Show inline comments
 
@@ -75,12 +75,16 @@ base_config.update_blueprint({
 

	
 
    # Disable transaction manager -- currently Kallithea takes care of transactions itself
 
    'tm.enabled': False,
 

	
 
    # Set the default i18n source language so TG doesn't search beyond 'en' in Accept-Language.
 
    'i18n.lang': 'en',
 

	
 
    # For TurboGears 2.4.3, define the native language for translations to
 
    # prevent fall-through to languages requested with lower priority.
 
    'i18n.native': ['en', 'en_US', 'en_GB'],
 
})
 

	
 
# DebugBar, a debug toolbar for TurboGears2.
 
# (https://github.com/TurboGears/tgext.debugbar)
 
# To enable it, install 'tgext.debugbar' and 'kajiki', and run Kallithea with
 
# 'debug = true' (not in production!)
kallithea/controllers/admin/repo_groups.py
Show inline comments
 
@@ -87,19 +87,12 @@ class RepoGroupsController(base.BaseCont
 
        for p in repo_group.users_group_to_perm:
 
            data.update({'g_perm_%s' % p.users_group.users_group_name:
 
                             p.permission.permission_name})
 

	
 
        return data
 

	
 
    def _revoke_perms_on_yourself(self, form_result):
 
        _up = [u for u in form_result['perms_updates'] if request.authuser.username == u[0]]
 
        _new = [u for u in form_result['perms_new'] if request.authuser.username == u[0]]
 
        if _new and _new[0][1] != 'group.admin' or _up and _up[0][1] != 'group.admin':
 
            return True
 
        return False
 

	
 
    def index(self, format='html'):
 
        _list = db.RepoGroup.query(sorted=True).all()
 
        group_iter = RepoGroupList(_list, perm_level='admin')
 
        repo_groups_data = []
 
        _tmpl_lookup = app_globals.mako_lookup
 
        template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
 
@@ -346,17 +339,12 @@ class RepoGroupsController(base.BaseCont
 
        :param group_name:
 
        """
 

	
 
        c.repo_group = db.RepoGroup.guess_instance(group_name)
 
        valid_recursive_choices = ['none', 'repos', 'groups', 'all']
 
        form_result = RepoGroupPermsForm(valid_recursive_choices)().to_python(request.POST)
 
        if not request.authuser.is_admin:
 
            if self._revoke_perms_on_yourself(form_result):
 
                msg = _('Cannot revoke permission for yourself as admin')
 
                webutils.flash(msg, category='warning')
 
                raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
 
        recursive = form_result['recursive']
 
        # iterate over all members(if in recursive mode) of this groups and
 
        # set the permissions !
 
        # this can be potentially heavy operation
 
        RepoGroupModel()._update_permissions(c.repo_group,
 
                                             form_result['perms_new'],
 
@@ -376,17 +364,12 @@ class RepoGroupsController(base.BaseCont
 
            obj_id = None
 
            if obj_type == 'user':
 
                obj_id = safe_int(request.POST.get('user_id'))
 
            elif obj_type == 'user_group':
 
                obj_id = safe_int(request.POST.get('user_group_id'))
 

	
 
            if not request.authuser.is_admin:
 
                if obj_type == 'user' and request.authuser.user_id == obj_id:
 
                    msg = _('Cannot revoke permission for yourself as admin')
 
                    webutils.flash(msg, category='warning')
 
                    raise Exception('revoke admin permission on self')
 
            recursive = request.POST.get('recursive', 'none')
 
            if obj_type == 'user':
 
                RepoGroupModel().delete_permission(repo_group=group_name,
 
                                                   obj=obj_id, obj_type='user',
 
                                                   recursive=recursive)
 
            elif obj_type == 'user_group':
kallithea/front-end/package-lock.json
Show inline comments
 
{
 
  "name": "kallithea",
 
  "lockfileVersion": 2,
 
  "lockfileVersion": 3,
 
  "requires": true,
 
  "packages": {
 
    "": {
 
      "name": "kallithea",
 
      "dependencies": {
 
        "at.js": "1.5.4",
 
        "bootstrap": "3.3.7",
 
        "codemirror": "5.49.0",
 
        "datatables.net": "1.10.20",
 
        "datatables.net-bs": "1.10.20",
 
        "jquery": "3.4.1",
 
        "jquery.caret": "0.3.1",
 
        "jquery.flot": "0.8.3",
 
        "select2": "3.5.1",
 
        "at.js": "1.5",
 
        "bootstrap": "3",
 
        "codemirror": "5",
 
        "datatables.net": "1",
 
        "datatables.net-bs": "1",
 
        "jquery": "3",
 
        "jquery.caret": "0.3",
 
        "jquery.flot": "0.8",
 
        "select2": "3",
 
        "select2-bootstrap-css": "1.4.6"
 
      },
 
      "devDependencies": {
 
        "eslint": "6.8.0",
 
        "eslint-plugin-html": "6.0.0",
 
        "less": "3.10.3",
 
        "less-plugin-clean-css": "1.5.1",
 
        "license-checker": "25.0.1"
 
        "eslint": "6",
 
        "eslint-plugin-html": "6",
 
        "less": "3",
 
        "less-plugin-clean-css": "1.5",
 
        "license-checker": "25"
 
      }
 
    },
 
    "node_modules/@babel/code-frame": {
 
      "version": "7.8.3",
 
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
 
      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
 
      "version": "7.24.7",
 
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
 
      "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
 
      "dev": true,
 
      "dependencies": {
 
        "@babel/highlight": "^7.8.3"
 
        "@babel/highlight": "^7.24.7",
 
        "picocolors": "^1.0.0"
 
      },
 
      "engines": {
 
        "node": ">=6.9.0"
 
      }
 
    },
 
    "node_modules/@babel/helper-validator-identifier": {
 
      "version": "7.24.7",
 
      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
 
      "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6.9.0"
 
      }
 
    },
 
    "node_modules/@babel/highlight": {
 
      "version": "7.8.3",
 
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
 
      "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
 
      "version": "7.24.7",
 
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
 
      "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
 
      "dev": true,
 
      "dependencies": {
 
        "chalk": "^2.0.0",
 
        "esutils": "^2.0.2",
 
        "js-tokens": "^4.0.0"
 
        "@babel/helper-validator-identifier": "^7.24.7",
 
        "chalk": "^2.4.2",
 
        "js-tokens": "^4.0.0",
 
        "picocolors": "^1.0.0"
 
      },
 
      "engines": {
 
        "node": ">=6.9.0"
 
      }
 
    },
 
    "node_modules/abbrev": {
 
      "version": "1.1.1",
 
      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
 
      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
 
      "dev": true
 
    },
 
    "node_modules/acorn": {
 
      "version": "7.1.0",
 
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
 
      "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
 
      "version": "7.4.1",
 
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
 
      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
 
      "dev": true,
 
      "bin": {
 
        "acorn": "bin/acorn"
 
      },
 
      "engines": {
 
        "node": ">=0.4.0"
 
      }
 
    },
 
    "node_modules/acorn-jsx": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
 
      "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
 
      "version": "5.3.2",
 
      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
 
      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
 
      "dev": true,
 
      "peerDependencies": {
 
        "acorn": "^6.0.0 || ^7.0.0"
 
        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
 
      }
 
    },
 
    "node_modules/ajv": {
 
      "version": "6.10.2",
 
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
 
      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
 
      "version": "6.12.6",
 
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
 
      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
 
      "dev": true,
 
      "dependencies": {
 
        "fast-deep-equal": "^2.0.1",
 
        "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/amdefine": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
 
      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
 
      "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.4.2"
 
      }
 
    },
 
    "node_modules/ansi-escapes": {
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
 
      "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
 
      "version": "4.3.2",
 
      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
 
      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "type-fest": "^0.8.1"
 
        "type-fest": "^0.21.3"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/ansi-escapes/node_modules/type-fest": {
 
      "version": "0.21.3",
 
      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
 
      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=10"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/ansi-regex": {
 
      "version": "5.0.0",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
 
      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
 
      "version": "4.1.1",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
 
      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/ansi-styles": {
 
      "version": "3.2.1",
 
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
 
      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
 
@@ -135,110 +171,56 @@
 
        "sprintf-js": "~1.0.2"
 
      }
 
    },
 
    "node_modules/array-find-index": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
 
      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
 
      "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/asap": {
 
      "version": "2.0.6",
 
      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
 
      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
 
      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
 
      "dev": true
 
    },
 
    "node_modules/asn1": {
 
      "version": "0.2.4",
 
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
 
      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "safer-buffer": "~2.1.0"
 
      }
 
    },
 
    "node_modules/assert-plus": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
 
      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": ">=0.8"
 
      }
 
    },
 
    "node_modules/astral-regex": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
 
      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/asynckit": {
 
      "version": "0.4.0",
 
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/at.js": {
 
      "version": "1.5.4",
 
      "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
 
      "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
 
      "engines": {
 
        "node": ">= 0.6.0"
 
      },
 
      "peerDependencies": {
 
        "jquery": ">=1.7.0 <4.0.0"
 
      }
 
    },
 
    "node_modules/aws-sign2": {
 
      "version": "0.7.0",
 
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
 
      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/aws4": {
 
      "version": "1.8.0",
 
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
 
      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/balanced-match": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
 
      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 
      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
 
      "dev": true
 
    },
 
    "node_modules/bcrypt-pbkdf": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
 
      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "tweetnacl": "^0.14.3"
 
      }
 
    },
 
    "node_modules/bootstrap": {
 
      "version": "3.3.7",
 
      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
 
      "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=",
 
      "version": "3.4.1",
 
      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
 
      "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
 
      "engines": {
 
        "node": ">=0.10.1"
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/brace-expansion": {
 
      "version": "1.1.11",
 
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 
      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
 
@@ -254,19 +236,12 @@
 
      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/caseless": {
 
      "version": "0.12.0",
 
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
 
      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/chalk": {
 
      "version": "2.4.2",
 
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
 
      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
 
      "dev": true,
 
      "dependencies": {
 
@@ -284,13 +259,13 @@
 
      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
 
      "dev": true
 
    },
 
    "node_modules/clean-css": {
 
      "version": "3.4.28",
 
      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
 
      "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
 
      "integrity": "sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw==",
 
      "dev": true,
 
      "dependencies": {
 
        "commander": "2.8.x",
 
        "source-map": "0.4.x"
 
      },
 
      "bin": {
 
@@ -300,13 +275,13 @@
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/clean-css/node_modules/source-map": {
 
      "version": "0.4.4",
 
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
 
      "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
 
      "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==",
 
      "dev": true,
 
      "dependencies": {
 
        "amdefine": ">=0.0.4"
 
      },
 
      "engines": {
 
        "node": ">=0.8.0"
 
@@ -322,30 +297,24 @@
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/cli-width": {
 
      "version": "2.2.0",
 
      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
 
      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
 
      "dev": true
 
    },
 
    "node_modules/clone": {
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
 
      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
 
      "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.8"
 
        "node": ">= 10"
 
      }
 
    },
 
    "node_modules/codemirror": {
 
      "version": "5.49.0",
 
      "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
 
      "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
 
      "version": "5.65.17",
 
      "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
 
      "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ=="
 
    },
 
    "node_modules/color-convert": {
 
      "version": "1.9.3",
 
      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
 
      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
 
      "dev": true,
 
@@ -353,52 +322,44 @@
 
        "color-name": "1.1.3"
 
      }
 
    },
 
    "node_modules/color-name": {
 
      "version": "1.1.3",
 
      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
 
      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
 
      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
 
      "dev": true
 
    },
 
    "node_modules/combined-stream": {
 
      "version": "1.0.8",
 
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
 
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "delayed-stream": "~1.0.0"
 
      },
 
      "engines": {
 
        "node": ">= 0.8"
 
      }
 
    },
 
    "node_modules/commander": {
 
      "version": "2.8.1",
 
      "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
 
      "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
 
      "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "graceful-readlink": ">= 1.0.0"
 
      },
 
      "engines": {
 
        "node": ">= 0.6.x"
 
      }
 
    },
 
    "node_modules/concat-map": {
 
      "version": "0.0.1",
 
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 
      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
 
      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
 
      "dev": true
 
    },
 
    "node_modules/core-util-is": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
 
    "node_modules/copy-anything": {
 
      "version": "2.0.6",
 
      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
 
      "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
 
      "dev": true,
 
      "optional": true
 
      "dependencies": {
 
        "is-what": "^3.14.1"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/mesqueeb"
 
      }
 
    },
 
    "node_modules/cross-spawn": {
 
      "version": "6.0.5",
 
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
 
      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
 
      "dev": true,
 
@@ -410,81 +371,75 @@
 
        "which": "^1.2.9"
 
      },
 
      "engines": {
 
        "node": ">=4.8"
 
      }
 
    },
 
    "node_modules/dashdash": {
 
      "version": "1.14.1",
 
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
 
      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
 
    "node_modules/cross-spawn/node_modules/semver": {
 
      "version": "5.7.2",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
 
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "assert-plus": "^1.0.0"
 
      },
 
      "engines": {
 
        "node": ">=0.10"
 
      "bin": {
 
        "semver": "bin/semver"
 
      }
 
    },
 
    "node_modules/datatables.net": {
 
      "version": "1.10.20",
 
      "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
 
      "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
 
      "version": "1.13.11",
 
      "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz",
 
      "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==",
 
      "dependencies": {
 
        "jquery": ">=1.7"
 
        "jquery": "1.8 - 4"
 
      }
 
    },
 
    "node_modules/datatables.net-bs": {
 
      "version": "1.10.20",
 
      "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
 
      "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
 
      "version": "1.13.11",
 
      "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.13.11.tgz",
 
      "integrity": "sha512-oZeXzC2Z+pZc9Wpil6XuuwMPMfllSd+hWEauhKr8q7bTM5fGuBKzAVzSr7Tuo1OzMBZ6NkAb+HSBGCGUn5Qbhg==",
 
      "dependencies": {
 
        "datatables.net": "1.10.20",
 
        "jquery": ">=1.7"
 
        "datatables.net": "1.13.11",
 
        "jquery": "1.8 - 4"
 
      }
 
    },
 
    "node_modules/debug": {
 
      "version": "3.2.6",
 
      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
 
      "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
 
      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
 
      "version": "4.3.5",
 
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
 
      "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
 
      "dev": true,
 
      "dependencies": {
 
        "ms": "^2.1.1"
 
        "ms": "2.1.2"
 
      },
 
      "engines": {
 
        "node": ">=6.0"
 
      },
 
      "peerDependenciesMeta": {
 
        "supports-color": {
 
          "optional": true
 
        }
 
      }
 
    },
 
    "node_modules/debuglog": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
 
      "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
 
      "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
 
      "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
 
      "dev": true,
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/deep-is": {
 
      "version": "0.1.3",
 
      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
 
      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
 
      "version": "0.1.4",
 
      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
 
      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
 
      "dev": true
 
    },
 
    "node_modules/delayed-stream": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
 
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": ">=0.4.0"
 
      }
 
    },
 
    "node_modules/dezalgo": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
 
      "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
 
      "version": "1.0.4",
 
      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
 
      "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
 
      "dev": true,
 
      "dependencies": {
 
        "asap": "^2.0.0",
 
        "wrappy": "1"
 
      }
 
    },
 
@@ -498,98 +453,110 @@
 
      },
 
      "engines": {
 
        "node": ">=6.0.0"
 
      }
 
    },
 
    "node_modules/dom-serializer": {
 
      "version": "0.2.2",
 
      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
 
      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
 
      "version": "1.4.1",
 
      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
 
      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
 
      "dev": true,
 
      "dependencies": {
 
        "domelementtype": "^2.0.1",
 
        "domhandler": "^4.2.0",
 
        "entities": "^2.0.0"
 
      },
 
      "funding": {
 
        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
 
      }
 
    },
 
    "node_modules/dom-serializer/node_modules/domelementtype": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
 
      "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
 
      "dev": true
 
    },
 
    "node_modules/dom-serializer/node_modules/entities": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
 
      "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
 
      "dev": true
 
      "version": "2.2.0",
 
      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
 
      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
 
      "dev": true,
 
      "funding": {
 
        "url": "https://github.com/fb55/entities?sponsor=1"
 
      }
 
    },
 
    "node_modules/domelementtype": {
 
      "version": "1.3.1",
 
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
 
      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
 
      "dev": true
 
      "version": "2.3.0",
 
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
 
      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
 
      "dev": true,
 
      "funding": [
 
        {
 
          "type": "github",
 
          "url": "https://github.com/sponsors/fb55"
 
        }
 
      ]
 
    },
 
    "node_modules/domhandler": {
 
      "version": "2.4.2",
 
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
 
      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
 
      "version": "4.3.1",
 
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
 
      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "domelementtype": "1"
 
        "domelementtype": "^2.2.0"
 
      },
 
      "engines": {
 
        "node": ">= 4"
 
      },
 
      "funding": {
 
        "url": "https://github.com/fb55/domhandler?sponsor=1"
 
      }
 
    },
 
    "node_modules/domutils": {
 
      "version": "1.7.0",
 
      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
 
      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
 
      "version": "2.8.0",
 
      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
 
      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
 
      "dev": true,
 
      "dependencies": {
 
        "dom-serializer": "0",
 
        "domelementtype": "1"
 
      }
 
    },
 
    "node_modules/ecc-jsbn": {
 
      "version": "0.1.2",
 
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
 
      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "jsbn": "~0.1.0",
 
        "safer-buffer": "^2.1.0"
 
        "dom-serializer": "^1.0.1",
 
        "domelementtype": "^2.2.0",
 
        "domhandler": "^4.2.0"
 
      },
 
      "funding": {
 
        "url": "https://github.com/fb55/domutils?sponsor=1"
 
      }
 
    },
 
    "node_modules/emoji-regex": {
 
      "version": "8.0.0",
 
      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
 
      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
 
      "dev": true
 
    },
 
    "node_modules/entities": {
 
      "version": "1.1.2",
 
      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
 
      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
 
      "dev": true
 
      "version": "3.0.1",
 
      "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
 
      "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.12"
 
      },
 
      "funding": {
 
        "url": "https://github.com/fb55/entities?sponsor=1"
 
      }
 
    },
 
    "node_modules/errno": {
 
      "version": "0.1.7",
 
      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
 
      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
 
      "version": "0.1.8",
 
      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
 
      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "prr": "~1.0.1"
 
      },
 
      "bin": {
 
        "errno": "cli.js"
 
      }
 
    },
 
    "node_modules/escape-string-regexp": {
 
      "version": "1.0.5",
 
      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
 
      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
 
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.8.0"
 
      }
 
    },
 
    "node_modules/eslint": {
 
@@ -644,27 +611,27 @@
 
      },
 
      "funding": {
 
        "url": "https://opencollective.com/eslint"
 
      }
 
    },
 
    "node_modules/eslint-plugin-html": {
 
      "version": "6.0.0",
 
      "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
 
      "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
 
      "version": "6.2.0",
 
      "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.2.0.tgz",
 
      "integrity": "sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==",
 
      "dev": true,
 
      "dependencies": {
 
        "htmlparser2": "^3.10.1"
 
        "htmlparser2": "^7.1.2"
 
      }
 
    },
 
    "node_modules/eslint-scope": {
 
      "version": "5.0.0",
 
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
 
      "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
 
      "version": "5.1.1",
 
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
 
      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
 
      "dev": true,
 
      "dependencies": {
 
        "esrecurse": "^4.1.0",
 
        "esrecurse": "^4.3.0",
 
        "estraverse": "^4.1.1"
 
      },
 
      "engines": {
 
        "node": ">=8.0.0"
 
      }
 
    },
 
@@ -678,47 +645,28 @@
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/eslint-visitor-keys": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
 
      "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
 
      "version": "1.3.0",
 
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
 
      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/eslint/node_modules/debug": {
 
      "version": "4.1.1",
 
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
 
      "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
 
      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
 
    "node_modules/espree": {
 
      "version": "6.2.1",
 
      "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
 
      "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
 
      "dev": true,
 
      "dependencies": {
 
        "ms": "^2.1.1"
 
      }
 
    },
 
    "node_modules/eslint/node_modules/semver": {
 
      "version": "6.3.0",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
 
      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
 
      "dev": true,
 
      "bin": {
 
        "semver": "bin/semver.js"
 
      }
 
    },
 
    "node_modules/espree": {
 
      "version": "6.1.2",
 
      "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
 
      "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
 
      "dev": true,
 
      "dependencies": {
 
        "acorn": "^7.1.0",
 
        "acorn-jsx": "^5.1.0",
 
        "acorn": "^7.1.1",
 
        "acorn-jsx": "^5.2.0",
 
        "eslint-visitor-keys": "^1.1.0"
 
      },
 
      "engines": {
 
        "node": ">=6.0.0"
 
      }
 
    },
 
@@ -733,35 +681,53 @@
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/esquery": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
 
      "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
 
      "version": "1.6.0",
 
      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
 
      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
 
      "dev": true,
 
      "dependencies": {
 
        "estraverse": "^4.0.0"
 
        "estraverse": "^5.1.0"
 
      },
 
      "engines": {
 
        "node": ">=0.6"
 
        "node": ">=0.10"
 
      }
 
    },
 
    "node_modules/esquery/node_modules/estraverse": {
 
      "version": "5.3.0",
 
      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
 
      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4.0"
 
      }
 
    },
 
    "node_modules/esrecurse": {
 
      "version": "4.2.1",
 
      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
 
      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
 
      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
 
      "dev": true,
 
      "dependencies": {
 
        "estraverse": "^4.1.0"
 
        "estraverse": "^5.2.0"
 
      },
 
      "engines": {
 
        "node": ">=4.0"
 
      }
 
    },
 
    "node_modules/esrecurse/node_modules/estraverse": {
 
      "version": "5.3.0",
 
      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
 
      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4.0"
 
      }
 
    },
 
    "node_modules/estraverse": {
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
 
      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
 
      "dev": true,
 
      "engines": {
 
@@ -774,19 +740,12 @@
 
      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/extend": {
 
      "version": "3.0.2",
 
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/external-editor": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
 
      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
 
      "dev": true,
 
      "dependencies": {
 
@@ -795,38 +754,28 @@
 
        "tmp": "^0.0.33"
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/extsprintf": {
 
      "version": "1.3.0",
 
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
 
      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
 
      "dev": true,
 
      "engines": [
 
        "node >=0.6.0"
 
      ],
 
      "optional": true
 
    },
 
    "node_modules/fast-deep-equal": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
 
      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
 
      "version": "3.1.3",
 
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 
      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 
      "dev": true
 
    },
 
    "node_modules/fast-json-stable-stringify": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
 
      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
 
      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
 
      "dev": true
 
    },
 
    "node_modules/fast-levenshtein": {
 
      "version": "2.0.6",
 
      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
 
      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
 
      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
 
      "dev": true
 
    },
 
    "node_modules/figures": {
 
      "version": "3.2.0",
 
      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
 
      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
 
@@ -865,188 +814,142 @@
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/flatted": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
 
      "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
 
      "version": "2.0.2",
 
      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
 
      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
 
      "dev": true
 
    },
 
    "node_modules/forever-agent": {
 
      "version": "0.6.1",
 
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
 
      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/form-data": {
 
      "version": "2.3.3",
 
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
 
      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "asynckit": "^0.4.0",
 
        "combined-stream": "^1.0.6",
 
        "mime-types": "^2.1.12"
 
      },
 
      "engines": {
 
        "node": ">= 0.12"
 
      }
 
    },
 
    "node_modules/fs.realpath": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 
      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 
      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
 
      "dev": true
 
    },
 
    "node_modules/function-bind": {
 
      "version": "1.1.2",
 
      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
 
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
 
      "dev": true,
 
      "funding": {
 
        "url": "https://github.com/sponsors/ljharb"
 
      }
 
    },
 
    "node_modules/functional-red-black-tree": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
 
      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
 
      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
 
      "dev": true
 
    },
 
    "node_modules/getpass": {
 
      "version": "0.1.7",
 
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
 
      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "assert-plus": "^1.0.0"
 
      }
 
    },
 
    "node_modules/glob": {
 
      "version": "7.1.6",
 
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
 
      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
 
      "version": "7.2.3",
 
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
 
      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
 
      "deprecated": "Glob versions prior to v9 are no longer supported",
 
      "dev": true,
 
      "dependencies": {
 
        "fs.realpath": "^1.0.0",
 
        "inflight": "^1.0.4",
 
        "inherits": "2",
 
        "minimatch": "^3.0.4",
 
        "minimatch": "^3.1.1",
 
        "once": "^1.3.0",
 
        "path-is-absolute": "^1.0.0"
 
      },
 
      "engines": {
 
        "node": "*"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/isaacs"
 
      }
 
    },
 
    "node_modules/glob-parent": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
 
      "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
 
      "version": "5.1.2",
 
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
 
      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
 
      "dev": true,
 
      "dependencies": {
 
        "is-glob": "^4.0.1"
 
      },
 
      "engines": {
 
        "node": ">= 6"
 
      }
 
    },
 
    "node_modules/globals": {
 
      "version": "12.3.0",
 
      "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
 
      "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
 
      "version": "12.4.0",
 
      "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
 
      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
 
      "dev": true,
 
      "dependencies": {
 
        "type-fest": "^0.8.1"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/graceful-fs": {
 
      "version": "4.2.3",
 
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
 
      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
 
      "version": "4.2.11",
 
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
 
      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
 
      "dev": true
 
    },
 
    "node_modules/graceful-readlink": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
 
      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
 
      "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==",
 
      "dev": true
 
    },
 
    "node_modules/har-schema": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
 
      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/har-validator": {
 
      "version": "5.1.3",
 
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
 
      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
 
      "deprecated": "this library is no longer supported",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "ajv": "^6.5.5",
 
        "har-schema": "^2.0.0"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/has-flag": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
 
      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
 
      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/hasown": {
 
      "version": "2.0.2",
 
      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
 
      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "function-bind": "^1.1.2"
 
      },
 
      "engines": {
 
        "node": ">= 0.4"
 
      }
 
    },
 
    "node_modules/hosted-git-info": {
 
      "version": "2.8.5",
 
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
 
      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
 
      "version": "2.8.9",
 
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
 
      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
 
      "dev": true
 
    },
 
    "node_modules/htmlparser2": {
 
      "version": "3.10.1",
 
      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
 
      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
 
      "version": "7.2.0",
 
      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
 
      "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
 
      "dev": true,
 
      "funding": [
 
        "https://github.com/fb55/htmlparser2?sponsor=1",
 
        {
 
          "type": "github",
 
          "url": "https://github.com/sponsors/fb55"
 
        }
 
      ],
 
      "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/http-signature": {
 
      "version": "1.2.0",
 
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
 
      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "assert-plus": "^1.0.0",
 
        "jsprim": "^1.2.2",
 
        "sshpk": "^1.7.0"
 
      },
 
      "engines": {
 
        "node": ">=0.8",
 
        "npm": ">=1.3.7"
 
        "domelementtype": "^2.0.1",
 
        "domhandler": "^4.2.2",
 
        "domutils": "^2.8.0",
 
        "entities": "^3.0.1"
 
      }
 
    },
 
    "node_modules/iconv-lite": {
 
      "version": "0.4.24",
 
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
 
      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
 
@@ -1067,48 +970,52 @@
 
        "node": ">= 4"
 
      }
 
    },
 
    "node_modules/image-size": {
 
      "version": "0.5.5",
 
      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
 
      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
 
      "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
 
      "dev": true,
 
      "optional": true,
 
      "bin": {
 
        "image-size": "bin/image-size.js"
 
      },
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/import-fresh": {
 
      "version": "3.2.1",
 
      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
 
      "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
 
      "version": "3.3.0",
 
      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
 
      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
 
      "dev": true,
 
      "dependencies": {
 
        "parent-module": "^1.0.0",
 
        "resolve-from": "^4.0.0"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/imurmurhash": {
 
      "version": "0.1.4",
 
      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
 
      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
 
      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.8.19"
 
      }
 
    },
 
    "node_modules/inflight": {
 
      "version": "1.0.6",
 
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 
      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
 
      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
 
      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
 
      "dev": true,
 
      "dependencies": {
 
        "once": "^1.3.0",
 
        "wrappy": "1"
 
      }
 
    },
 
@@ -1116,39 +1023,145 @@
 
      "version": "2.0.4",
 
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 
      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
 
      "dev": true
 
    },
 
    "node_modules/inquirer": {
 
      "version": "7.0.4",
 
      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
 
      "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
 
      "version": "7.3.3",
 
      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
 
      "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
 
      "dev": true,
 
      "dependencies": {
 
        "ansi-escapes": "^4.2.1",
 
        "chalk": "^2.4.2",
 
        "chalk": "^4.1.0",
 
        "cli-cursor": "^3.1.0",
 
        "cli-width": "^2.0.0",
 
        "cli-width": "^3.0.0",
 
        "external-editor": "^3.0.3",
 
        "figures": "^3.0.0",
 
        "lodash": "^4.17.15",
 
        "lodash": "^4.17.19",
 
        "mute-stream": "0.0.8",
 
        "run-async": "^2.2.0",
 
        "rxjs": "^6.5.3",
 
        "run-async": "^2.4.0",
 
        "rxjs": "^6.6.0",
 
        "string-width": "^4.1.0",
 
        "strip-ansi": "^5.1.0",
 
        "strip-ansi": "^6.0.0",
 
        "through": "^2.3.6"
 
      },
 
      "engines": {
 
        "node": ">=6.0.0"
 
        "node": ">=8.0.0"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/ansi-regex": {
 
      "version": "5.0.1",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
 
      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/ansi-styles": {
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 
      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
 
      "dev": true,
 
      "dependencies": {
 
        "color-convert": "^2.0.1"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      },
 
      "funding": {
 
        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/chalk": {
 
      "version": "4.1.2",
 
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
 
      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 
      "dev": true,
 
      "dependencies": {
 
        "ansi-styles": "^4.1.0",
 
        "supports-color": "^7.1.0"
 
      },
 
      "engines": {
 
        "node": ">=10"
 
      },
 
      "funding": {
 
        "url": "https://github.com/chalk/chalk?sponsor=1"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/color-convert": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
 
      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "color-name": "~1.1.4"
 
      },
 
      "engines": {
 
        "node": ">=7.0.0"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/color-name": {
 
      "version": "1.1.4",
 
      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
 
      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
 
      "dev": true
 
    },
 
    "node_modules/inquirer/node_modules/has-flag": {
 
      "version": "4.0.0",
 
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
 
      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/strip-ansi": {
 
      "version": "6.0.1",
 
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
 
      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
 
      "dev": true,
 
      "dependencies": {
 
        "ansi-regex": "^5.0.1"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/inquirer/node_modules/supports-color": {
 
      "version": "7.2.0",
 
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
 
      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
 
      "dev": true,
 
      "dependencies": {
 
        "has-flag": "^4.0.0"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/is-core-module": {
 
      "version": "2.15.0",
 
      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
 
      "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
 
      "dev": true,
 
      "dependencies": {
 
        "hasown": "^2.0.2"
 
      },
 
      "engines": {
 
        "node": ">= 0.4"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/ljharb"
 
      }
 
    },
 
    "node_modules/is-extglob": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 
      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
 
      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/is-fullwidth-code-point": {
 
@@ -1158,58 +1171,44 @@
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/is-glob": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
 
      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
 
      "version": "4.0.3",
 
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
 
      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
 
      "dev": true,
 
      "dependencies": {
 
        "is-extglob": "^2.1.1"
 
      },
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/is-promise": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
 
      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
 
    "node_modules/is-what": {
 
      "version": "3.14.1",
 
      "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
 
      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
 
      "dev": true
 
    },
 
    "node_modules/is-typedarray": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
 
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/isexe": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
 
      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
 
      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
 
      "dev": true
 
    },
 
    "node_modules/isstream": {
 
      "version": "0.1.2",
 
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
 
      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/jquery": {
 
      "version": "3.4.1",
 
      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
 
      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
 
      "version": "3.7.1",
 
      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
 
      "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
 
    },
 
    "node_modules/jquery.caret": {
 
      "version": "0.3.1",
 
      "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
 
      "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
 
      "integrity": "sha512-nS2mjMZzP4e4tIOgeTLSs+jFhUsUVZUPgkUMpi4DlJq9SgKEg6w2jf7q8joMJp6v+voJHXrH8rzAnbyxWHwAeA=="
 
    },
 
    "node_modules/jquery.flot": {
 
      "version": "0.8.3",
 
      "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
 
      "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
 
    },
 
@@ -1217,120 +1216,83 @@
 
      "version": "4.0.0",
 
      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 
      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
 
      "dev": true
 
    },
 
    "node_modules/js-yaml": {
 
      "version": "3.13.1",
 
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
 
      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
 
      "version": "3.14.1",
 
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
 
      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
 
      "dev": true,
 
      "dependencies": {
 
        "argparse": "^1.0.7",
 
        "esprima": "^4.0.0"
 
      },
 
      "bin": {
 
        "js-yaml": "bin/js-yaml.js"
 
      }
 
    },
 
    "node_modules/jsbn": {
 
      "version": "0.1.1",
 
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
 
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/json-parse-better-errors": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
 
      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
 
    "node_modules/json-parse-even-better-errors": {
 
      "version": "2.3.1",
 
      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
 
      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
 
      "dev": true
 
    },
 
    "node_modules/json-schema": {
 
      "version": "0.2.3",
 
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
 
      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/json-schema-traverse": {
 
      "version": "0.4.1",
 
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
 
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
 
      "dev": true
 
    },
 
    "node_modules/json-stable-stringify-without-jsonify": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
 
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
 
      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
 
      "dev": true
 
    },
 
    "node_modules/json-stringify-safe": {
 
      "version": "5.0.1",
 
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
 
      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/jsprim": {
 
      "version": "1.4.1",
 
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
 
      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
 
      "dev": true,
 
      "engines": [
 
        "node >=0.6.0"
 
      ],
 
      "optional": true,
 
      "dependencies": {
 
        "assert-plus": "1.0.0",
 
        "extsprintf": "1.3.0",
 
        "json-schema": "0.2.3",
 
        "verror": "1.10.0"
 
      }
 
    },
 
    "node_modules/less": {
 
      "version": "3.10.3",
 
      "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
 
      "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
 
      "version": "3.13.1",
 
      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
 
      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
 
      "dev": true,
 
      "dependencies": {
 
        "clone": "^2.1.2"
 
        "copy-anything": "^2.0.1",
 
        "tslib": "^1.10.0"
 
      },
 
      "bin": {
 
        "lessc": "bin/lessc"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      },
 
      "optionalDependencies": {
 
        "errno": "^0.1.1",
 
        "graceful-fs": "^4.1.2",
 
        "image-size": "~0.5.0",
 
        "make-dir": "^2.1.0",
 
        "mime": "^1.4.1",
 
        "mkdirp": "^0.5.0",
 
        "promise": "^7.1.1",
 
        "request": "^2.83.0",
 
        "native-request": "^1.0.5",
 
        "source-map": "~0.6.0"
 
      }
 
    },
 
    "node_modules/less-plugin-clean-css": {
 
      "version": "1.5.1",
 
      "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
 
      "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
 
      "integrity": "sha512-Pc68AFHAEJO3aAoRvnUTW5iAiAv6y+TQsWLTTwVNqjiDno6xCvxz1AtfQl7Y0MZSpHPalFajM1EU4RB5UVINpw==",
 
      "dev": true,
 
      "dependencies": {
 
        "clean-css": "^3.0.1"
 
      },
 
      "engines": {
 
        "node": ">=0.4.2"
 
      }
 
    },
 
    "node_modules/levn": {
 
      "version": "0.3.0",
 
      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
 
      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
 
      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
 
      "dev": true,
 
      "dependencies": {
 
        "prelude-ls": "~1.1.2",
 
        "type-check": "~0.3.2"
 
      },
 
      "engines": {
 
@@ -1355,18 +1317,60 @@
 
        "treeify": "^1.1.0"
 
      },
 
      "bin": {
 
        "license-checker": "bin/license-checker"
 
      }
 
    },
 
    "node_modules/license-checker/node_modules/debug": {
 
      "version": "3.2.7",
 
      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
 
      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "ms": "^2.1.1"
 
      }
 
    },
 
    "node_modules/license-checker/node_modules/semver": {
 
      "version": "5.7.2",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
 
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
 
      "dev": true,
 
      "bin": {
 
        "semver": "bin/semver"
 
      }
 
    },
 
    "node_modules/lodash": {
 
      "version": "4.17.15",
 
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
 
      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
 
      "version": "4.17.21",
 
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
 
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
 
      "dev": true
 
    },
 
    "node_modules/make-dir": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
 
      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "pify": "^4.0.1",
 
        "semver": "^5.6.0"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/make-dir/node_modules/semver": {
 
      "version": "5.7.2",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
 
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
 
      "dev": true,
 
      "optional": true,
 
      "bin": {
 
        "semver": "bin/semver"
 
      }
 
    },
 
    "node_modules/mime": {
 
      "version": "1.6.0",
 
      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
 
      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
 
      "dev": true,
 
      "optional": true,
 
@@ -1374,70 +1378,49 @@
 
        "mime": "cli.js"
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/mime-db": {
 
      "version": "1.40.0",
 
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
 
      "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": ">= 0.6"
 
      }
 
    },
 
    "node_modules/mime-types": {
 
      "version": "2.1.24",
 
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
 
      "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "mime-db": "1.40.0"
 
      },
 
      "engines": {
 
        "node": ">= 0.6"
 
      }
 
    },
 
    "node_modules/mimic-fn": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
 
      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/minimatch": {
 
      "version": "3.0.4",
 
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
 
      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
 
      "version": "3.1.2",
 
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
 
      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
 
      "dev": true,
 
      "dependencies": {
 
        "brace-expansion": "^1.1.7"
 
      },
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/minimist": {
 
      "version": "0.0.8",
 
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
 
      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
 
      "dev": true
 
      "version": "1.2.8",
 
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
 
      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
 
      "dev": true,
 
      "funding": {
 
        "url": "https://github.com/sponsors/ljharb"
 
      }
 
    },
 
    "node_modules/mkdirp": {
 
      "version": "0.5.1",
 
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
 
      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
 
      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
 
      "version": "0.5.6",
 
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
 
      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
 
      "dev": true,
 
      "dependencies": {
 
        "minimist": "0.0.8"
 
        "minimist": "^1.2.6"
 
      },
 
      "bin": {
 
        "mkdirp": "bin/cmd.js"
 
      }
 
    },
 
    "node_modules/ms": {
 
@@ -1449,28 +1432,35 @@
 
    "node_modules/mute-stream": {
 
      "version": "0.0.8",
 
      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
 
      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 
      "dev": true
 
    },
 
    "node_modules/native-request": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
 
      "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/natural-compare": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
 
      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
 
      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
 
      "dev": true
 
    },
 
    "node_modules/nice-try": {
 
      "version": "1.0.5",
 
      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
 
      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
 
      "dev": true
 
    },
 
    "node_modules/nopt": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
 
      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
 
      "version": "4.0.3",
 
      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
 
      "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
 
      "dev": true,
 
      "dependencies": {
 
        "abbrev": "1",
 
        "osenv": "^0.1.4"
 
      },
 
      "bin": {
 
@@ -1486,41 +1476,49 @@
 
        "hosted-git-info": "^2.1.4",
 
        "resolve": "^1.10.0",
 
        "semver": "2 || 3 || 4 || 5",
 
        "validate-npm-package-license": "^3.0.1"
 
      }
 
    },
 
    "node_modules/oauth-sign": {
 
      "version": "0.9.0",
 
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
 
      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
 
    "node_modules/normalize-package-data/node_modules/semver": {
 
      "version": "5.7.2",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
 
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": "*"
 
      "bin": {
 
        "semver": "bin/semver"
 
      }
 
    },
 
    "node_modules/npm-normalize-package-bin": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
 
      "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
 
      "dev": true
 
    },
 
    "node_modules/once": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 
      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
 
      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
 
      "dev": true,
 
      "dependencies": {
 
        "wrappy": "1"
 
      }
 
    },
 
    "node_modules/onetime": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
 
      "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
 
      "version": "5.1.2",
 
      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
 
      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
 
      "dev": true,
 
      "dependencies": {
 
        "mimic-fn": "^2.1.0"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/optionator": {
 
      "version": "0.8.3",
 
      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
 
      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
 
@@ -1537,31 +1535,32 @@
 
        "node": ">= 0.8.0"
 
      }
 
    },
 
    "node_modules/os-homedir": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
 
      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
 
      "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/os-tmpdir": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
 
      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
 
      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/osenv": {
 
      "version": "0.1.5",
 
      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
 
      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
 
      "deprecated": "This package is no longer supported.",
 
      "dev": true,
 
      "dependencies": {
 
        "os-homedir": "^1.0.0",
 
        "os-tmpdir": "^1.0.0"
 
      }
 
    },
 
@@ -1577,44 +1576,53 @@
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/path-is-absolute": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
 
      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
 
      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/path-key": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
 
      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
 
      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/path-parse": {
 
      "version": "1.0.6",
 
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
 
      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
 
      "version": "1.0.7",
 
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
 
      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
 
      "dev": true
 
    },
 
    "node_modules/performance-now": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
 
      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
 
    "node_modules/picocolors": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
 
      "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
 
      "dev": true
 
    },
 
    "node_modules/pify": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
 
      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
 
      "dev": true,
 
      "optional": true
 
      "optional": true,
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/prelude-ls": {
 
      "version": "1.1.2",
 
      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
 
      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
 
      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">= 0.8.0"
 
      }
 
    },
 
    "node_modules/progress": {
 
@@ -1623,59 +1631,33 @@
 
      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.4.0"
 
      }
 
    },
 
    "node_modules/promise": {
 
      "version": "7.3.1",
 
      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
 
      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "asap": "~2.0.3"
 
      }
 
    },
 
    "node_modules/prr": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
 
      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/psl": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
 
      "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
 
      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/punycode": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
 
      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
 
      "version": "2.3.1",
 
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
 
      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/qs": {
 
      "version": "6.5.2",
 
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
 
      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
 
      "dev": true,
 
      "optional": true,
 
      "engines": {
 
        "node": ">=0.6"
 
      }
 
    },
 
    "node_modules/read-installed": {
 
      "version": "4.0.3",
 
      "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
 
      "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
 
      "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==",
 
      "deprecated": "This package is no longer supported.",
 
      "dev": true,
 
      "dependencies": {
 
        "debuglog": "^1.0.1",
 
        "read-package-json": "^2.0.0",
 
        "readdir-scoped-modules": "^1.0.0",
 
        "semver": "2 || 3 || 4 || 5",
 
@@ -1683,45 +1665,39 @@
 
        "util-extend": "^1.0.1"
 
      },
 
      "optionalDependencies": {
 
        "graceful-fs": "^4.1.2"
 
      }
 
    },
 
    "node_modules/read-installed/node_modules/semver": {
 
      "version": "5.7.2",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
 
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
 
      "dev": true,
 
      "bin": {
 
        "semver": "bin/semver"
 
      }
 
    },
 
    "node_modules/read-package-json": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
 
      "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
 
      "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
 
      "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
 
      "dev": true,
 
      "dependencies": {
 
        "glob": "^7.1.1",
 
        "json-parse-better-errors": "^1.0.1",
 
        "json-parse-even-better-errors": "^2.3.0",
 
        "normalize-package-data": "^2.0.0",
 
        "slash": "^1.0.0"
 
      },
 
      "optionalDependencies": {
 
        "graceful-fs": "^4.1.2"
 
      }
 
    },
 
    "node_modules/readable-stream": {
 
      "version": "3.6.0",
 
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
 
      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
 
      "dev": true,
 
      "dependencies": {
 
        "inherits": "^2.0.3",
 
        "string_decoder": "^1.1.1",
 
        "util-deprecate": "^1.0.1"
 
      },
 
      "engines": {
 
        "node": ">= 6"
 
        "npm-normalize-package-bin": "^1.0.0"
 
      }
 
    },
 
    "node_modules/readdir-scoped-modules": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
 
      "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
 
      "deprecated": "This functionality has been moved to @npmcli/fs",
 
      "dev": true,
 
      "dependencies": {
 
        "debuglog": "^1.0.1",
 
        "dezalgo": "^1.0.0",
 
        "graceful-fs": "^4.1.2",
 
        "once": "^1.3.0"
 
@@ -1733,52 +1709,27 @@
 
      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6.5.0"
 
      }
 
    },
 
    "node_modules/request": {
 
      "version": "2.88.0",
 
      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
 
      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
 
      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "aws-sign2": "~0.7.0",
 
        "aws4": "^1.8.0",
 
        "caseless": "~0.12.0",
 
        "combined-stream": "~1.0.6",
 
        "extend": "~3.0.2",
 
        "forever-agent": "~0.6.1",
 
        "form-data": "~2.3.2",
 
        "har-validator": "~5.1.0",
 
        "http-signature": "~1.2.0",
 
        "is-typedarray": "~1.0.0",
 
        "isstream": "~0.1.2",
 
        "json-stringify-safe": "~5.0.1",
 
        "mime-types": "~2.1.19",
 
        "oauth-sign": "~0.9.0",
 
        "performance-now": "^2.1.0",
 
        "qs": "~6.5.2",
 
        "safe-buffer": "^5.1.2",
 
        "tough-cookie": "~2.4.3",
 
        "tunnel-agent": "^0.6.0",
 
        "uuid": "^3.3.2"
 
      },
 
      "engines": {
 
        "node": ">= 4"
 
      }
 
    },
 
    "node_modules/resolve": {
 
      "version": "1.12.0",
 
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
 
      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
 
      "version": "1.22.8",
 
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
 
      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
 
      "dev": true,
 
      "dependencies": {
 
        "path-parse": "^1.0.6"
 
        "is-core-module": "^2.13.0",
 
        "path-parse": "^1.0.7",
 
        "supports-preserve-symlinks-flag": "^1.0.0"
 
      },
 
      "bin": {
 
        "resolve": "bin/resolve"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/ljharb"
 
      }
 
    },
 
    "node_modules/resolve-from": {
 
      "version": "4.0.0",
 
      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
 
      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
 
@@ -1801,111 +1752,94 @@
 
      }
 
    },
 
    "node_modules/rimraf": {
 
      "version": "2.6.3",
 
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
 
      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
 
      "deprecated": "Rimraf versions prior to v4 are no longer supported",
 
      "dev": true,
 
      "dependencies": {
 
        "glob": "^7.1.3"
 
      },
 
      "bin": {
 
        "rimraf": "bin.js"
 
      }
 
    },
 
    "node_modules/run-async": {
 
      "version": "2.3.0",
 
      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
 
      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
 
      "version": "2.4.1",
 
      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
 
      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "is-promise": "^2.1.0"
 
      },
 
      "engines": {
 
        "node": ">=0.12.0"
 
      }
 
    },
 
    "node_modules/rxjs": {
 
      "version": "6.5.4",
 
      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
 
      "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
 
      "version": "6.6.7",
 
      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
 
      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
 
      "dev": true,
 
      "dependencies": {
 
        "tslib": "^1.9.0"
 
      },
 
      "engines": {
 
        "npm": ">=2.0.0"
 
      }
 
    },
 
    "node_modules/safe-buffer": {
 
      "version": "5.2.0",
 
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
 
      "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
 
      "dev": true
 
    },
 
    "node_modules/safer-buffer": {
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
 
      "dev": true
 
    },
 
    "node_modules/select2": {
 
      "version": "3.5.1",
 
      "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
 
      "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
 
      "integrity": "sha512-IFX3UFPpPyK1I1Kuw1R1x+upMyNAZbMlkFhiTnRCRR7ii0KU1brmJMLa3GZcrMWCHiQlm0eKqb6i4XO4pqOrGQ=="
 
    },
 
    "node_modules/select2-bootstrap-css": {
 
      "version": "1.4.6",
 
      "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
 
      "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
 
      "integrity": "sha512-BBsisfivUYjwhj3QdWNS15sBqC/DHoszRC4B3GIzJwMNO1pT1uVvwDm5u2TLXi7oj/3S4vIeQ6yAuMa86d7c9A=="
 
    },
 
    "node_modules/semver": {
 
      "version": "5.7.1",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
 
      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
 
      "version": "6.3.1",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
 
      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
 
      "dev": true,
 
      "bin": {
 
        "semver": "bin/semver"
 
        "semver": "bin/semver.js"
 
      }
 
    },
 
    "node_modules/shebang-command": {
 
      "version": "1.2.0",
 
      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
 
      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
 
      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
 
      "dev": true,
 
      "dependencies": {
 
        "shebang-regex": "^1.0.0"
 
      },
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/shebang-regex": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
 
      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
 
      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/signal-exit": {
 
      "version": "3.0.2",
 
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
 
      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
 
      "version": "3.0.7",
 
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
 
      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
 
      "dev": true
 
    },
 
    "node_modules/slash": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
 
      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/slice-ansi": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
 
      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
 
      "dev": true,
 
      "dependencies": {
 
@@ -1917,22 +1851,22 @@
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
 
      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
 
      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/slide": {
 
      "version": "1.1.6",
 
      "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
 
      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
 
      "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
 
      "dev": true,
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/source-map": {
 
@@ -1954,41 +1888,41 @@
 
        "array-find-index": "^1.0.2",
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-ranges": "^2.0.0"
 
      }
 
    },
 
    "node_modules/spdx-correct": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
 
      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
 
      "version": "3.2.0",
 
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
 
      "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
 
      "dev": true,
 
      "dependencies": {
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-license-ids": "^3.0.0"
 
      }
 
    },
 
    "node_modules/spdx-exceptions": {
 
      "version": "2.2.0",
 
      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
 
      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
 
      "version": "2.5.0",
 
      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
 
      "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
 
      "dev": true
 
    },
 
    "node_modules/spdx-expression-parse": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
 
      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
 
      "version": "3.0.1",
 
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
 
      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
 
      "dev": true,
 
      "dependencies": {
 
        "spdx-exceptions": "^2.1.0",
 
        "spdx-license-ids": "^3.0.0"
 
      }
 
    },
 
    "node_modules/spdx-license-ids": {
 
      "version": "3.0.5",
 
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
 
      "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
 
      "version": "3.0.18",
 
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
 
      "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
 
      "dev": true
 
    },
 
    "node_modules/spdx-ranges": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
 
      "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
 
@@ -2005,71 +1939,45 @@
 
        "spdx-ranges": "^2.0.0"
 
      }
 
    },
 
    "node_modules/sprintf-js": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
 
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
 
      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
 
      "dev": true
 
    },
 
    "node_modules/sshpk": {
 
      "version": "1.16.1",
 
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
 
      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "asn1": "~0.2.3",
 
        "assert-plus": "^1.0.0",
 
        "bcrypt-pbkdf": "^1.0.0",
 
        "dashdash": "^1.12.0",
 
        "ecc-jsbn": "~0.1.1",
 
        "getpass": "^0.1.1",
 
        "jsbn": "~0.1.0",
 
        "safer-buffer": "^2.0.2",
 
        "tweetnacl": "~0.14.0"
 
      },
 
      "bin": {
 
        "sshpk-conv": "bin/sshpk-conv",
 
        "sshpk-sign": "bin/sshpk-sign",
 
        "sshpk-verify": "bin/sshpk-verify"
 
      },
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/string_decoder": {
 
      "version": "1.3.0",
 
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
 
      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
 
      "dev": true,
 
      "dependencies": {
 
        "safe-buffer": "~5.2.0"
 
      }
 
    },
 
    "node_modules/string-width": {
 
      "version": "4.2.0",
 
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
 
      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
 
      "version": "4.2.3",
 
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
 
      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
 
      "dev": true,
 
      "dependencies": {
 
        "emoji-regex": "^8.0.0",
 
        "is-fullwidth-code-point": "^3.0.0",
 
        "strip-ansi": "^6.0.0"
 
        "strip-ansi": "^6.0.1"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/string-width/node_modules/ansi-regex": {
 
      "version": "5.0.1",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
 
      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/string-width/node_modules/strip-ansi": {
 
      "version": "6.0.0",
 
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
 
      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
 
      "version": "6.0.1",
 
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
 
      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
 
      "dev": true,
 
      "dependencies": {
 
        "ansi-regex": "^5.0.0"
 
        "ansi-regex": "^5.0.1"
 
      },
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/strip-ansi": {
 
@@ -2081,28 +1989,22 @@
 
        "ansi-regex": "^4.1.0"
 
      },
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/strip-ansi/node_modules/ansi-regex": {
 
      "version": "4.1.0",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
 
      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/strip-json-comments": {
 
      "version": "3.0.1",
 
      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
 
      "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
 
      "version": "3.1.1",
 
      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
 
      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/sindresorhus"
 
      }
 
    },
 
    "node_modules/supports-color": {
 
      "version": "5.5.0",
 
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
 
      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
 
@@ -2111,12 +2013,24 @@
 
        "has-flag": "^3.0.0"
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/supports-preserve-symlinks-flag": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
 
      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">= 0.4"
 
      },
 
      "funding": {
 
        "url": "https://github.com/sponsors/ljharb"
 
      }
 
    },
 
    "node_modules/table": {
 
      "version": "5.4.6",
 
      "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
 
      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
 
      "dev": true,
 
      "dependencies": {
 
@@ -2135,13 +2049,13 @@
 
      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
 
      "dev": true
 
    },
 
    "node_modules/table/node_modules/is-fullwidth-code-point": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
 
      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
 
      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    },
 
    "node_modules/table/node_modules/string-width": {
 
@@ -2158,19 +2072,19 @@
 
        "node": ">=6"
 
      }
 
    },
 
    "node_modules/text-table": {
 
      "version": "0.2.0",
 
      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
 
      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 
      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
 
      "dev": true
 
    },
 
    "node_modules/through": {
 
      "version": "2.3.8",
 
      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
 
      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
 
      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
 
      "dev": true
 
    },
 
    "node_modules/tmp": {
 
      "version": "0.0.33",
 
      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
 
      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
 
@@ -2179,72 +2093,31 @@
 
        "os-tmpdir": "~1.0.2"
 
      },
 
      "engines": {
 
        "node": ">=0.6.0"
 
      }
 
    },
 
    "node_modules/tough-cookie": {
 
      "version": "2.4.3",
 
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
 
      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "psl": "^1.1.24",
 
        "punycode": "^1.4.1"
 
      },
 
      "engines": {
 
        "node": ">=0.8"
 
      }
 
    },
 
    "node_modules/tough-cookie/node_modules/punycode": {
 
      "version": "1.4.1",
 
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
 
      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/treeify": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
 
      "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.6"
 
      }
 
    },
 
    "node_modules/tslib": {
 
      "version": "1.11.0",
 
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
 
      "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
 
      "version": "1.14.1",
 
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
 
      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
 
      "dev": true
 
    },
 
    "node_modules/tunnel-agent": {
 
      "version": "0.6.0",
 
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
 
      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
 
      "dev": true,
 
      "optional": true,
 
      "dependencies": {
 
        "safe-buffer": "^5.0.1"
 
      },
 
      "engines": {
 
        "node": "*"
 
      }
 
    },
 
    "node_modules/tweetnacl": {
 
      "version": "0.14.5",
 
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
 
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "node_modules/type-check": {
 
      "version": "0.3.2",
 
      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
 
      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
 
      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
 
      "dev": true,
 
      "dependencies": {
 
        "prelude-ls": "~1.1.2"
 
      },
 
      "engines": {
 
        "node": ">= 0.8.0"
 
@@ -2257,74 +2130,42 @@
 
      "dev": true,
 
      "engines": {
 
        "node": ">=8"
 
      }
 
    },
 
    "node_modules/uri-js": {
 
      "version": "4.2.2",
 
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
 
      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
 
      "version": "4.4.1",
 
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
 
      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
 
      "dev": true,
 
      "dependencies": {
 
        "punycode": "^2.1.0"
 
      }
 
    },
 
    "node_modules/util-deprecate": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 
      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
 
      "dev": true
 
    },
 
    "node_modules/util-extend": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
 
      "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
 
      "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
 
      "dev": true
 
    },
 
    "node_modules/uuid": {
 
      "version": "3.3.3",
 
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
 
      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
 
      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
 
      "dev": true,
 
      "optional": true,
 
      "bin": {
 
        "uuid": "bin/uuid"
 
      }
 
    },
 
    "node_modules/v8-compile-cache": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
 
      "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
 
      "version": "2.4.0",
 
      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
 
      "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
 
      "dev": true
 
    },
 
    "node_modules/validate-npm-package-license": {
 
      "version": "3.0.4",
 
      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
 
      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
 
      "dev": true,
 
      "dependencies": {
 
        "spdx-correct": "^3.0.0",
 
        "spdx-expression-parse": "^3.0.0"
 
      }
 
    },
 
    "node_modules/verror": {
 
      "version": "1.10.0",
 
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
 
      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
 
      "dev": true,
 
      "engines": [
 
        "node >=0.6.0"
 
      ],
 
      "optional": true,
 
      "dependencies": {
 
        "assert-plus": "^1.0.0",
 
        "core-util-is": "1.0.2",
 
        "extsprintf": "^1.2.0"
 
      }
 
    },
 
    "node_modules/which": {
 
      "version": "1.3.1",
 
      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
 
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
 
      "dev": true,
 
      "dependencies": {
 
@@ -2332,24 +2173,24 @@
 
      },
 
      "bin": {
 
        "which": "bin/which"
 
      }
 
    },
 
    "node_modules/word-wrap": {
 
      "version": "1.2.3",
 
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
 
      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
 
      "version": "1.2.5",
 
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
 
      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
 
      "dev": true,
 
      "engines": {
 
        "node": ">=0.10.0"
 
      }
 
    },
 
    "node_modules/wrappy": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
 
      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
 
      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
 
      "dev": true
 
    },
 
    "node_modules/write": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
 
      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
 
@@ -2358,1943 +2199,8 @@
 
        "mkdirp": "^0.5.1"
 
      },
 
      "engines": {
 
        "node": ">=4"
 
      }
 
    }
 
  },
 
  "dependencies": {
 
    "@babel/code-frame": {
 
      "version": "7.8.3",
 
      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
 
      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
 
      "dev": true,
 
      "requires": {
 
        "@babel/highlight": "^7.8.3"
 
      }
 
    },
 
    "@babel/highlight": {
 
      "version": "7.8.3",
 
      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
 
      "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
 
      "dev": true,
 
      "requires": {
 
        "chalk": "^2.0.0",
 
        "esutils": "^2.0.2",
 
        "js-tokens": "^4.0.0"
 
      }
 
    },
 
    "abbrev": {
 
      "version": "1.1.1",
 
      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
 
      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
 
      "dev": true
 
    },
 
    "acorn": {
 
      "version": "7.1.0",
 
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
 
      "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
 
      "dev": true
 
    },
 
    "acorn-jsx": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
 
      "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
 
      "dev": true,
 
      "requires": {}
 
    },
 
    "ajv": {
 
      "version": "6.10.2",
 
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
 
      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
 
      "dev": true,
 
      "requires": {
 
        "fast-deep-equal": "^2.0.1",
 
        "fast-json-stable-stringify": "^2.0.0",
 
        "json-schema-traverse": "^0.4.1",
 
        "uri-js": "^4.2.2"
 
      }
 
    },
 
    "amdefine": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
 
      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
 
      "dev": true
 
    },
 
    "ansi-escapes": {
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
 
      "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
 
      "dev": true,
 
      "requires": {
 
        "type-fest": "^0.8.1"
 
      }
 
    },
 
    "ansi-regex": {
 
      "version": "5.0.0",
 
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
 
      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
 
      "dev": true
 
    },
 
    "ansi-styles": {
 
      "version": "3.2.1",
 
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
 
      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
 
      "dev": true,
 
      "requires": {
 
        "color-convert": "^1.9.0"
 
      }
 
    },
 
    "argparse": {
 
      "version": "1.0.10",
 
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
 
      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
 
      "dev": true,
 
      "requires": {
 
        "sprintf-js": "~1.0.2"
 
      }
 
    },
 
    "array-find-index": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
 
      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
 
      "dev": true
 
    },
 
    "asap": {
 
      "version": "2.0.6",
 
      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
 
      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
 
      "dev": true
 
    },
 
    "asn1": {
 
      "version": "0.2.4",
 
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
 
      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "safer-buffer": "~2.1.0"
 
      }
 
    },
 
    "assert-plus": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
 
      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "astral-regex": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
 
      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
 
      "dev": true
 
    },
 
    "asynckit": {
 
      "version": "0.4.0",
 
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "at.js": {
 
      "version": "1.5.4",
 
      "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
 
      "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
 
      "requires": {}
 
    },
 
    "aws-sign2": {
 
      "version": "0.7.0",
 
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
 
      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "aws4": {
 
      "version": "1.8.0",
 
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
 
      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "balanced-match": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
 
      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
 
      "dev": true
 
    },
 
    "bcrypt-pbkdf": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
 
      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "tweetnacl": "^0.14.3"
 
      }
 
    },
 
    "bootstrap": {
 
      "version": "3.3.7",
 
      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
 
      "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
 
    },
 
    "brace-expansion": {
 
      "version": "1.1.11",
 
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 
      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
 
      "dev": true,
 
      "requires": {
 
        "balanced-match": "^1.0.0",
 
        "concat-map": "0.0.1"
 
      }
 
    },
 
    "callsites": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
 
      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
 
      "dev": true
 
    },
 
    "caseless": {
 
      "version": "0.12.0",
 
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
 
      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "chalk": {
 
      "version": "2.4.2",
 
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
 
      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
 
      "dev": true,
 
      "requires": {
 
        "ansi-styles": "^3.2.1",
 
        "escape-string-regexp": "^1.0.5",
 
        "supports-color": "^5.3.0"
 
      }
 
    },
 
    "chardet": {
 
      "version": "0.7.0",
 
      "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
 
      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
 
      "dev": true
 
    },
 
    "clean-css": {
 
      "version": "3.4.28",
 
      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
 
      "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
 
      "dev": true,
 
      "requires": {
 
        "commander": "2.8.x",
 
        "source-map": "0.4.x"
 
      },
 
      "dependencies": {
 
        "source-map": {
 
          "version": "0.4.4",
 
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
 
          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
 
          "dev": true,
 
          "requires": {
 
            "amdefine": ">=0.0.4"
 
          }
 
        }
 
      }
 
    },
 
    "cli-cursor": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
 
      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
 
      "dev": true,
 
      "requires": {
 
        "restore-cursor": "^3.1.0"
 
      }
 
    },
 
    "cli-width": {
 
      "version": "2.2.0",
 
      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
 
      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
 
      "dev": true
 
    },
 
    "clone": {
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
 
      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
 
      "dev": true
 
    },
 
    "codemirror": {
 
      "version": "5.49.0",
 
      "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
 
      "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
 
    },
 
    "color-convert": {
 
      "version": "1.9.3",
 
      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
 
      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
 
      "dev": true,
 
      "requires": {
 
        "color-name": "1.1.3"
 
      }
 
    },
 
    "color-name": {
 
      "version": "1.1.3",
 
      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
 
      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
 
      "dev": true
 
    },
 
    "combined-stream": {
 
      "version": "1.0.8",
 
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
 
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "delayed-stream": "~1.0.0"
 
      }
 
    },
 
    "commander": {
 
      "version": "2.8.1",
 
      "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
 
      "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
 
      "dev": true,
 
      "requires": {
 
        "graceful-readlink": ">= 1.0.0"
 
      }
 
    },
 
    "concat-map": {
 
      "version": "0.0.1",
 
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 
      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
 
      "dev": true
 
    },
 
    "core-util-is": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "cross-spawn": {
 
      "version": "6.0.5",
 
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
 
      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
 
      "dev": true,
 
      "requires": {
 
        "nice-try": "^1.0.4",
 
        "path-key": "^2.0.1",
 
        "semver": "^5.5.0",
 
        "shebang-command": "^1.2.0",
 
        "which": "^1.2.9"
 
      }
 
    },
 
    "dashdash": {
 
      "version": "1.14.1",
 
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
 
      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "assert-plus": "^1.0.0"
 
      }
 
    },
 
    "datatables.net": {
 
      "version": "1.10.20",
 
      "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
 
      "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
 
      "requires": {
 
        "jquery": ">=1.7"
 
      }
 
    },
 
    "datatables.net-bs": {
 
      "version": "1.10.20",
 
      "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
 
      "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
 
      "requires": {
 
        "datatables.net": "1.10.20",
 
        "jquery": ">=1.7"
 
      }
 
    },
 
    "debug": {
 
      "version": "3.2.6",
 
      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
 
      "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
 
      "dev": true,
 
      "requires": {
 
        "ms": "^2.1.1"
 
      }
 
    },
 
    "debuglog": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
 
      "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
 
      "dev": true
 
    },
 
    "deep-is": {
 
      "version": "0.1.3",
 
      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
 
      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
 
      "dev": true
 
    },
 
    "delayed-stream": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
 
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "dezalgo": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
 
      "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
 
      "dev": true,
 
      "requires": {
 
        "asap": "^2.0.0",
 
        "wrappy": "1"
 
      }
 
    },
 
    "doctrine": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
 
      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
 
      "dev": true,
 
      "requires": {
 
        "esutils": "^2.0.2"
 
      }
 
    },
 
    "dom-serializer": {
 
      "version": "0.2.2",
 
      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
 
      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
 
      "dev": true,
 
      "requires": {
 
        "domelementtype": "^2.0.1",
 
        "entities": "^2.0.0"
 
      },
 
      "dependencies": {
 
        "domelementtype": {
 
          "version": "2.0.1",
 
          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
 
          "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
 
          "dev": true
 
        },
 
        "entities": {
 
          "version": "2.0.0",
 
          "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
 
          "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
 
          "dev": true
 
        }
 
      }
 
    },
 
    "domelementtype": {
 
      "version": "1.3.1",
 
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
 
      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
 
      "dev": true
 
    },
 
    "domhandler": {
 
      "version": "2.4.2",
 
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
 
      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
 
      "dev": true,
 
      "requires": {
 
        "domelementtype": "1"
 
      }
 
    },
 
    "domutils": {
 
      "version": "1.7.0",
 
      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
 
      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
 
      "dev": true,
 
      "requires": {
 
        "dom-serializer": "0",
 
        "domelementtype": "1"
 
      }
 
    },
 
    "ecc-jsbn": {
 
      "version": "0.1.2",
 
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
 
      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "jsbn": "~0.1.0",
 
        "safer-buffer": "^2.1.0"
 
      }
 
    },
 
    "emoji-regex": {
 
      "version": "8.0.0",
 
      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
 
      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
 
      "dev": true
 
    },
 
    "entities": {
 
      "version": "1.1.2",
 
      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
 
      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
 
      "dev": true
 
    },
 
    "errno": {
 
      "version": "0.1.7",
 
      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
 
      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "prr": "~1.0.1"
 
      }
 
    },
 
    "escape-string-regexp": {
 
      "version": "1.0.5",
 
      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
 
      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
 
      "dev": true
 
    },
 
    "eslint": {
 
      "version": "6.8.0",
 
      "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
 
      "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
 
      "dev": true,
 
      "requires": {
 
        "@babel/code-frame": "^7.0.0",
 
        "ajv": "^6.10.0",
 
        "chalk": "^2.1.0",
 
        "cross-spawn": "^6.0.5",
 
        "debug": "^4.0.1",
 
        "doctrine": "^3.0.0",
 
        "eslint-scope": "^5.0.0",
 
        "eslint-utils": "^1.4.3",
 
        "eslint-visitor-keys": "^1.1.0",
 
        "espree": "^6.1.2",
 
        "esquery": "^1.0.1",
 
        "esutils": "^2.0.2",
 
        "file-entry-cache": "^5.0.1",
 
        "functional-red-black-tree": "^1.0.1",
 
        "glob-parent": "^5.0.0",
 
        "globals": "^12.1.0",
 
        "ignore": "^4.0.6",
 
        "import-fresh": "^3.0.0",
 
        "imurmurhash": "^0.1.4",
 
        "inquirer": "^7.0.0",
 
        "is-glob": "^4.0.0",
 
        "js-yaml": "^3.13.1",
 
        "json-stable-stringify-without-jsonify": "^1.0.1",
 
        "levn": "^0.3.0",
 
        "lodash": "^4.17.14",
 
        "minimatch": "^3.0.4",
 
        "mkdirp": "^0.5.1",
 
        "natural-compare": "^1.4.0",
 
        "optionator": "^0.8.3",
 
        "progress": "^2.0.0",
 
        "regexpp": "^2.0.1",
 
        "semver": "^6.1.2",
 
        "strip-ansi": "^5.2.0",
 
        "strip-json-comments": "^3.0.1",
 
        "table": "^5.2.3",
 
        "text-table": "^0.2.0",
 
        "v8-compile-cache": "^2.0.3"
 
      },
 
      "dependencies": {
 
        "debug": {
 
          "version": "4.1.1",
 
          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
 
          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
 
          "dev": true,
 
          "requires": {
 
            "ms": "^2.1.1"
 
          }
 
        },
 
        "semver": {
 
          "version": "6.3.0",
 
          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
 
          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
 
          "dev": true
 
        }
 
      }
 
    },
 
    "eslint-plugin-html": {
 
      "version": "6.0.0",
 
      "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
 
      "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
 
      "dev": true,
 
      "requires": {
 
        "htmlparser2": "^3.10.1"
 
      }
 
    },
 
    "eslint-scope": {
 
      "version": "5.0.0",
 
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
 
      "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
 
      "dev": true,
 
      "requires": {
 
        "esrecurse": "^4.1.0",
 
        "estraverse": "^4.1.1"
 
      }
 
    },
 
    "eslint-utils": {
 
      "version": "1.4.3",
 
      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
 
      "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
 
      "dev": true,
 
      "requires": {
 
        "eslint-visitor-keys": "^1.1.0"
 
      }
 
    },
 
    "eslint-visitor-keys": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
 
      "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
 
      "dev": true
 
    },
 
    "espree": {
 
      "version": "6.1.2",
 
      "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
 
      "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
 
      "dev": true,
 
      "requires": {
 
        "acorn": "^7.1.0",
 
        "acorn-jsx": "^5.1.0",
 
        "eslint-visitor-keys": "^1.1.0"
 
      }
 
    },
 
    "esprima": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
 
      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
 
      "dev": true
 
    },
 
    "esquery": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
 
      "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
 
      "dev": true,
 
      "requires": {
 
        "estraverse": "^4.0.0"
 
      }
 
    },
 
    "esrecurse": {
 
      "version": "4.2.1",
 
      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
 
      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
 
      "dev": true,
 
      "requires": {
 
        "estraverse": "^4.1.0"
 
      }
 
    },
 
    "estraverse": {
 
      "version": "4.3.0",
 
      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
 
      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
 
      "dev": true
 
    },
 
    "esutils": {
 
      "version": "2.0.3",
 
      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
 
      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
 
      "dev": true
 
    },
 
    "extend": {
 
      "version": "3.0.2",
 
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "external-editor": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
 
      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
 
      "dev": true,
 
      "requires": {
 
        "chardet": "^0.7.0",
 
        "iconv-lite": "^0.4.24",
 
        "tmp": "^0.0.33"
 
      }
 
    },
 
    "extsprintf": {
 
      "version": "1.3.0",
 
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
 
      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "fast-deep-equal": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
 
      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
 
      "dev": true
 
    },
 
    "fast-json-stable-stringify": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
 
      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
 
      "dev": true
 
    },
 
    "fast-levenshtein": {
 
      "version": "2.0.6",
 
      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
 
      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
 
      "dev": true
 
    },
 
    "figures": {
 
      "version": "3.2.0",
 
      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
 
      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
 
      "dev": true,
 
      "requires": {
 
        "escape-string-regexp": "^1.0.5"
 
      }
 
    },
 
    "file-entry-cache": {
 
      "version": "5.0.1",
 
      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
 
      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
 
      "dev": true,
 
      "requires": {
 
        "flat-cache": "^2.0.1"
 
      }
 
    },
 
    "flat-cache": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
 
      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
 
      "dev": true,
 
      "requires": {
 
        "flatted": "^2.0.0",
 
        "rimraf": "2.6.3",
 
        "write": "1.0.3"
 
      }
 
    },
 
    "flatted": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
 
      "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
 
      "dev": true
 
    },
 
    "forever-agent": {
 
      "version": "0.6.1",
 
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
 
      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "form-data": {
 
      "version": "2.3.3",
 
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
 
      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "asynckit": "^0.4.0",
 
        "combined-stream": "^1.0.6",
 
        "mime-types": "^2.1.12"
 
      }
 
    },
 
    "fs.realpath": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 
      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 
      "dev": true
 
    },
 
    "functional-red-black-tree": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
 
      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
 
      "dev": true
 
    },
 
    "getpass": {
 
      "version": "0.1.7",
 
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
 
      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "assert-plus": "^1.0.0"
 
      }
 
    },
 
    "glob": {
 
      "version": "7.1.6",
 
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
 
      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
 
      "dev": true,
 
      "requires": {
 
        "fs.realpath": "^1.0.0",
 
        "inflight": "^1.0.4",
 
        "inherits": "2",
 
        "minimatch": "^3.0.4",
 
        "once": "^1.3.0",
 
        "path-is-absolute": "^1.0.0"
 
      }
 
    },
 
    "glob-parent": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
 
      "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
 
      "dev": true,
 
      "requires": {
 
        "is-glob": "^4.0.1"
 
      }
 
    },
 
    "globals": {
 
      "version": "12.3.0",
 
      "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
 
      "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
 
      "dev": true,
 
      "requires": {
 
        "type-fest": "^0.8.1"
 
      }
 
    },
 
    "graceful-fs": {
 
      "version": "4.2.3",
 
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
 
      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
 
      "dev": true
 
    },
 
    "graceful-readlink": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
 
      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
 
      "dev": true
 
    },
 
    "har-schema": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
 
      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "har-validator": {
 
      "version": "5.1.3",
 
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
 
      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "ajv": "^6.5.5",
 
        "har-schema": "^2.0.0"
 
      }
 
    },
 
    "has-flag": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
 
      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
 
      "dev": true
 
    },
 
    "hosted-git-info": {
 
      "version": "2.8.5",
 
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
 
      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
 
      "dev": true
 
    },
 
    "htmlparser2": {
 
      "version": "3.10.1",
 
      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
 
      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
 
      "dev": true,
 
      "requires": {
 
        "domelementtype": "^1.3.1",
 
        "domhandler": "^2.3.0",
 
        "domutils": "^1.5.1",
 
        "entities": "^1.1.1",
 
        "inherits": "^2.0.1",
 
        "readable-stream": "^3.1.1"
 
      }
 
    },
 
    "http-signature": {
 
      "version": "1.2.0",
 
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
 
      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "assert-plus": "^1.0.0",
 
        "jsprim": "^1.2.2",
 
        "sshpk": "^1.7.0"
 
      }
 
    },
 
    "iconv-lite": {
 
      "version": "0.4.24",
 
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
 
      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
 
      "dev": true,
 
      "requires": {
 
        "safer-buffer": ">= 2.1.2 < 3"
 
      }
 
    },
 
    "ignore": {
 
      "version": "4.0.6",
 
      "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
 
      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
 
      "dev": true
 
    },
 
    "image-size": {
 
      "version": "0.5.5",
 
      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
 
      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "import-fresh": {
 
      "version": "3.2.1",
 
      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
 
      "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
 
      "dev": true,
 
      "requires": {
 
        "parent-module": "^1.0.0",
 
        "resolve-from": "^4.0.0"
 
      }
 
    },
 
    "imurmurhash": {
 
      "version": "0.1.4",
 
      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
 
      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
 
      "dev": true
 
    },
 
    "inflight": {
 
      "version": "1.0.6",
 
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 
      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
 
      "dev": true,
 
      "requires": {
 
        "once": "^1.3.0",
 
        "wrappy": "1"
 
      }
 
    },
 
    "inherits": {
 
      "version": "2.0.4",
 
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 
      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
 
      "dev": true
 
    },
 
    "inquirer": {
 
      "version": "7.0.4",
 
      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
 
      "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
 
      "dev": true,
 
      "requires": {
 
        "ansi-escapes": "^4.2.1",
 
        "chalk": "^2.4.2",
 
        "cli-cursor": "^3.1.0",
 
        "cli-width": "^2.0.0",
 
        "external-editor": "^3.0.3",
 
        "figures": "^3.0.0",
 
        "lodash": "^4.17.15",
 
        "mute-stream": "0.0.8",
 
        "run-async": "^2.2.0",
 
        "rxjs": "^6.5.3",
 
        "string-width": "^4.1.0",
 
        "strip-ansi": "^5.1.0",
 
        "through": "^2.3.6"
 
      }
 
    },
 
    "is-extglob": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 
      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
 
      "dev": true
 
    },
 
    "is-fullwidth-code-point": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
 
      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
 
      "dev": true
 
    },
 
    "is-glob": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
 
      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
 
      "dev": true,
 
      "requires": {
 
        "is-extglob": "^2.1.1"
 
      }
 
    },
 
    "is-promise": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
 
      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
 
      "dev": true
 
    },
 
    "is-typedarray": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
 
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "isexe": {
 
      "version": "2.0.0",
 
      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
 
      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
 
      "dev": true
 
    },
 
    "isstream": {
 
      "version": "0.1.2",
 
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
 
      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "jquery": {
 
      "version": "3.4.1",
 
      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
 
      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
 
    },
 
    "jquery.caret": {
 
      "version": "0.3.1",
 
      "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
 
      "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
 
    },
 
    "jquery.flot": {
 
      "version": "0.8.3",
 
      "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
 
      "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
 
    },
 
    "js-tokens": {
 
      "version": "4.0.0",
 
      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 
      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
 
      "dev": true
 
    },
 
    "js-yaml": {
 
      "version": "3.13.1",
 
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
 
      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
 
      "dev": true,
 
      "requires": {
 
        "argparse": "^1.0.7",
 
        "esprima": "^4.0.0"
 
      }
 
    },
 
    "jsbn": {
 
      "version": "0.1.1",
 
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
 
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "json-parse-better-errors": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
 
      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
 
      "dev": true
 
    },
 
    "json-schema": {
 
      "version": "0.2.3",
 
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
 
      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "json-schema-traverse": {
 
      "version": "0.4.1",
 
      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
 
      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
 
      "dev": true
 
    },
 
    "json-stable-stringify-without-jsonify": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
 
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
 
      "dev": true
 
    },
 
    "json-stringify-safe": {
 
      "version": "5.0.1",
 
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
 
      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "jsprim": {
 
      "version": "1.4.1",
 
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
 
      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "assert-plus": "1.0.0",
 
        "extsprintf": "1.3.0",
 
        "json-schema": "0.2.3",
 
        "verror": "1.10.0"
 
      }
 
    },
 
    "less": {
 
      "version": "3.10.3",
 
      "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
 
      "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
 
      "dev": true,
 
      "requires": {
 
        "clone": "^2.1.2",
 
        "errno": "^0.1.1",
 
        "graceful-fs": "^4.1.2",
 
        "image-size": "~0.5.0",
 
        "mime": "^1.4.1",
 
        "mkdirp": "^0.5.0",
 
        "promise": "^7.1.1",
 
        "request": "^2.83.0",
 
        "source-map": "~0.6.0"
 
      }
 
    },
 
    "less-plugin-clean-css": {
 
      "version": "1.5.1",
 
      "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
 
      "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
 
      "dev": true,
 
      "requires": {
 
        "clean-css": "^3.0.1"
 
      }
 
    },
 
    "levn": {
 
      "version": "0.3.0",
 
      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
 
      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
 
      "dev": true,
 
      "requires": {
 
        "prelude-ls": "~1.1.2",
 
        "type-check": "~0.3.2"
 
      }
 
    },
 
    "license-checker": {
 
      "version": "25.0.1",
 
      "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
 
      "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
 
      "dev": true,
 
      "requires": {
 
        "chalk": "^2.4.1",
 
        "debug": "^3.1.0",
 
        "mkdirp": "^0.5.1",
 
        "nopt": "^4.0.1",
 
        "read-installed": "~4.0.3",
 
        "semver": "^5.5.0",
 
        "spdx-correct": "^3.0.0",
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-satisfies": "^4.0.0",
 
        "treeify": "^1.1.0"
 
      }
 
    },
 
    "lodash": {
 
      "version": "4.17.15",
 
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
 
      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
 
      "dev": true
 
    },
 
    "mime": {
 
      "version": "1.6.0",
 
      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
 
      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "mime-db": {
 
      "version": "1.40.0",
 
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
 
      "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "mime-types": {
 
      "version": "2.1.24",
 
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
 
      "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "mime-db": "1.40.0"
 
      }
 
    },
 
    "mimic-fn": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
 
      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
 
      "dev": true
 
    },
 
    "minimatch": {
 
      "version": "3.0.4",
 
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
 
      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
 
      "dev": true,
 
      "requires": {
 
        "brace-expansion": "^1.1.7"
 
      }
 
    },
 
    "minimist": {
 
      "version": "0.0.8",
 
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
 
      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
 
      "dev": true
 
    },
 
    "mkdirp": {
 
      "version": "0.5.1",
 
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
 
      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
 
      "dev": true,
 
      "requires": {
 
        "minimist": "0.0.8"
 
      }
 
    },
 
    "ms": {
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 
      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
 
      "dev": true
 
    },
 
    "mute-stream": {
 
      "version": "0.0.8",
 
      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
 
      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 
      "dev": true
 
    },
 
    "natural-compare": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
 
      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
 
      "dev": true
 
    },
 
    "nice-try": {
 
      "version": "1.0.5",
 
      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
 
      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
 
      "dev": true
 
    },
 
    "nopt": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
 
      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
 
      "dev": true,
 
      "requires": {
 
        "abbrev": "1",
 
        "osenv": "^0.1.4"
 
      }
 
    },
 
    "normalize-package-data": {
 
      "version": "2.5.0",
 
      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
 
      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
 
      "dev": true,
 
      "requires": {
 
        "hosted-git-info": "^2.1.4",
 
        "resolve": "^1.10.0",
 
        "semver": "2 || 3 || 4 || 5",
 
        "validate-npm-package-license": "^3.0.1"
 
      }
 
    },
 
    "oauth-sign": {
 
      "version": "0.9.0",
 
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
 
      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "once": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 
      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
 
      "dev": true,
 
      "requires": {
 
        "wrappy": "1"
 
      }
 
    },
 
    "onetime": {
 
      "version": "5.1.0",
 
      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
 
      "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
 
      "dev": true,
 
      "requires": {
 
        "mimic-fn": "^2.1.0"
 
      }
 
    },
 
    "optionator": {
 
      "version": "0.8.3",
 
      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
 
      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
 
      "dev": true,
 
      "requires": {
 
        "deep-is": "~0.1.3",
 
        "fast-levenshtein": "~2.0.6",
 
        "levn": "~0.3.0",
 
        "prelude-ls": "~1.1.2",
 
        "type-check": "~0.3.2",
 
        "word-wrap": "~1.2.3"
 
      }
 
    },
 
    "os-homedir": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
 
      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
 
      "dev": true
 
    },
 
    "os-tmpdir": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
 
      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
 
      "dev": true
 
    },
 
    "osenv": {
 
      "version": "0.1.5",
 
      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
 
      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
 
      "dev": true,
 
      "requires": {
 
        "os-homedir": "^1.0.0",
 
        "os-tmpdir": "^1.0.0"
 
      }
 
    },
 
    "parent-module": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
 
      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
 
      "dev": true,
 
      "requires": {
 
        "callsites": "^3.0.0"
 
      }
 
    },
 
    "path-is-absolute": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
 
      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
 
      "dev": true
 
    },
 
    "path-key": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
 
      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
 
      "dev": true
 
    },
 
    "path-parse": {
 
      "version": "1.0.6",
 
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
 
      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
 
      "dev": true
 
    },
 
    "performance-now": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
 
      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "prelude-ls": {
 
      "version": "1.1.2",
 
      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
 
      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
 
      "dev": true
 
    },
 
    "progress": {
 
      "version": "2.0.3",
 
      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
 
      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
 
      "dev": true
 
    },
 
    "promise": {
 
      "version": "7.3.1",
 
      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
 
      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "asap": "~2.0.3"
 
      }
 
    },
 
    "prr": {
 
      "version": "1.0.1",
 
      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
 
      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "psl": {
 
      "version": "1.4.0",
 
      "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
 
      "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "punycode": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
 
      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
 
      "dev": true
 
    },
 
    "qs": {
 
      "version": "6.5.2",
 
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
 
      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "read-installed": {
 
      "version": "4.0.3",
 
      "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
 
      "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
 
      "dev": true,
 
      "requires": {
 
        "debuglog": "^1.0.1",
 
        "graceful-fs": "^4.1.2",
 
        "read-package-json": "^2.0.0",
 
        "readdir-scoped-modules": "^1.0.0",
 
        "semver": "2 || 3 || 4 || 5",
 
        "slide": "~1.1.3",
 
        "util-extend": "^1.0.1"
 
      }
 
    },
 
    "read-package-json": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
 
      "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
 
      "dev": true,
 
      "requires": {
 
        "glob": "^7.1.1",
 
        "graceful-fs": "^4.1.2",
 
        "json-parse-better-errors": "^1.0.1",
 
        "normalize-package-data": "^2.0.0",
 
        "slash": "^1.0.0"
 
      }
 
    },
 
    "readable-stream": {
 
      "version": "3.6.0",
 
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
 
      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
 
      "dev": true,
 
      "requires": {
 
        "inherits": "^2.0.3",
 
        "string_decoder": "^1.1.1",
 
        "util-deprecate": "^1.0.1"
 
      }
 
    },
 
    "readdir-scoped-modules": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
 
      "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
 
      "dev": true,
 
      "requires": {
 
        "debuglog": "^1.0.1",
 
        "dezalgo": "^1.0.0",
 
        "graceful-fs": "^4.1.2",
 
        "once": "^1.3.0"
 
      }
 
    },
 
    "regexpp": {
 
      "version": "2.0.1",
 
      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
 
      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
 
      "dev": true
 
    },
 
    "request": {
 
      "version": "2.88.0",
 
      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
 
      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "aws-sign2": "~0.7.0",
 
        "aws4": "^1.8.0",
 
        "caseless": "~0.12.0",
 
        "combined-stream": "~1.0.6",
 
        "extend": "~3.0.2",
 
        "forever-agent": "~0.6.1",
 
        "form-data": "~2.3.2",
 
        "har-validator": "~5.1.0",
 
        "http-signature": "~1.2.0",
 
        "is-typedarray": "~1.0.0",
 
        "isstream": "~0.1.2",
 
        "json-stringify-safe": "~5.0.1",
 
        "mime-types": "~2.1.19",
 
        "oauth-sign": "~0.9.0",
 
        "performance-now": "^2.1.0",
 
        "qs": "~6.5.2",
 
        "safe-buffer": "^5.1.2",
 
        "tough-cookie": "~2.4.3",
 
        "tunnel-agent": "^0.6.0",
 
        "uuid": "^3.3.2"
 
      }
 
    },
 
    "resolve": {
 
      "version": "1.12.0",
 
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
 
      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
 
      "dev": true,
 
      "requires": {
 
        "path-parse": "^1.0.6"
 
      }
 
    },
 
    "resolve-from": {
 
      "version": "4.0.0",
 
      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
 
      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
 
      "dev": true
 
    },
 
    "restore-cursor": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
 
      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
 
      "dev": true,
 
      "requires": {
 
        "onetime": "^5.1.0",
 
        "signal-exit": "^3.0.2"
 
      }
 
    },
 
    "rimraf": {
 
      "version": "2.6.3",
 
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
 
      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
 
      "dev": true,
 
      "requires": {
 
        "glob": "^7.1.3"
 
      }
 
    },
 
    "run-async": {
 
      "version": "2.3.0",
 
      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
 
      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
 
      "dev": true,
 
      "requires": {
 
        "is-promise": "^2.1.0"
 
      }
 
    },
 
    "rxjs": {
 
      "version": "6.5.4",
 
      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
 
      "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
 
      "dev": true,
 
      "requires": {
 
        "tslib": "^1.9.0"
 
      }
 
    },
 
    "safe-buffer": {
 
      "version": "5.2.0",
 
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
 
      "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
 
      "dev": true
 
    },
 
    "safer-buffer": {
 
      "version": "2.1.2",
 
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
 
      "dev": true
 
    },
 
    "select2": {
 
      "version": "3.5.1",
 
      "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
 
      "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
 
    },
 
    "select2-bootstrap-css": {
 
      "version": "1.4.6",
 
      "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
 
      "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
 
    },
 
    "semver": {
 
      "version": "5.7.1",
 
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
 
      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
 
      "dev": true
 
    },
 
    "shebang-command": {
 
      "version": "1.2.0",
 
      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
 
      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
 
      "dev": true,
 
      "requires": {
 
        "shebang-regex": "^1.0.0"
 
      }
 
    },
 
    "shebang-regex": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
 
      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
 
      "dev": true
 
    },
 
    "signal-exit": {
 
      "version": "3.0.2",
 
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
 
      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
 
      "dev": true
 
    },
 
    "slash": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
 
      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
 
      "dev": true
 
    },
 
    "slice-ansi": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
 
      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
 
      "dev": true,
 
      "requires": {
 
        "ansi-styles": "^3.2.0",
 
        "astral-regex": "^1.0.0",
 
        "is-fullwidth-code-point": "^2.0.0"
 
      },
 
      "dependencies": {
 
        "is-fullwidth-code-point": {
 
          "version": "2.0.0",
 
          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
 
          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
 
          "dev": true
 
        }
 
      }
 
    },
 
    "slide": {
 
      "version": "1.1.6",
 
      "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
 
      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
 
      "dev": true
 
    },
 
    "source-map": {
 
      "version": "0.6.1",
 
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
 
      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "spdx-compare": {
 
      "version": "1.0.0",
 
      "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
 
      "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
 
      "dev": true,
 
      "requires": {
 
        "array-find-index": "^1.0.2",
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-ranges": "^2.0.0"
 
      }
 
    },
 
    "spdx-correct": {
 
      "version": "3.1.0",
 
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
 
      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
 
      "dev": true,
 
      "requires": {
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-license-ids": "^3.0.0"
 
      }
 
    },
 
    "spdx-exceptions": {
 
      "version": "2.2.0",
 
      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
 
      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
 
      "dev": true
 
    },
 
    "spdx-expression-parse": {
 
      "version": "3.0.0",
 
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
 
      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
 
      "dev": true,
 
      "requires": {
 
        "spdx-exceptions": "^2.1.0",
 
        "spdx-license-ids": "^3.0.0"
 
      }
 
    },
 
    "spdx-license-ids": {
 
      "version": "3.0.5",
 
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
 
      "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
 
      "dev": true
 
    },
 
    "spdx-ranges": {
 
      "version": "2.1.1",
 
      "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
 
      "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
 
      "dev": true
 
    },
 
    "spdx-satisfies": {
 
      "version": "4.0.1",
 
      "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
 
      "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
 
      "dev": true,
 
      "requires": {
 
        "spdx-compare": "^1.0.0",
 
        "spdx-expression-parse": "^3.0.0",
 
        "spdx-ranges": "^2.0.0"
 
      }
 
    },
 
    "sprintf-js": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
 
      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
 
      "dev": true
 
    },
 
    "sshpk": {
 
      "version": "1.16.1",
 
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
 
      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "asn1": "~0.2.3",
 
        "assert-plus": "^1.0.0",
 
        "bcrypt-pbkdf": "^1.0.0",
 
        "dashdash": "^1.12.0",
 
        "ecc-jsbn": "~0.1.1",
 
        "getpass": "^0.1.1",
 
        "jsbn": "~0.1.0",
 
        "safer-buffer": "^2.0.2",
 
        "tweetnacl": "~0.14.0"
 
      }
 
    },
 
    "string_decoder": {
 
      "version": "1.3.0",
 
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
 
      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
 
      "dev": true,
 
      "requires": {
 
        "safe-buffer": "~5.2.0"
 
      }
 
    },
 
    "string-width": {
 
      "version": "4.2.0",
 
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
 
      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
 
      "dev": true,
 
      "requires": {
 
        "emoji-regex": "^8.0.0",
 
        "is-fullwidth-code-point": "^3.0.0",
 
        "strip-ansi": "^6.0.0"
 
      },
 
      "dependencies": {
 
        "strip-ansi": {
 
          "version": "6.0.0",
 
          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
 
          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
 
          "dev": true,
 
          "requires": {
 
            "ansi-regex": "^5.0.0"
 
          }
 
        }
 
      }
 
    },
 
    "strip-ansi": {
 
      "version": "5.2.0",
 
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
 
      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
 
      "dev": true,
 
      "requires": {
 
        "ansi-regex": "^4.1.0"
 
      },
 
      "dependencies": {
 
        "ansi-regex": {
 
          "version": "4.1.0",
 
          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
 
          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
 
          "dev": true
 
        }
 
      }
 
    },
 
    "strip-json-comments": {
 
      "version": "3.0.1",
 
      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
 
      "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
 
      "dev": true
 
    },
 
    "supports-color": {
 
      "version": "5.5.0",
 
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
 
      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
 
      "dev": true,
 
      "requires": {
 
        "has-flag": "^3.0.0"
 
      }
 
    },
 
    "table": {
 
      "version": "5.4.6",
 
      "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
 
      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
 
      "dev": true,
 
      "requires": {
 
        "ajv": "^6.10.2",
 
        "lodash": "^4.17.14",
 
        "slice-ansi": "^2.1.0",
 
        "string-width": "^3.0.0"
 
      },
 
      "dependencies": {
 
        "emoji-regex": {
 
          "version": "7.0.3",
 
          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
 
          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
 
          "dev": true
 
        },
 
        "is-fullwidth-code-point": {
 
          "version": "2.0.0",
 
          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
 
          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
 
          "dev": true
 
        },
 
        "string-width": {
 
          "version": "3.1.0",
 
          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
 
          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
 
          "dev": true,
 
          "requires": {
 
            "emoji-regex": "^7.0.1",
 
            "is-fullwidth-code-point": "^2.0.0",
 
            "strip-ansi": "^5.1.0"
 
          }
 
        }
 
      }
 
    },
 
    "text-table": {
 
      "version": "0.2.0",
 
      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
 
      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 
      "dev": true
 
    },
 
    "through": {
 
      "version": "2.3.8",
 
      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
 
      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
 
      "dev": true
 
    },
 
    "tmp": {
 
      "version": "0.0.33",
 
      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
 
      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
 
      "dev": true,
 
      "requires": {
 
        "os-tmpdir": "~1.0.2"
 
      }
 
    },
 
    "tough-cookie": {
 
      "version": "2.4.3",
 
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
 
      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "psl": "^1.1.24",
 
        "punycode": "^1.4.1"
 
      },
 
      "dependencies": {
 
        "punycode": {
 
          "version": "1.4.1",
 
          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
 
          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
 
          "dev": true,
 
          "optional": true
 
        }
 
      }
 
    },
 
    "treeify": {
 
      "version": "1.1.0",
 
      "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
 
      "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
 
      "dev": true
 
    },
 
    "tslib": {
 
      "version": "1.11.0",
 
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
 
      "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
 
      "dev": true
 
    },
 
    "tunnel-agent": {
 
      "version": "0.6.0",
 
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
 
      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "safe-buffer": "^5.0.1"
 
      }
 
    },
 
    "tweetnacl": {
 
      "version": "0.14.5",
 
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
 
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "type-check": {
 
      "version": "0.3.2",
 
      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
 
      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
 
      "dev": true,
 
      "requires": {
 
        "prelude-ls": "~1.1.2"
 
      }
 
    },
 
    "type-fest": {
 
      "version": "0.8.1",
 
      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
 
      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
 
      "dev": true
 
    },
 
    "uri-js": {
 
      "version": "4.2.2",
 
      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
 
      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
 
      "dev": true,
 
      "requires": {
 
        "punycode": "^2.1.0"
 
      }
 
    },
 
    "util-deprecate": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 
      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
 
      "dev": true
 
    },
 
    "util-extend": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
 
      "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
 
      "dev": true
 
    },
 
    "uuid": {
 
      "version": "3.3.3",
 
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
 
      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
 
      "dev": true,
 
      "optional": true
 
    },
 
    "v8-compile-cache": {
 
      "version": "2.1.0",
 
      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
 
      "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
 
      "dev": true
 
    },
 
    "validate-npm-package-license": {
 
      "version": "3.0.4",
 
      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
 
      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
 
      "dev": true,
 
      "requires": {
 
        "spdx-correct": "^3.0.0",
 
        "spdx-expression-parse": "^3.0.0"
 
      }
 
    },
 
    "verror": {
 
      "version": "1.10.0",
 
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
 
      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
 
      "dev": true,
 
      "optional": true,
 
      "requires": {
 
        "assert-plus": "^1.0.0",
 
        "core-util-is": "1.0.2",
 
        "extsprintf": "^1.2.0"
 
      }
 
    },
 
    "which": {
 
      "version": "1.3.1",
 
      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
 
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
 
      "dev": true,
 
      "requires": {
 
        "isexe": "^2.0.0"
 
      }
 
    },
 
    "word-wrap": {
 
      "version": "1.2.3",
 
      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
 
      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
 
      "dev": true
 
    },
 
    "wrappy": {
 
      "version": "1.0.2",
 
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
 
      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
 
      "dev": true
 
    },
 
    "write": {
 
      "version": "1.0.3",
 
      "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
 
      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
 
      "dev": true,
 
      "requires": {
 
        "mkdirp": "^0.5.1"
 
      }
 
    }
 
  }
 
}
kallithea/front-end/package.json
Show inline comments
 
{
 
  "name": "kallithea",
 
  "private": true,
 
  "dependencies": {
 
    "at.js": "1.5.4",
 
    "bootstrap": "3.3.7",
 
    "codemirror": "5.49.0",
 
    "datatables.net": "1.10.20",
 
    "datatables.net-bs": "1.10.20",
 
    "jquery": "3.4.1",
 
    "jquery.caret": "0.3.1",
 
    "jquery.flot": "0.8.3",
 
    "select2": "3.5.1",
 
    "at.js": "1.5",
 
    "bootstrap": "3",
 
    "codemirror": "5",
 
    "datatables.net": "1",
 
    "datatables.net-bs": "1",
 
    "jquery": "3",
 
    "jquery.caret": "0.3",
 
    "jquery.flot": "0.8",
 
    "select2": "3",
 
    "select2-bootstrap-css": "1.4.6"
 
  },
 
  "devDependencies": {
 
    "eslint": "6.8.0",
 
    "eslint-plugin-html": "6.0.0",
 
    "less": "3.10.3",
 
    "less-plugin-clean-css": "1.5.1",
 
    "license-checker": "25.0.1"
 
    "eslint": "6",
 
    "eslint-plugin-html": "6",
 
    "less": "3",
 
    "less-plugin-clean-css": "1.5",
 
    "license-checker": "25"
 
  }
 
}
kallithea/i18n/be/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -378,15 +378,12 @@ msgstr "Група ўтрымлівае ў сабе %s падгруп і не можа быць выдаленая"
 
msgid "Removed repository group %s"
 
msgstr "Група рэпазітароў %s выдаленая"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Памылка пры выдаленні групы рэпазітароў %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Адміністратар не можа адклікаць свае прывелеі"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Прывілеі групы рэпазітароў абноўленыя"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Памылка пры водгуку прывелея"
 

	
 
@@ -516,12 +513,15 @@ msgstr "Памылка пры выдаленні групы карыстальнікаў"
 
msgid "Target group cannot be the same"
 
msgstr "Мэтавая група не можа быць той жа самай"
 

	
 
msgid "User group permissions updated"
 
msgstr "Прывілеі групы карыстальнікаў абноўленыя"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Адміністратар не можа адклікаць свае прывелеі"
 

	
 
msgid "Updated permissions"
 
msgstr "Абноўленыя прывілеі"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Памылка пры захаванні прывілеяў"
 

	
kallithea/i18n/da/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -410,15 +410,12 @@ msgstr "Denne gruppe indeholder %s under
 
msgid "Removed repository group %s"
 
msgstr "Fjernet repository-gruppen %s"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Der opstod en fejl under sletning af repository-gruppen %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Repository-gruppe tilladelser opdateret"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Der opstod en fejl under tilbagekaldelse af tilladelse"
 

	
 
@@ -550,12 +547,15 @@ msgstr "Brugergruppe slettet succesfuldt
 
msgid "An error occurred during deletion of user group"
 
msgstr "Der opstod en fejl under sletning af brugergruppe"
 

	
 
msgid "User group permissions updated"
 
msgstr "Brugergrupper-tilladelser opdateret"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
 

	
 
msgid "Updated permissions"
 
msgstr "Tilladelser opdateret"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Der opstod en fejl under gemning af tilladelser"
 

	
kallithea/i18n/de/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -397,15 +397,12 @@ msgstr "Diese Gruppe enthält %s Untergruppen und kann nicht gelöscht werden"
 
msgid "Removed repository group %s"
 
msgstr "Repositoriumsgruppe %s entfernt"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Fehler beim Löschen der Repositoriumsgruppe %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Berechtigungen der Repositoriumsgruppe aktualisiert"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Fehler beim Entzug der Berechtigungen"
 

	
 
@@ -547,12 +544,15 @@ msgstr "Während des Löschens der Benutzergruppe ist ein Fehler aufgetreten"
 
msgid "Target group cannot be the same"
 
msgstr "Zielgruppe kann nicht die gleiche Gruppe sein"
 

	
 
msgid "User group permissions updated"
 
msgstr "Berechtigungen der Benutzergruppe wurden aktualisiert"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
 

	
 
msgid "Updated permissions"
 
msgstr "Berechtigungen wurden aktualisiert"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr ""
 
"Es ist ein Fehler während des Speicherns der Berechtigungen aufgetreten"
kallithea/i18n/el/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -296,12 +296,18 @@ msgstr "Αιτήματα έλξης του git δεν υποστηρίζουν ακόμα ενημερώσεις."
 
msgid ""
 
"Error: some changesets not found when displaying pull request from %s."
 
msgstr ""
 
"Σφάλμα: κάποια σετ αλλαγών δεν βρέθηκαν όταν εμφανιζόταν αυτό το αίτημα "
 
"έλξης από το %s."
 

	
 
msgid "%d additional changesets are not shown."
 
msgstr "%d επιπλέον σύνολα αλλαγών δεν εμφανίζονται."
 

	
 
msgid "%d changesets available for merging are not shown."
 
msgstr "%d σύνολα αλλαγών δεν εμφανίζονται για συγχώνευση."
 

	
 
msgid "The diff can't be shown - the PR revisions could not be found."
 
msgstr ""
 
"Οι διαφορές δεν μπορούν να εμφανιστούν - οι αναθεωρήσεις δεν βρέθηκαν."
 

	
 
msgid "Invalid search query. Try quoting it."
 
msgstr "Άκυρο αίτημα αναζήτησης. Δοκιμάστε με εισαγωγικά."
 
@@ -459,15 +465,12 @@ msgstr "Αυτή η ομάδα περιέχει %s υποομάδες και δε μπορεί να διαγραφεί"
 
msgid "Removed repository group %s"
 
msgstr "Αφαιρέθηκε η ομάδα αποθετηρίου %s"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Παρουσιάστηκε σφάλμα κατά τη διαγραφή της ομάδας αποθετηρίων %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Δεν μπορείτε να ανακαλέσετε την άδεια σας ως διαχειριστής"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Τα δικαιώματα της ομάδας αποθετηρίου ενημερώθηκαν"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Παρουσιάστηκε σφάλμα κατά την ανάκληση του δικαιώματος"
 

	
 
@@ -617,12 +620,15 @@ msgstr "Παρουσιάστηκε σφάλμα κατά την διαγραφή της ομάδας χρηστών"
 
msgid "Target group cannot be the same"
 
msgstr "Η ομάδα προορισμός δεν μπορεί να είναι η ίδια"
 

	
 
msgid "User group permissions updated"
 
msgstr "Τα δικαιώματα της ομάδας χρηστών ενημερώθηκαν"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Δεν μπορείτε να ανακαλέσετε την άδεια σας ως διαχειριστής"
 

	
 
msgid "Updated permissions"
 
msgstr "Τα δικαιώματα ενημερώθηκαν"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Παρουσιάστηκε σφάλμα κατά την αποθήκευση των δικαιωμάτων"
 

	
 
@@ -2098,12 +2104,28 @@ msgid "This repository does not have a r
 
msgstr ""
 
"Αυτό το αποθετήριο δεν έχει διεύθυνση URL απομακρυσμένου αποθετηρίου."
 

	
 
msgid "Permanent URL"
 
msgstr "Μόνιμη διεύθυνση URL"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                           Using the above permanent URL guarantees that "
 
"this repository always will be accessible on that URL.\n"
 
"                           This is useful for CI systems, or any other "
 
"cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Σε περίπτωση που αυτό το αποθετήριο μετονομαστεί ή μετακινηθεί σε άλλη "
 
"ομάδα, η διεύθυνση URL του αποθετηρίου αλλάζει.\n"
 
"Χρησιμοποιώντας την παραπάνω μόνιμη διεύθυνση URL εξασφαλίζετε ότι αυτό "
 
"το αποθετήριο θα είναι πάντα προσβάσιμο σε εκείνη τη διεύθυνση.\n"
 
"Αυτό είναι χρήσιμο για συστήματα CI ή οποιεσδήποτε άλλες περιπτώσεις που "
 
"χρειάζεστε να ενσωματώσετε σκληρή κωδικοποίηση της διεύθυνσης URL σε "
 
"υπηρεσία τρίτου."
 

	
 
msgid "Remote repository"
 
msgstr "Απομακρυσμένο αποθετήριο"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
@@ -2199,12 +2221,35 @@ msgstr ""
 
"Ιδιωτικό κλειδί για το σύστημα reCaptcha. Ο καθορισμός αυτής της τιμής θα "
 
"ενεργοποιήσει το captcha κατά την εγγραφή."
 

	
 
msgid "Save Settings"
 
msgstr "Αποθήκευση Ρυθμίσεων"
 

	
 
msgid "Custom Global Mercurial Hooks"
 
msgstr "Προσαρμοσμένα Παγκόσμια Αγκίστρια Mercurial"
 

	
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"Τα αγκίστρια μπορούν να χρησιμοποιηθούν για να ενεργοποιήσουν ενέργειες "
 
"σε συγκεκριμένα γεγονότα, όπως το push / pull. Μπορούν να ενεργοποιήσουν "
 
"συναρτήσεις Python ή εξωτερικές εφαρμογές."
 

	
 
msgid "Git Hooks"
 
msgstr "Άγκιστρα Git"
 

	
 
msgid ""
 
"Kallithea has no support for custom Git hooks. Kallithea will use Git "
 
"post-receive hooks internally. Installation of these hooks is managed in "
 
"%s."
 
msgstr ""
 
"Η Καλλιθέα δεν υποστηρίζει προσαρμοσμένα αγκίστρια Git. Η Καλλιθέα θα "
 
"χρησιμοποιήσει αγκίστρια μετά την αποστολή (post-receive hooks) του Git "
 
"εσωτερικά. Η εγκατάσταση αυτών των αγκιστριών διαχειρίζεται στο %s."
 

	
 
msgid "Custom Hooks are not enabled"
 
msgstr "Τα προσαρμοσμένα άγκιστρα δεν είναι ενεργά"
 

	
 
msgid "Failed to remove hook"
 
msgstr "Απέτυχε η αφαίρεση γάντζου"
 

	
 
@@ -2230,12 +2275,21 @@ msgstr ""
 
"Επιλέξτε αυτό για να φορτώσετε ξανά τα δεδομένα και να καταργήστε την "
 
"cache για όλα τα αποθετήρια."
 

	
 
msgid "Install Git hooks"
 
msgstr "Εγκατάσταση Git hooks"
 

	
 
msgid ""
 
"Install Kallithea's internal hooks for all Git repositories where they "
 
"are missing or can be upgraded. Existing hooks that don't seem to come "
 
"from Kallithea will not be touched."
 
msgstr ""
 
"Εγκατάσταση των εσωτερικών αγκιστριών της Καλλιθέας για όλα τα αποθετήρια "
 
"Git όπου αυτά λείπουν ή μπορούν να αναβαθμιστούν. Τα υπάρχοντα αγκίστρια "
 
"που δεν φαίνεται να προέρχονται από την Καλλιθέα δεν θα αλλάξουνε."
 

	
 
msgid "Install and overwrite Git hooks"
 
msgstr "Εγκατάσταση και επανεγγραφή Git hooks"
 

	
 
msgid ""
 
"Install Kallithea's internal hooks for all Git repositories. Existing "
 
"hooks that don't seem to come from Kallithea will be disabled by renaming "
 
@@ -2285,12 +2339,15 @@ msgstr "Έκδοση Git"
 
msgid "Git path"
 
msgstr "Διαδρομή Git"
 

	
 
msgid "Python Packages"
 
msgstr "Πακέτα Python"
 

	
 
msgid "Mercurial Push Hooks"
 
msgstr "Αγκίστρια Αποστολής (Push Hooks) του Mercurial"
 

	
 
msgid "Show repository size after push"
 
msgstr "Εμφάνιση μεγέθους αποθετηρίου μετά την ώθηση"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Ενημέρωση αποθετηρίου μετά την ώθηση (hg update)"
 

	
 
@@ -3707,8 +3764,11 @@ msgstr "Προσθέστε ή ανεβάστε αρχεία απευθείας μέσω Καλλιθέας"
 
msgid "Push new repository"
 
msgstr "Ώθηση νέου αποθετηρίου"
 

	
 
msgid "Existing repository?"
 
msgstr "Υπάρχον αποθετήριο;"
 

	
 
msgid "Readme file from %s"
 
msgstr "Αρχείο README από το %s"
 

	
 
msgid "Download %s as %s"
 
msgstr "Λήψη %s ως %s"
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -465,15 +465,12 @@ msgid "Removed repository group %s"
 
msgstr "Groupe de dépôts %s supprimé"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr ""
 
"Une erreur est survenue durant la suppression du groupe de dépôts %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Impossible de révoquer votre permission d'administrateur"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Permissions du groupe de dépôts mises à jour"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Une erreur est survenue durant la révocation de la permission"
 

	
 
@@ -629,12 +626,15 @@ msgstr ""
 
msgid "Target group cannot be the same"
 
msgstr "Le groupe cible ne peut pas être le même"
 

	
 
msgid "User group permissions updated"
 
msgstr "Permissions du groupe d'utilisateurs mises à jour"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Impossible de révoquer votre permission d'administrateur"
 

	
 
msgid "Updated permissions"
 
msgstr "Permissions mises à jour"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Une erreur est survenue durant l’enregistrement des permissions"
 

	
 
@@ -832,13 +832,13 @@ msgstr ""
 

	
 
msgid ""
 
"Invalid SSH key - base64 part %r seems truncated (it contains a partial "
 
"string length)"
 
msgstr ""
 
"Clé SSH invalide – la partie base64 %r semble tronquée (elle contient une "
 
"taille partielle)"
 
"valeur de taille incomplète)"
 

	
 
msgid ""
 
"Invalid SSH key - base64 part %r seems truncated (it is too short for "
 
"declared string length %s)"
 
msgstr ""
 
"Clé SSH invalide – la partie base64 %r semble tronquée (elle est trop "
 
@@ -2105,12 +2105,28 @@ msgstr ""
 
msgid "This repository does not have a remote repository URL."
 
msgstr "Ce dépôt n'a pas d'URL de dépôt distant."
 

	
 
msgid "Permanent URL"
 
msgstr "URL permanente"
 

	
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository URL changes.\n"
 
"                           Using the above permanent URL guarantees that "
 
"this repository always will be accessible on that URL.\n"
 
"                           This is useful for CI systems, or any other "
 
"cases that you need to hardcode the URL into a 3rd party service."
 
msgstr ""
 
"Dans le cas où ce dépôt est renommé ou déplacé dans un autre groupe, "
 
"l’URL du dépôt change.\n"
 
"                           L’utilisation de l’URL permanente ci-dessus "
 
"garantit que ce dépôt sera toujours accessible à cette URL.\n"
 
"                           Cela peut être utile pour les systèmes "
 
"d’intégration continue, ou tout autre cas où il est nécessaire de coder "
 
"l’URL en dur dans un système tiers."
 

	
 
msgid "Remote repository"
 
msgstr "Dépôt distant"
 

	
 
msgid ""
 
"Optional: URL of a remote repository. If set, the repository can be "
 
"pulled from this URL."
 
@@ -2409,12 +2425,15 @@ msgstr ""
 
"gravatar.com),\n"
 
"                                                        {size}      "
 
"taille de l'image demandée au serveur,\n"
 
"                                                        {netloc}    "
 
"emplacement réseau/hôte du serveur Kallithea en cours d'utilisation."
 

	
 
msgid "HTTP Clone URL"
 
msgstr "URL de clone HTTP"
 

	
 
msgid ""
 
"Schema of clone URL construction eg. '{scheme}://{user}@{netloc}/"
 
"{repo}'.\n"
 
"                                                    The following "
 
"variables are available:\n"
 
"                                                    {scheme} 'http' or "
 
@@ -2451,12 +2470,15 @@ msgstr ""
 
"                                                        {system_user}  "
 
"nom de l'utilisateur système Kallithea,\n"
 
"                                                        {hostname}  nom "
 
"d'hôte du serveur\n"
 
"                                                    "
 

	
 
msgid "SSH Clone URL"
 
msgstr "URL de clone SSH"
 

	
 
msgid ""
 
"Schema for constructing SSH clone URL, eg. 'ssh://{system_user}"
 
"@{hostname}/{repo}'."
 
msgstr ""
 
"Schéma de construction d'une URL de clone SSH, par exemple. 'ssh://"
 
"{system_user}@{hostname}/{repo}'."
 
@@ -3742,8 +3764,11 @@ msgstr "Ajouter ou téléverser des fichiers directement via Kallithea"
 
msgid "Push new repository"
 
msgstr "Pusher le nouveau dépôt"
 

	
 
msgid "Existing repository?"
 
msgstr "Le dépôt existe déjà ?"
 

	
 
msgid "Readme file from %s"
 
msgstr "Fichier Readme depuis %s"
 

	
 
msgid "Download %s as %s"
 
msgstr "Télécharge %s comme %s"
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -347,15 +347,12 @@ msgstr "このグループは %s 個のサブグループを含んでいるため削除できません"
 
msgid "Removed repository group %s"
 
msgstr "リポジトリグループ %s を削除しました"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "リポジトリグループ %s の削除中にエラーが発生しました"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "自分自身の管理者としての権限を取り消すことはできません"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "リポジトリグループ権限を更新しました"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "権限の取消中にエラーが発生しました"
 

	
 
@@ -483,12 +480,15 @@ msgstr "ユーザーグループの削除中にエラーが発生しました"
 
msgid "Target group cannot be the same"
 
msgstr "対象に同じ物を選ぶことはできません"
 

	
 
msgid "User group permissions updated"
 
msgstr "ユーザーグループ権限を更新しました"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "自分自身の管理者としての権限を取り消すことはできません"
 

	
 
msgid "Updated permissions"
 
msgstr "権限を更新しました"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "権限の保存時にエラーが発生しました"
 

	
kallithea/i18n/pl/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -361,15 +361,12 @@ msgstr "Ta grupa zawiera %s repozytorium i nie może być usunięta"
 
msgid "Removed repository group %s"
 
msgstr "Usunięto grupę repo %s"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Wystąpił błąd podczas usuwania z repozytorium grupy %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Nie można cofnąć zezwolenia dla admina jako admin"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Aktualizacja uprawnień grup repozytorium"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Wystąpił błąd podczas cofania zezwolenia"
 

	
 
@@ -509,12 +506,15 @@ msgstr "Wystąpił błąd podczas usuwania grupy użytkowników"
 
msgid "Target group cannot be the same"
 
msgstr "Grupa docelowa nie może być taka sama"
 

	
 
msgid "User group permissions updated"
 
msgstr "Aktualizacja uprawnień grupy użytkowników"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Nie można cofnąć zezwolenia dla admina jako admin"
 

	
 
msgid "Updated permissions"
 
msgstr "Aktualizacja uprawnień"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Wystąpił błąd podczas zapisywania uprawnień"
 

	
kallithea/i18n/pt/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -240,15 +240,12 @@ msgstr "Este grupo contém %s subgrupos e não pode ser apagado"
 
msgid "Removed repository group %s"
 
msgstr "Grupo de repositórios %s apagado"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Ocorreu um erro durante a exclusão do grupo de repositórios %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Não pode revocar sua própria permissão de administrador"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Permissões atualizadas do Grupo de Repositórios"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Ocorreu um erro durante a revocação das permissões"
 

	
 
@@ -359,12 +356,15 @@ msgstr "Ocorreu um erro durante a exclusão do grupo de utilizadores"
 
msgid "Target group cannot be the same"
 
msgstr "O grupo destino não pode ser o mesmo"
 

	
 
msgid "User group permissions updated"
 
msgstr "Permissões do Grupo de Utilizadores atualizadas"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Não pode revocar sua própria permissão de administrador"
 

	
 
msgid "Updated permissions"
 
msgstr "Permissões atualizadas"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Ocorreu um erro durante o salvamento das permissões"
 

	
kallithea/i18n/pt_BR/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -240,15 +240,12 @@ msgstr "Este grupo contém %s subgrupos e não pode ser excluído"
 
msgid "Removed repository group %s"
 
msgstr "Grupo de repositórios %s excluído"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Ocorreu um erro durante a exclusão do grupo de repositórios %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Você não pode revocar sua própria permissão de administrador"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Permissões atualizadas do Grupo de Repositórios"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Ocorreu um erro durante a revocação das permissões"
 

	
 
@@ -359,12 +356,15 @@ msgstr "Ocorreu um erro durante a exclusão do grupo de usuários"
 
msgid "Target group cannot be the same"
 
msgstr "O grupo destino não pode ser o mesmo"
 

	
 
msgid "User group permissions updated"
 
msgstr "Permissões do Grupo de Usuários atualizadas"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Você não pode revocar sua própria permissão de administrador"
 

	
 
msgid "Updated permissions"
 
msgstr "Permissões atualizadas"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Ocorreu um erro durante o salvamento das permissões"
 

	
kallithea/i18n/ru/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -447,15 +447,12 @@ msgstr "Группа содержит в себе %s подгрупп и не может быть удалён"
 
msgid "Removed repository group %s"
 
msgstr "Группа репозиториев %s удалена"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Произошла ошибка при удалении группы репозиториев %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Администратор не может отозвать свои привелегии"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Привилегии группы репозиториев обновлены"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Произошла ошибка при отзыве привелегии"
 

	
 
@@ -594,12 +591,15 @@ msgstr "Произошла ошибка при удалении группы пользователей"
 
msgid "Target group cannot be the same"
 
msgstr "Целевая группа не может быть такой же"
 

	
 
msgid "User group permissions updated"
 
msgstr "Привилегии группы пользователей обновлены"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Администратор не может отозвать свои привелегии"
 

	
 
msgid "Updated permissions"
 
msgstr "Обновлены привилегии"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Произошла ошибка при сохранении привилегий"
 

	
kallithea/i18n/uk/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -428,15 +428,12 @@ msgstr "Ця група містить %s підгрупи і не може бути видалена"
 
msgid "Removed repository group %s"
 
msgstr "Видалена група репозиторіїв %s"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "Сталася помилка під час видалення групи репохиторіїв %s"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Неможливо відкликати дозвіл для себе як адміністратора"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "Оновлено дозволи групи репозиторіїв"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "Сталася помилка під час відкликання прав"
 

	
 
@@ -576,12 +573,15 @@ msgstr "Під час видалення групи користувачів сталася помилка"
 
msgid "Target group cannot be the same"
 
msgstr "Цільова група не може бути однаковою"
 

	
 
msgid "User group permissions updated"
 
msgstr "Права на групи користувачів оновлені"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "Неможливо відкликати дозвіл для себе як адміністратора"
 

	
 
msgid "Updated permissions"
 
msgstr "Оновлені дозволи"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "Сталася помилка під час збереження дозволів"
 

	
kallithea/i18n/zh_CN/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -7,27 +7,58 @@ msgstr ""
 
"Language: zh_CN\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=UTF-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
"Plural-Forms: nplurals=1; plural=0;\n"
 

	
 
msgid ""
 
"CSRF token leak has been detected - all form tokens have been expired"
 
msgstr "已检测到CSRF令牌泄漏-所有表单令牌都已过期"
 

	
 
msgid "Repository not found in the filesystem"
 
msgstr "文件系统中找不到存储库"
 

	
 
msgid "There are no changesets yet"
 
msgstr "还没有修订集"
 

	
 
msgid "SSH access is disabled."
 
msgstr "SSH访问被禁用。"
 

	
 
msgid "None"
 
msgstr "无"
 

	
 
msgid "(closed)"
 
msgstr "(已关闭)"
 

	
 
msgid "No permission to change status"
 
msgstr "无权更改状态"
 

	
 
msgid "Successfully deleted pull request %s"
 
msgstr "成功删除拉取请求%s"
 

	
 
msgid "Such revision does not exist for this repository"
 
msgstr "在此代码库内,此修改并不存在"
 

	
 
msgid "Could not find other repository %s"
 
msgstr "找不到那个版本库 %s"
 

	
 
msgid "Cannot compare repositories of different types"
 
msgstr "不能比较不同类型的存储库"
 

	
 
msgid "Cannot show empty diff"
 
msgstr "不能显示空的差异"
 

	
 
msgid "No ancestor found for merge diff"
 
msgstr "找不到合并差异的祖先"
 

	
 
msgid "Multiple merge ancestors found for merge compare"
 
msgstr "在合并比较中发现多个合并祖先"
 

	
 
msgid "Cannot compare repositories without using common ancestor"
 
msgstr "如果不使用共同的祖先,就不能比较存储库"
 

	
 
msgid "No response"
 
msgstr "无响应"
 

	
 
msgid "Unknown error"
 
msgstr "未知错误"
 

	
 
@@ -58,12 +89,15 @@ msgstr "%s %s订阅"
 
msgid "Changes on %s repository"
 
msgstr "%s库的修改"
 

	
 
msgid "Click here to add new file"
 
msgstr "点击这里添加新文件"
 

	
 
msgid "There are no files yet."
 
msgstr "这里还没有文件。"
 

	
 
msgid "%s at %s"
 
msgstr "%s 在 %s"
 

	
 
msgid "You can only delete files with revision being a valid branch"
 
msgstr "您只能删除有效分支的修订中的文件"
 

	
 
@@ -94,12 +128,15 @@ msgstr "已添加文件通过 Kallithea"
 
msgid "No content"
 
msgstr "无内容"
 

	
 
msgid "No filename"
 
msgstr "无文件名"
 

	
 
msgid "Location must be relative path and must not contain .. in path"
 
msgstr "位置必须是相对路径,并且..不能在路径中"
 

	
 
msgid "Downloads disabled"
 
msgstr "下载已禁用"
 

	
 
msgid "Unknown revision %s"
 
msgstr "未知版本%s"
 

	
 
@@ -142,12 +179,15 @@ msgstr "书签"
 
msgid "Public Journal"
 
msgstr "公共日志"
 

	
 
msgid "Journal"
 
msgstr "日志"
 

	
 
msgid "Authentication failed."
 
msgstr "认证失败。"
 

	
 
msgid "Bad captcha"
 
msgstr "验证码错误"
 

	
 
msgid "You have successfully registered with %s"
 
msgstr "您已成功注册 %s"
 

	
 
@@ -184,24 +224,60 @@ msgstr "创建拉取请求出错:%s"
 
msgid "Error occurred while creating pull request"
 
msgstr "创建拉取请求时发生错误"
 

	
 
msgid "Successfully opened new pull request"
 
msgstr "成功提交拉取请求"
 

	
 
msgid "New pull request iteration created"
 
msgstr "已创建新的拉取请求迭代"
 

	
 
msgid "Meanwhile, the following reviewers have been added: %s"
 
msgstr "同时,下列审查员已被加入:%s"
 

	
 
msgid "Meanwhile, the following reviewers have been removed: %s"
 
msgstr "同时,以下审查员已被删除:%s"
 

	
 
msgid "No description"
 
msgstr "无描述"
 

	
 
msgid "Pull request updated"
 
msgstr "拉取请求已更新"
 

	
 
msgid "Successfully deleted pull request"
 
msgstr "成功删除拉取请求"
 

	
 
msgid "Revision %s not found in %s"
 
msgstr "在 %s 中找不到修订集 %s"
 

	
 
msgid "Error: changesets not found when displaying pull request from %s."
 
msgstr "错误:当显示来自%s的拉动请求时,没有找到修订集。"
 

	
 
msgid "This pull request has already been merged to %s."
 
msgstr "这个拉取请求已经被合并到%s。"
 

	
 
msgid "This pull request has been closed and can not be updated."
 
msgstr "该拉取请求已被关闭,无法更新。"
 

	
 
msgid "The following additional changes are available on %s:"
 
msgstr "以下是对%s的额外修改:"
 

	
 
msgid "Note: Branch %s has another head: %s."
 
msgstr "注意:分支%s有另一个head:%s。"
 

	
 
msgid "Git pull requests don't support iterating yet."
 
msgstr "Git拉动请求还不支持迭代。"
 

	
 
msgid "The diff can't be shown - the PR revisions could not be found."
 
msgstr "不能显示差异-找不到PR的修订。"
 

	
 
msgid "Invalid search query. Try quoting it."
 
msgstr "错误的搜索。请尝试用引号包含它。"
 

	
 
msgid "The server has no search index."
 
msgstr "该服务器没有搜索索引。"
 

	
 
msgid "An error occurred during search operation."
 
msgstr "搜索操作期间发生错误。"
 

	
 
msgid "No data ready yet"
 
msgstr "数据尚未就绪"
 

	
 
@@ -217,12 +293,15 @@ msgstr "验证设置更新时发生错误"
 
msgid "Default settings updated successfully"
 
msgstr "默认设置已经成功更新"
 

	
 
msgid "Error occurred during update of defaults"
 
msgstr "默认值更新时发生错误"
 

	
 
msgid "Forever"
 
msgstr "永久"
 

	
 
msgid "5 minutes"
 
msgstr "5 分钟"
 

	
 
msgid "1 hour"
 
msgstr "1 小时"
 

	
 
@@ -280,12 +359,18 @@ msgstr "API 密钥创建成功"
 
msgid "API key successfully reset"
 
msgstr "API 密钥重置成功"
 

	
 
msgid "API key successfully deleted"
 
msgstr "API 密钥删除成功"
 

	
 
msgid "SSH key %s successfully added"
 
msgstr "成功添加SSH密钥%s"
 

	
 
msgid "SSH key successfully deleted"
 
msgstr "成功删除SSH密钥"
 

	
 
msgid "Read"
 
msgstr "读"
 

	
 
msgid "Write"
 
msgstr "写"
 

	
 
@@ -313,15 +398,48 @@ msgstr "启用"
 
msgid "Global permissions updated successfully"
 
msgstr "全局权限更新成功"
 

	
 
msgid "Error occurred during update of permissions"
 
msgstr "权限更新时发生错误"
 

	
 
msgid "Error occurred during creation of repository group %s"
 
msgstr "在创建版本库组%s时发生错误"
 

	
 
msgid "Created repository group %s"
 
msgstr "成功创建版本库组 %s"
 

	
 
msgid "Updated repository group %s"
 
msgstr "成功更新版本库组%s"
 

	
 
msgid "Error occurred during update of repository group %s"
 
msgstr "在更新版本库组%s时发生错误"
 

	
 
msgid "This group contains %s repositories and cannot be deleted"
 
msgstr "这个组内有%s个版本库因而无法删除"
 

	
 
msgid "This group contains %s subgroups and cannot be deleted"
 
msgstr "此组包含%s个子组,不能被删除"
 

	
 
msgid "Removed repository group %s"
 
msgstr "删除了版本库组%s"
 

	
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr "删除版本库组%s时发生错误"
 

	
 
msgid "Repository group permissions updated"
 
msgstr "版本库组的权限已更新"
 

	
 
msgid "An error occurred during revoking of permission"
 
msgstr "撤销许可的过程中发生了一个错误"
 

	
 
msgid "Error creating repository %s"
 
msgstr "创建版本库%s时出错"
 

	
 
msgid "Created repository %s"
 
msgstr "创建了版本库 %s"
 

	
 
msgid "Repository %s updated successfully"
 
msgstr "版本库%s成功更新"
 

	
 
msgid "An error occurred during deletion of %s"
 
msgstr "在删除%s的时候发生错误"
 

	
 
@@ -364,12 +482,15 @@ msgstr "新建钩子"
 
msgid "Updated hooks"
 
msgstr "更新钩子"
 

	
 
msgid "Whoosh reindex task scheduled"
 
msgstr "Whoosh重新索引任务调度"
 

	
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr "不能以管理员身份撤销自己的权限"
 

	
 
msgid "An error occurred during permissions saving"
 
msgstr "保存权限时发生错误"
 

	
 
msgid "User updated successfully"
 
msgstr "用户更新成功"
 

	
 
@@ -386,12 +507,15 @@ msgid ""
 
"Changeset was too big and was cut off, use diff menu to display this diff"
 
msgstr "修订集过大并已被截断,使用差异菜单查看此差异"
 

	
 
msgid "No changes detected"
 
msgstr "未发现差异"
 

	
 
msgid "Ignore whitespace changes"
 
msgstr "忽略空白的改变"
 

	
 
msgid "Increase diff context to %(num)s lines"
 
msgstr "增加差异上下文到 %(num)s 行"
 

	
 
msgid "Deleted branch: %s"
 
msgstr "已经删除分支%s"
 

	
 
@@ -464,12 +588,24 @@ msgstr "[停止关注]版本库"
 
msgid " and %s more"
 
msgstr " 还有%s个"
 

	
 
msgid "No files"
 
msgstr "无文件"
 

	
 
msgid "mod"
 
msgstr "修改"
 

	
 
msgid "del"
 
msgstr "删除"
 

	
 
msgid "rename"
 
msgstr "重命名"
 

	
 
msgid "chmod"
 
msgstr "更改权限"
 

	
 
msgid "%d year"
 
msgid_plural "%d years"
 
msgstr[0] "%d年"
 

	
 
msgid "%d month"
 
msgid_plural "%d months"
 
@@ -506,12 +642,24 @@ msgstr "%s零%s前"
 
msgid "just now"
 
msgstr "刚才"
 

	
 
msgid "Kallithea Administrator"
 
msgstr "Kallithea 管理员"
 

	
 
msgid "Only admins can fork repositories"
 
msgstr "只有管理员可以复刻版本库"
 

	
 
msgid "Non-admins can fork repositories"
 
msgstr "非管理员可以复刻版本库"
 

	
 
msgid "Registration disabled"
 
msgstr "禁止注册"
 

	
 
msgid "Not approved"
 
msgstr "未被批准"
 

	
 
msgid "Approved"
 
msgstr "已批准"
 

	
 
msgid "Please enter a login"
 
msgstr "请登录"
 

	
 
@@ -521,12 +669,15 @@ msgstr "输入一个不少于%(min)i个字符的值"
 
msgid "Please enter a password"
 
msgstr "请输入密码"
 

	
 
msgid "Enter %(min)i characters or more"
 
msgstr "输入少于%(min)i个字符"
 

	
 
msgid "Closing"
 
msgstr "关闭中"
 

	
 
msgid "latest tip"
 
msgstr "最新tip版本"
 

	
 
msgid "Value cannot be an empty list"
 
msgstr "值不能为空"
 

	
 
@@ -568,12 +719,15 @@ msgstr "不是一个合法的路径"
 

	
 
msgid ""
 
"The LDAP Login attribute of the CN must be specified - this is the name "
 
"of the attribute that is equivalent to \"username\""
 
msgstr "LDAP 登录属性的 CN 必须指定 - 这个名字作为用户名"
 

	
 
msgid "About"
 
msgstr "关于"
 

	
 
msgid "Repository"
 
msgstr "版本库"
 

	
 
msgid "Description"
 
msgstr "描述"
 

	
 
@@ -601,12 +755,18 @@ msgstr "忘记了密码?"
 
msgid "Don't have an account?"
 
msgstr "还没有帐号?"
 

	
 
msgid "Sign In"
 
msgstr "登录"
 

	
 
msgid "Captcha"
 
msgstr "验证码"
 

	
 
msgid "Confirm"
 
msgstr "确认"
 

	
 
msgid "Sign Up"
 
msgstr "注册"
 

	
 
msgid "Re-enter password"
 
msgstr "确认密码"
 

	
 
@@ -619,24 +779,33 @@ msgstr "姓"
 
msgid "Email"
 
msgstr "电子邮件"
 

	
 
msgid "journal filter..."
 
msgstr "日志过滤..."
 

	
 
msgid "Filter"
 
msgstr "过滤"
 

	
 
msgid "Action"
 
msgstr "操作"
 

	
 
msgid "Date"
 
msgstr "日期"
 

	
 
msgid "From IP"
 
msgstr "来源IP"
 

	
 
msgid "No actions yet"
 
msgstr "无操作"
 

	
 
msgid "Authentication"
 
msgstr "认证"
 

	
 
msgid "Plugin"
 
msgstr "插件"
 

	
 
msgid "Save"
 
msgstr "保存"
 

	
 
msgid "Type"
 
msgstr "类型"
 

	
 
@@ -657,36 +826,81 @@ msgstr "启用概况页面上的统计窗口。"
 
msgid "Enable downloads"
 
msgstr "启用下载"
 

	
 
msgid "Enable download menu on summary page."
 
msgstr "启用概况页面上的下载菜单。"
 

	
 
msgid "Expires"
 
msgstr "到期"
 

	
 
msgid "Never"
 
msgstr "永不"
 

	
 
msgid "Cancel"
 
msgstr "取消"
 

	
 
msgid "Created"
 
msgstr "创建于"
 

	
 
msgid "Reset"
 
msgstr "重置"
 

	
 
msgid "Gist"
 
msgstr "Gist"
 

	
 
msgid "URL"
 
msgstr "URL"
 

	
 
msgid "Delete"
 
msgstr "删除"
 

	
 
msgid "Edit"
 
msgstr "编辑"
 

	
 
msgid "created"
 
msgstr "创建于"
 

	
 
msgid "My Account"
 
msgstr "我的账户"
 

	
 
msgid "Profile"
 
msgstr "个人资料"
 

	
 
msgid "Built-in"
 
msgstr "内置"
 

	
 
msgid "Expired"
 
msgstr "已到期"
 

	
 
msgid "Remove"
 
msgstr "移除"
 

	
 
msgid "Add"
 
msgstr "增加"
 

	
 
msgid "Primary"
 
msgstr "主要"
 

	
 
msgid "Confirm to delete this email: %s"
 
msgstr "确认删除邮箱:%s"
 

	
 
msgid "New email address"
 
msgstr "增加邮箱"
 

	
 
msgid "New password"
 
msgstr "新密码"
 

	
 
msgid "Gravatar"
 
msgstr "Gravatar"
 

	
 
msgid "Name"
 
msgstr "名称"
 

	
 
msgid "Global"
 
msgstr "全局"
 

	
 
msgid "Anonymous access"
 
msgstr "匿名访问"
 

	
 
msgid "Repository group"
 
msgstr "版本库组"
 

	
 
@@ -702,22 +916,37 @@ msgstr "组名"
 
msgid "Group parent"
 
msgstr "上级组"
 

	
 
msgid "Settings"
 
msgstr "设置"
 

	
 
msgid "Advanced"
 
msgstr "进阶"
 

	
 
msgid "Permissions"
 
msgstr "权限"
 

	
 
msgid "Created on"
 
msgstr "创建于"
 

	
 
msgid "Confirm to delete this group: %s with %s repository"
 
msgid_plural "Confirm to delete this group: %s with %s repositories"
 
msgstr[0] "确认删除这个版本库组:%s包含%s个版本库"
 

	
 
msgid "Visible"
 
msgstr "可见"
 

	
 
msgid "Default"
 
msgstr "默认"
 

	
 
msgid "Revoke"
 
msgstr "撤销"
 

	
 
msgid "Both"
 
msgstr "两者"
 

	
 
msgid "Type of repository to create."
 
msgstr "要创建的版本库类型。"
 

	
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr "保持简短。用README文件来写更长的描述。"
 
@@ -731,36 +960,57 @@ msgstr "默认修订"
 
msgid "Remote"
 
msgstr "远程"
 

	
 
msgid "Statistics"
 
msgstr "统计"
 

	
 
msgid "Parent"
 
msgstr "上级"
 

	
 
msgid "Set"
 
msgstr "设置"
 

	
 
msgid "Remove from public journal"
 
msgstr "从公共日志删除"
 

	
 
msgid "Confirm to delete this repository: %s"
 
msgstr "确认删除版本库:%s"
 

	
 
msgid "Label"
 
msgstr "标签"
 

	
 
msgid "Key"
 
msgstr "键"
 

	
 
msgid "Change owner of this repository."
 
msgstr "修改这个版本库的所有者。"
 

	
 
msgid "State"
 
msgstr "状态"
 

	
 
msgid "VCS"
 
msgstr "VCS"
 

	
 
msgid "Visual"
 
msgstr "外观"
 

	
 
msgid "Hooks"
 
msgstr "钩子"
 

	
 
msgid "Send"
 
msgstr "发送"
 

	
 
msgid "Failed to remove hook"
 
msgstr "移除钩子失败"
 

	
 
msgid "Reindex"
 
msgstr "重新索引"
 

	
 
msgid "Platform"
 
msgstr "平台"
 

	
 
msgid "Show repository size after push"
 
msgstr "推送后显示版本库大小"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "推送后更新版本库(hg update)"
 

	
 
@@ -794,18 +1044,24 @@ msgstr "添加用户"
 
msgid "Users"
 
msgstr "用户"
 

	
 
msgid "Password confirmation"
 
msgstr "确认密码"
 

	
 
msgid "Emails"
 
msgstr "电子邮件"
 

	
 
msgid "Confirm to delete this user: %s"
 
msgstr "确认删除用户:%s"
 

	
 
msgid "New password confirmation"
 
msgstr "确认新密码"
 

	
 
msgid "Support"
 
msgstr "支持"
 

	
 
msgid "Mercurial repository"
 
msgstr "Mercurial版本库"
 

	
 
msgid "Git repository"
 
msgstr "Git版本库"
 

	
 
@@ -824,18 +1080,27 @@ msgstr "选项"
 
msgid "Compare"
 
msgstr "比较显示"
 

	
 
msgid "Search"
 
msgstr "搜索"
 

	
 
msgid "Follow"
 
msgstr "关注"
 

	
 
msgid "Unfollow"
 
msgstr "取消关注"
 

	
 
msgid "Fork"
 
msgstr "复刻"
 

	
 
msgid "Public journal"
 
msgstr "公共日志"
 

	
 
msgid "Gists"
 
msgstr "Gists"
 

	
 
msgid "Log Out"
 
msgstr "退出"
 

	
 
msgid "Create repositories"
 
msgstr "创建版本库"
 

	
 
@@ -894,12 +1159,21 @@ msgstr[0] "显示%d/%d个版本"
 
msgid "Clear selection"
 
msgstr "清除选择"
 

	
 
msgid "There are no changes yet"
 
msgstr "没有任何变更"
 

	
 
msgid "Removed"
 
msgstr "已移除"
 

	
 
msgid "Changed"
 
msgstr "已更改"
 

	
 
msgid "Added"
 
msgstr "已添加"
 

	
 
msgid "First (oldest) changeset in this list"
 
msgstr "此列表中首个(最旧)修订集"
 

	
 
msgid "Last (most recent) changeset in this list"
 
msgstr "此列表中末个(最近)修订集"
 

	
 
@@ -919,12 +1193,15 @@ msgstr "修订集状态:%s 由 %s"
 
msgid "%s Changeset"
 
msgstr "%s 修订集"
 

	
 
msgid "Changeset status"
 
msgstr "修订集状态"
 

	
 
msgid "Merge"
 
msgstr "合并"
 

	
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] "修改%s个文件"
 

	
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
@@ -933,12 +1210,15 @@ msgstr[0] "修改%s个文件包括%s行插入和%s行删除"
 
msgid "on this changeset"
 
msgstr "在此修订集"
 

	
 
msgid "Set changeset status"
 
msgstr "设置修订集状态"
 

	
 
msgid "Close"
 
msgstr "关闭"
 

	
 
msgid "Comment"
 
msgstr "评论"
 

	
 
msgid "You need to be logged in to comment."
 
msgstr "您必须登录才能评论。"
 

	
 
@@ -958,18 +1238,36 @@ msgstr "%s 修订集"
 
msgid "Changeset status: %s"
 
msgstr "修订集状态:%s"
 

	
 
msgid "Files affected"
 
msgstr "影响文件"
 

	
 
msgid "Modified"
 
msgstr "已修改"
 

	
 
msgid "Deleted"
 
msgstr "已删除"
 

	
 
msgid "Renamed"
 
msgstr "已重命名"
 

	
 
msgid "No changesets"
 
msgstr "无修订集"
 

	
 
msgid "is"
 
msgstr "有"
 

	
 
msgid "%s changesets"
 
msgstr "%s 修订集"
 

	
 
msgid "behind"
 
msgstr "落后于"
 

	
 
msgid "Swap"
 
msgstr "交换"
 

	
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] "显示%s个提交"
 

	
 
msgid "Public repository"
 
msgstr "公共版本库"
 
@@ -980,12 +1278,18 @@ msgstr "尚无任何修订集"
 
msgid "Subscribe to %s rss feed"
 
msgstr "订阅%s的RSS"
 

	
 
msgid "Subscribe to %s atom feed"
 
msgstr "订阅%s的Atom"
 

	
 
msgid "Creating"
 
msgstr "创建中"
 

	
 
msgid "branch"
 
msgstr "分支"
 

	
 
msgid "File diff"
 
msgstr "文件差异"
 

	
 
msgid "Ignore whitespace"
 
msgstr "忽略空白"
 

	
 
@@ -1001,12 +1305,15 @@ msgstr "加载文件列表..."
 
msgid "Size"
 
msgstr "大小"
 

	
 
msgid "Last Revision"
 
msgstr "最后修订号"
 

	
 
msgid "Source"
 
msgstr "源代码"
 

	
 
msgid "%s author"
 
msgid_plural "%s authors"
 
msgstr[0] "%s个作者"
 

	
 
msgid "Binary file (%s)"
 
msgstr "二进制文件(%s)"
 
@@ -1047,12 +1354,15 @@ msgstr "完成克隆后检出源代码"
 
msgid "%s Forks"
 
msgstr "%s个复刻"
 

	
 
msgid "Forks"
 
msgstr "复刻"
 

	
 
msgid "Forked"
 
msgstr "已复刻"
 

	
 
msgid "There are no forks yet"
 
msgstr "无复刻"
 

	
 
msgid "ATOM journal feed"
 
msgstr "订阅日志ATOM"
 

	
 
@@ -1071,18 +1381,36 @@ msgstr "订阅公共日志RSS"
 
msgid "Title"
 
msgstr "标题"
 

	
 
msgid "Revision"
 
msgstr "修订"
 

	
 
msgid "Vote"
 
msgstr "投票"
 

	
 
msgid "Age"
 
msgstr "时间"
 

	
 
msgid "Closed"
 
msgstr "已关闭"
 

	
 
msgid "Delete Pull Request"
 
msgstr "删除拉取请求"
 

	
 
msgid "Confirm to delete this pull request"
 
msgstr "确认删除拉取请求"
 

	
 
msgid "Origin"
 
msgstr "来源"
 

	
 
msgid "on"
 
msgstr "于"
 

	
 
msgid "Target"
 
msgstr "目标"
 

	
 
msgid "Search term"
 
msgstr "搜索短语"
 

	
 
msgid "Search in"
 
msgstr "搜索范围"
 

	
 
@@ -1095,12 +1423,15 @@ msgstr "提交信息"
 
msgid "File names"
 
msgstr "文件名"
 

	
 
msgid "Permission denied"
 
msgstr "权限不足"
 

	
 
msgid "Enable"
 
msgstr "启用"
 

	
 
msgid "Stats gathered: "
 
msgstr "已收集的统计: "
 

	
 
msgid "files"
 
msgstr "文件"
 

	
 
@@ -1152,12 +1483,15 @@ msgstr "这个版本库的下载已经禁用"
 
msgid "Download as zip"
 
msgstr "zip打包下载"
 

	
 
msgid "Check this to download archive with subrepos"
 
msgstr "勾选以下载包含子版本库的压缩包"
 

	
 
msgid "Feed"
 
msgstr "订阅源"
 

	
 
msgid "Add or upload files directly via Kallithea"
 
msgstr "通过Kallithea直接添加或者上传文件"
 

	
 
msgid "Existing repository?"
 
msgstr "已有版本库?"
 

	
kallithea/lib/auth.py
Show inline comments
 
@@ -259,13 +259,16 @@ class AuthUser(object):
 

	
 
        else:
 
            # defaults for repository groups taken from default user permission
 
            # on given group
 
            for perm in default_repo_groups_perms:
 
                rg_k = perm.group.group_name
 
                p = perm.permission.permission_name
 
                if perm.group.owner_id == self.user_id:
 
                    p = 'group.admin'
 
                else:
 
                    p = perm.permission.permission_name
 
                repository_group_permissions[rg_k] = p
 

	
 
            # user group for repo groups permissions
 
            user_repo_group_perms_from_users_groups = \
 
                meta.Session().query(db.UserGroupRepoGroupToPerm) \
 
                .join((db.UserGroup, db.UserGroupRepoGroupToPerm.users_group_id ==
kallithea/lib/utils2.py
Show inline comments
 
@@ -35,16 +35,16 @@ import logging
 
import os
 
import re
 
import string
 
import sys
 
import time
 
import urllib.parse
 
from distutils.version import StrictVersion
 

	
 
import bcrypt
 
import urlobject
 
from packaging.version import Version
 
from sqlalchemy.engine import url as sa_url
 
from sqlalchemy.exc import ArgumentError
 
from tg import tmpl_context
 
from tg.support.converters import asbool, aslist
 
from webhelpers2.text import collapse, remove_formatting, strip_tags
 

	
 
@@ -492,13 +492,13 @@ def check_password(password, hashed):
 
        log.error('error from bcrypt checking password: %s', e)
 
        return False
 
    log.error('check_password failed - no method found for hash length %s', len(hashed))
 
    return False
 

	
 

	
 
git_req_ver = StrictVersion('1.7.4')
 
git_req_ver = Version('1.7.4')
 

	
 
def check_git_version():
 
    """
 
    Checks what version of git is installed on the system, and raise a system exit
 
    if it's too old for Kallithea to work properly.
 
    """
 
@@ -523,24 +523,24 @@ def check_git_version():
 
        log.warning('No working git executable found - check "git_path" in the ini file.')
 
        return None
 

	
 
    output = safe_str(stdout).strip()
 
    m = re.search(r"\d+.\d+.\d+", output)
 
    if m:
 
        ver = StrictVersion(m.group(0))
 
        ver = Version(m.group(0))
 
        log.debug('Git executable: "%s", version %s (parsed from: "%s")',
 
                  settings.GIT_EXECUTABLE_PATH, ver, output)
 
        if ver < git_req_ver:
 
            log.error('Kallithea detected %s version %s, which is too old '
 
                      'for the system to function properly. '
 
                      'Please upgrade to version %s or later. '
 
                      'If you strictly need Mercurial repositories, you can '
 
                      'clear the "git_path" setting in the ini file.',
 
                      settings.GIT_EXECUTABLE_PATH, ver, git_req_ver)
 
            log.error("Terminating ...")
 
            sys.exit(1)
 
    else:
 
        ver = StrictVersion('0.0.0')
 
        ver = Version('0.0.0')
 
        log.warning('Error finding version number in "%s --version" stdout:\n%s',
 
                    settings.GIT_EXECUTABLE_PATH, output)
 

	
 
    return ver
kallithea/lib/vcs/utils/fakemod.py
Show inline comments
 
import imp
 
import importlib
 

	
 

	
 
def create_module(name, path):
 
    """
 
    Returns module created *on the fly*. Returned module would have name same
 
    as given ``name`` and would contain code read from file at the given
 
    ``path`` (it may also be a zip or package containing *__main__* module).
 
    """
 
    module = imp.new_module(name)
 
    module.__file__ = path
 
    exec(compile(open(path, "rb").read(), path, 'exec'), module.__dict__)
 

	
 
    spec = importlib.util.spec_from_file_location('module_name', path)
 
    module = importlib.util.module_from_spec(spec)
 
    spec.loader.exec_module(module)
 
    return module
kallithea/model/repo_group.py
Show inline comments
 
@@ -145,18 +145,12 @@ class RepoGroupModel(object):
 
            new_repo_group.group_description = group_description or group_name
 
            new_repo_group.parent_group = parent_group
 
            new_repo_group.group_name = new_repo_group.get_new_name(group_name)
 

	
 
            meta.Session().add(new_repo_group)
 

	
 
            # create an ADMIN permission for owner except if we're super admin,
 
            # later owner should go into the owner field of groups
 
            if not owner.is_admin:
 
                self.grant_user_permission(repo_group=new_repo_group,
 
                                           user=owner, perm='group.admin')
 

	
 
            if parent_group and copy_permissions:
 
                # copy permissions from parent
 
                user_perms = db.UserRepoGroupToPerm.query() \
 
                    .filter(db.UserRepoGroupToPerm.group == parent_group).all()
 

	
 
                group_perms = db.UserGroupRepoGroupToPerm.query() \
kallithea/templates/about.html
Show inline comments
 
@@ -21,23 +21,26 @@
 
  v 3.0 (GPLv3)</a>.</p>
 

	
 
  <p>Kallithea is copyrighted by various authors, including but not
 
  necessarily limited to the following:</p>
 
  <ul>
 

	
 
  <li>Copyright &copy; 2012&ndash;2023, Mads Kiilerich</li>
 
  <li>Copyright &copy; 2012&ndash;2024, Mads Kiilerich</li>
 
  <li>Copyright &copy; 2024, Aristotelis Stageiritis</li>
 
  <li>Copyright &copy; 2024, Poesty Li</li>
 
  <li>Copyright &copy; 2019&ndash;2020, 2022&ndash;2023, Manuel Jacob</li>
 
  <li>Copyright &copy; 2023, Mathias De Mare</li>
 
  <li>Copyright &copy; 2023, qy117121</li>
 
  <li>Copyright &copy; 2015&ndash;2017, 2019&ndash;2022, Étienne Gilli</li>
 
  <li>Copyright &copy; 2016&ndash;2017, 2020, 2022, Asterios Dimitriou</li>
 
  <li>Copyright &copy; 2022, Jaime Marquínez Ferrándiz</li>
 
  <li>Copyright &copy; 2022, Louis Bertrand</li>
 
  <li>Copyright &copy; 2022, toras9000</li>
 
  <li>Copyright &copy; 2022, yzqzss</li>
 
  <li>Copyright &copy; 2022, МАН69К</li>
 
  <li>Copyright &copy; 2014&ndash;2021, Thomas De Schampheleire</li>
 
  <li>Copyright &copy; 2015&ndash;2017, 2019&ndash;2021, Étienne Gilli</li>
 
  <li>Copyright &copy; 2018&ndash;2021, ssantos</li>
 
  <li>Copyright &copy; 2019&ndash;2021, Private</li>
 
  <li>Copyright &copy; 2020&ndash;2021, fresh</li>
 
  <li>Copyright &copy; 2020&ndash;2021, robertus</li>
 
  <li>Copyright &copy; 2021, Eugenia Russell</li>
 
  <li>Copyright &copy; 2021, Michalis</li>
kallithea/templates/admin/repo_groups/repo_group_edit_perms.html
Show inline comments
 
@@ -9,15 +9,13 @@ ${h.form(url('edit_repo_group_perms', gr
 
                    <td>${_('Admin')}<br />(${_('Add/Edit groups')})</td>
 
                    <td>${_('User/User Group')}</td>
 
                    <td></td>
 
                </tr>
 
                ## USERS
 
                %for r2p in c.repo_group.repo_group_to_perm:
 
                    ##forbid revoking permission from yourself, except if you're an super admin
 
                    <tr id="id${id(r2p.user.username)}">
 
                      %if request.authuser.user_id != r2p.user.user_id or request.authuser.is_admin:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write')}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin')}</td>
 
                        <td>
 
                            ${h.gravatar(r2p.user.email, cls="perm-gravatar", size=14)}
 
@@ -31,23 +29,12 @@ ${h.form(url('edit_repo_group_perms', gr
 
                          %if r2p.user.username !='default':
 
                            <button type="button" class="btn btn-default btn-xs" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}', '${r2p.user.username}')">
 
                             <i class="icon-minus-circled"></i>${_('Revoke')}
 
                            </button>
 
                          %endif
 
                        </td>
 
                      %else:
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.none', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.read', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write', disabled="disabled")}</td>
 
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin', disabled="disabled")}</td>
 
                        <td>
 
                            ${h.gravatar(r2p.user.email, cls="perm-gravatar", size=14)}
 
                            ${r2p.user.username if r2p.user.username != 'default' else _('Default')}
 
                        </td>
 
                        <td><i class="icon-user"></i>${_('Admin')}</td>
 
                      %endif
 
                    </tr>
 
                %endfor
 

	
 
                ## USER GROUPS
 
                %for g2p in c.repo_group.users_group_to_perm:
 
                    <tr id="id${id(g2p.users_group.users_group_name)}">
kallithea/templates/base/base.html
Show inline comments
 
@@ -20,13 +20,13 @@
 
        %if c.visual.show_version:
 
            <a class="navbar-link" href="${h.url('kallithea_project_url')}" target="_blank">Kallithea</a> ${c.kallithea_version},
 
        %else:
 
            <a class="navbar-link" href="${h.url('kallithea_project_url')}" target="_blank">Kallithea</a>,
 
        %endif
 
        which is
 
        <a class="navbar-link" href="${h.canonical_url('about')}#copyright">&copy; 2010&ndash;2023 by various authors &amp; licensed under GPLv3</a>.
 
        <a class="navbar-link" href="${h.canonical_url('about')}#copyright">&copy; 2010&ndash;2024 by various authors &amp; licensed under GPLv3</a>.
 
        %if c.issues_url:
 
            &ndash; <a class="navbar-link" href="${c.issues_url}" target="_blank">${_('Support')}</a>
 
        %endif
 
    </span>
 
</div>
 

	
kallithea/tests/conftest.py
Show inline comments
 
@@ -201,13 +201,13 @@ class MyWSGIServer(WSGIServer):
 
                auth += ':' + password
 
        if auth:
 
            auth += '@'
 
        return '%s://%s%s:%s/%s' % (proto, auth, host, port, repo_name)
 

	
 

	
 
@pytest.yield_fixture(scope="session")
 
@pytest.fixture(scope="session")
 
def webserver():
 
    """Start web server while tests are running.
 
    Useful for debugging and necessary for vcs operation tests."""
 
    server = MyWSGIServer(application=kallithea.tests.base.testapp)
 
    server.start()
 

	
kallithea/tests/other/test_vcs_operations.py
Show inline comments
 
@@ -147,12 +147,18 @@ class Command(object):
 
            print('*** CMD %s ***' % command)
 
        testenv = dict(os.environ)
 
        testenv['LANG'] = 'en_US.UTF-8'
 
        testenv['LANGUAGE'] = 'en_US:en'
 
        testenv['HGPLAIN'] = ''
 
        testenv['HGRCPATH'] = ''
 
        testenv['GIT_CONFIG_SYSTEM'] = '/dev/null'
 
        testenv['GIT_CONFIG_GLOBAL'] = '/dev/null'
 
        testenv['GIT_COMMITTER_NAME'] = base.TEST_USER_ADMIN_LOGIN
 
        testenv['GIT_COMMITTER_EMAIL'] = base.TEST_USER_ADMIN_EMAIL
 
        testenv['GIT_AUTHOR_NAME'] = base.TEST_USER_REGULAR_LOGIN
 
        testenv['GIT_AUTHOR_EMAIL'] = base.TEST_USER_REGULAR_EMAIL
 
        testenv.update(environ)
 
        p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd, env=testenv)
 
        stdout, stderr = p.communicate()
 
        if DEBUG:
 
            if stdout:
 
                print('stdout:', stdout)
 
@@ -192,14 +198,13 @@ def _add_files(vcs, dest_dir, files_no=3
 
                i, author_str, added_file
 
            )
 
        elif vcs == 'git':
 
            cmd = """git commit -m "committed new %s" --author "%s" "%s" """ % (
 
                i, author_str, added_file
 
            )
 
        # git commit needs EMAIL on some machines
 
        Command(dest_dir).execute(cmd, EMAIL=email)
 
        Command(dest_dir).execute(cmd)
 

	
 
def _add_files_and_push(webserver, vt, dest_dir, clone_url, ignoreReturnCode=False, files_no=3):
 
    _add_files(vt.repo_type, dest_dir, files_no=files_no)
 
    # PUSH it back
 
    stdout = stderr = None
 
    if vt.repo_type == 'hg':
 
@@ -616,13 +621,13 @@ class TestVCSOperations(base.TestControl
 

	
 
        fork_url = GitHttpVcsTest.repo_url_param(webserver, testfork['git'])
 

	
 
        # add submodule
 
        stdout, stderr = Command(base.TESTS_TMP_PATH).execute('git clone', fork_url, dest_dir)
 
        stdout, stderr = Command(dest_dir).execute('git submodule add', clone_url, 'testsubmodule')
 
        stdout, stderr = Command(dest_dir).execute('git commit -am "added testsubmodule pointing to', clone_url, '"', EMAIL=base.TEST_USER_ADMIN_EMAIL)
 
        stdout, stderr = Command(dest_dir).execute('git commit -am "added testsubmodule pointing to', clone_url, '"')
 
        stdout, stderr = Command(dest_dir).execute('git push', fork_url, 'master')
 

	
 
        # check for testsubmodule link in files page
 
        self.log_user()
 
        response = self.app.get(base.url(controller='files', action='index',
 
                                    repo_name=testfork['git'],
scripts/dbmigrate-test
Show inline comments
 
@@ -91,13 +91,13 @@ install_kallithea() {
 
    "${VIRTUALENV:-virtualenv}" --quiet "$prefix-env"
 
    HG archive --rev "$rev" "$prefix"
 

	
 
    (
 
        cd "$prefix"
 
        . "$prefix-env/bin/activate"
 
        pip install --quiet --upgrade pip setuptools mercurial $EXTRA
 
        pip install --quiet --upgrade "pip<24.1" "setuptools<67" mercurial $EXTRA
 
        pip install --quiet -e .
 
    )
 
}
 

	
 
install_kallithea "$temp/from" "$from_rev_hash"
 
(
scripts/deps.py
Show inline comments
 
@@ -125,12 +125,13 @@ pygments
 
dulwich
 
beaker
 
psycopg2
 
docs
 
setup
 
conftest
 
packaging
 
'''.split())
 

	
 
normal_modules = set('''
 
kallithea
 
kallithea.controllers.base
 
kallithea.lib
scripts/i18n
Show inline comments
 
@@ -17,12 +17,13 @@
 
import os
 
import shutil
 
import sys
 

	
 
import click
 
import i18n_utils
 
from mercurial import util
 

	
 

	
 
"""
 
Tool for maintenance of .po and .pot files
 

	
 
Normally, the i18n-related files contain for each translatable string a
 
@@ -87,42 +88,39 @@ def normalized_merge(local, base, other,
 
        i18n.executable = /path/to/scripts/i18n
 
        i18n.args = normalized-merge $local $base $other $output
 

	
 
    and then invoke merge/rebase/graft with the additional argument '--tool i18n'.
 
    """
 
    from mercurial import context, simplemerge
 
    from mercurial import ui as uimod
 

	
 
    print('i18n normalized-merge: normalizing and merging %s' % output)
 

	
 
    i18n_utils._normalize_po_file(local, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(base, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(other, merge_pot_file=merge_pot_file, strip=strip)
 
    i18n_utils._normalize_po_file(output, merge_pot_file=merge_pot_file, strip=strip)
 

	
 
    # simplemerge will write markers to 'local' if it fails, keep a copy without markers
 
    localkeep = local + '.keep'
 
    shutil.copyfile(local, localkeep)
 

	
 
    ret = simplemerge.simplemerge(uimod.ui.load(),
 
         context.arbitraryfilectx(local.encode('utf-8')),
 
         context.arbitraryfilectx(base.encode('utf-8')),
 
         context.arbitraryfilectx(other.encode('utf-8')),
 
         label=[b'local', b'other', b'base'],
 
    merged_text, conflicts = simplemerge.simplemerge(
 
         simplemerge.MergeInput(context.arbitraryfilectx(local.encode('utf-8'), b'local')),
 
         simplemerge.MergeInput(context.arbitraryfilectx(base.encode('utf-8'), b'base')),
 
         simplemerge.MergeInput(context.arbitraryfilectx(other.encode('utf-8'), b'other')),
 
         mode='merge',
 
    )
 
    shutil.copyfile(local, output)  # simplemerge wrote to local - either resolved or with conflict markers
 
    if ret:
 
    util.writefile(output, merged_text)  # either resolved or with conflict markers
 
    if conflicts:
 
        shutil.copyfile(localkeep, local)
 
        basekeep = base + '.keep'
 
        otherkeep = other + '.keep'
 
        shutil.copyfile(base, basekeep)
 
        shutil.copyfile(other, otherkeep)
 
        sys.stderr.write("Error: simple merge failed and %s is left with conflict markers. Resolve the conflicts, then use 'hg resolve -m'.\n" % output)
 
        sys.stderr.write('Resolve with e.g.: kdiff3 %s %s %s -o %s\n' % (basekeep, localkeep, otherkeep, output))
 
        sys.exit(ret)
 
        sys.exit(1)
 

	
 
    os.remove(localkeep)
 

	
 
@cli.command()
 
@click.argument('file1')
 
@click.argument('file2')
scripts/i18n_utils.py
Show inline comments
 
@@ -165,13 +165,13 @@ def _normalize_po(raw_content):
 
            continue
 
        chunks.append('\n'.join(chunk_lines) + '\n')
 
    return '\n'.join(chunks)
 

	
 
def _normalize_po_file(po_file, merge_pot_file=None, strip=False):
 
    if merge_pot_file:
 
        runcmd(['msgmerge', '--width=76', '--backup=none', '--previous',
 
        runcmd(['msgmerge', '--width=76', '--backup=none', '--previous', '--no-fuzzy-matching',
 
                '--update', po_file, '-q', merge_pot_file])
 
    if strip:
 
        po_tmp = po_file + '.tmp'
 
        with open(po_file, 'r') as src, open(po_tmp, 'w') as dest:
 
            raw_content = src.read()
 
            normalized_content = _normalize_po(raw_content)
scripts/validate-commits
Show inline comments
 
@@ -39,13 +39,13 @@ for rev in $(hg log -r "$revset" -T '{no
 
    hg log -r "$rev"
 
    hg update "$rev"
 

	
 
    cleanup
 
    python3 -m venv "$venv"
 
    source "$venv/bin/activate"
 
    pip install --upgrade pip setuptools
 
    pip install --upgrade "pip<24.1" "setuptools<67"
 
    pip install -e . -r dev_requirements.txt python-ldap python-pam
 

	
 
    # run-all-cleanup
 
    if ! scripts/run-all-cleanup ; then
 
        echo "run-all-cleanup encountered errors!"
 
        result="NOK"
scripts/validate-minimum-dependency-versions
Show inline comments
 
@@ -27,13 +27,13 @@ mkdir -p "$venv"
 
# while fixating the requirement at the lower bound.
 
sed -n 's/.*"\(.*\)>=\(.*\)".*/\1==\2/p' setup.py > "$min_requirements"
 
sed 's/>=/==/p' dev_requirements.txt >> "$min_requirements"
 

	
 
python3 -m venv "$venv"
 
source "$venv/bin/activate"
 
pip install --upgrade pip setuptools
 
pip install --upgrade "pip<24.1" "setuptools<67"
 
pip install -e . -r "$min_requirements" python-ldap python-pam 2> >(tee "$log" >&2)
 

	
 
# Treat any message on stderr as a problem, for the caller to interpret.
 
if [ -s "$log" ]; then
 
    echo
 
    echo "Error: pip detected following problems:"
setup.py
Show inline comments
 
@@ -38,44 +38,44 @@ __url__ = _get_meta_var('__url__', _meta
 
# defines current platform
 
__platform__ = platform.system()
 

	
 
is_windows = __platform__ in ['Windows']
 

	
 
requirements = [
 
    "alembic >= 1.0.10, < 1.5",
 
    "alembic >= 1.0.10, < 1.14",
 
    "gearbox >= 0.1.0, < 1",
 
    "waitress >= 0.8.8, < 1.5",
 
    "waitress >= 0.8.8, < 3.1",
 
    "WebOb >= 1.8, < 1.9",
 
    "backlash >= 0.1.2, < 1",
 
    "TurboGears2 >= 2.4, < 2.5",
 
    "tgext.routes >= 0.2.0, < 1",
 
    "Beaker >= 1.10.1, < 2",
 
    "WebHelpers2 >= 2.0, < 2.1",
 
    "FormEncode >= 1.3.1, < 2.1",
 
    "WebHelpers2 >= 2.0, < 2.2",
 
    "FormEncode >= 1.3.1, < 2.2",
 
    "SQLAlchemy >= 1.2.9, < 1.4",
 
    "Mako >= 0.9.1, < 1.2",
 
    "Pygments >= 2.2.0, < 2.7",
 
    "Mako >= 0.9.1, < 1.4",
 
    "Pygments >= 2.2.0, < 2.8",
 
    "Whoosh >= 2.7.1, < 2.8",
 
    "celery >= 5, < 5.1",
 
    "Babel >= 1.3, < 2.9",
 
    "python-dateutil >= 2.1.0, < 2.9",
 
    "celery >= 5, < 5.5",
 
    "Babel >= 1.3, < 2.16",
 
    "python-dateutil >= 2.1.0, < 2.10",
 
    "Markdown >= 2.2.1, < 3.2",
 
    "docutils >= 0.11, < 0.17",
 
    "docutils >= 0.11, < 0.20",
 
    "URLObject >= 2.3.4, < 2.5",
 
    "Routes >= 2.0, < 2.5",
 
    "dulwich >= 0.19.0, < 0.20",
 
    "mercurial >= 5.2, < 6.2",
 
    "decorator >= 4.2.1, < 4.5",
 
    "Paste >= 2.0.3, < 3.5",
 
    "bleach >= 3.2, < 4.2",
 
    "Click >= 7.0, < 8",
 
    "Routes >= 2.0, < 2.6",
 
    "dulwich >= 0.19.0, < 0.22",
 
    "mercurial >= 5.2, < 6.9",
 
    "decorator >= 4.2.1, < 5.2",
 
    "Paste >= 2.0.3, < 3.11",
 
    "bleach >= 3.2, < 5",
 
    "Click >= 7.0, < 8.2",
 
    "ipaddr >= 2.2.0, < 2.3",
 
    "paginate >= 0.5, < 0.6",
 
    "paginate_sqlalchemy >= 0.3.0, < 0.4",
 
    "bcrypt >= 3.1.0, < 3.2",
 
    "pip >= 20.0, < 999",
 
    "bcrypt >= 3.1.0, < 4.2",
 
    "pip >= 20.0, < 24.1",
 
    "chardet >= 3",
 
]
 
if sys.version_info < (3, 8):
 
    requirements.append("importlib-metadata < 5")
 

	
 
dependency_links = [
0 comments (0 inline, 0 general)