You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by al...@apache.org on 2020/07/24 06:59:42 UTC

[ignite] branch ignite-2.9 updated (e2f866e -> 68165b4)

This is an automated email from the ASF dual-hosted git repository.

alexpl pushed a change to branch ignite-2.9
in repository https://gitbox.apache.org/repos/asf/ignite.git.


    from e2f866e  IGNITE-12996 Remote filter of IgniteEvents has to run inside the Ignite Sandbox - Fixes #8058.
     add 7d2e6ba  IGNITE-12438 Extend communication protocol to support one-way client-server connections - Fixes #7639.
     new d39cc1b  IGNITE-13038 Web Console moved to separate repository: https://github.com/apache/ignite-web-console - Fixes #8065.
     new 68165b4  IGNITE-12930 Fix DistributedProcess if unable to send single message to coordinator (#7714)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                         |     1 -
 assembly/dependencies-apache-ignite-lgpl.xml       |     1 -
 assembly/dependencies-apache-ignite-slim.xml       |     1 -
 assembly/dependencies-apache-ignite.xml            |     1 -
 docker/web-agent/Dockerfile                        |    46 -
 docker/web-agent/README.txt                        |    36 -
 docker/web-console/standalone/Dockerfile           |    84 -
 docker/web-console/standalone/README.txt           |    35 -
 docker/web-console/standalone/docker-entrypoint.sh |    23 -
 docker/web-console/standalone/nginx/nginx.conf     |    55 -
 .../web-console/standalone/nginx/web-console.conf  |    62 -
 .../ignite/configuration/IgniteConfiguration.java  |     2 +-
 .../java/org/apache/ignite/internal/GridTopic.java |     5 +-
 .../managers/communication/GridIoManager.java      |   244 +-
 .../managers/communication/GridIoMessage.java      |    15 +-
 .../communication/GridIoMessageFactory.java        |     2 +
 .../communication/GridIoSecurityAwareMessage.java  |     8 +-
 .../processors/cache/mvcc/MvccProcessorImpl.java   |    14 +-
 .../util/distributed/DistributedProcess.java       |    19 +-
 .../spi/communication/tcp/TcpCommunicationSpi.java |   271 +-
 .../tcp/internal/ConnectionRequestFuture.java}     |     9 +-
 ...hakeException.java => ConnectionRequestor.java} |    19 +-
 .../tcp/internal/NodeUnreachableException.java     |    49 +
 ...on.java => TcpConnectionIndexAwareMessage.java} |    16 +-
 .../TcpConnectionRequestDiscoveryMessage.java}     |    68 +-
 .../TcpInverseConnectionResponseMessage.java}      |    63 +-
 .../TcpDiscoveryServerOnlyCustomEventMessage.java  |     3 +-
 .../main/resources/META-INF/classnames.properties  |     2 +-
 .../IgniteCacheClientReconnectTest.java            |    63 +
 .../datastreamer/DataStreamerImplSelfTest.java     |     5 +-
 .../DistributedProcessCoordinatorLeftTest.java     |   160 +
 ...unicationInverseConnectionEstablishingTest.java |   417 +
 .../testframework/junits/GridAbstractTest.java     |    46 +
 .../IgniteSpiCommunicationSelfTestSuite.java       |     5 +-
 .../ignite/testsuites/IgniteUtilSelfTestSuite.java |     5 +-
 modules/web-console/.dockerignore                  |    10 -
 modules/web-console/.gitignore                     |     4 -
 modules/web-console/DEVNOTES.txt                   |   145 -
 modules/web-console/README.txt                     |    36 -
 modules/web-console/assembly/README.txt            |   127 -
 modules/web-console/assembly/direct-install.xml    |    91 -
 modules/web-console/backend/.eslintrc              |   169 -
 modules/web-console/backend/.gitignore             |     3 -
 modules/web-console/backend/agent_dists/README.txt |     6 -
 modules/web-console/backend/app/agentSocket.js     |   124 -
 modules/web-console/backend/app/agentsHandler.js   |   419 -
 modules/web-console/backend/app/apiServer.js       |    88 -
 modules/web-console/backend/app/browsersHandler.js |   348 -
 modules/web-console/backend/app/configure.js       |   104 -
 modules/web-console/backend/app/mongo.js           |   180 -
 modules/web-console/backend/app/nconf.js           |    54 -
 modules/web-console/backend/app/routes.js          |    66 -
 modules/web-console/backend/app/schemas.js         |  1323 --
 modules/web-console/backend/app/settings.js        |   150 -
 .../backend/config/settings.json.sample            |    36 -
 .../backend/errors/AppErrorException.js            |    34 -
 .../backend/errors/AuthFailedException.js          |    30 -
 .../backend/errors/DuplicateKeyException.js        |    28 -
 .../backend/errors/IllegalAccessError.js           |    30 -
 .../backend/errors/IllegalArgumentException.js     |    28 -
 .../errors/MissingConfirmRegistrationException.js  |    34 -
 .../backend/errors/MissingResourceException.js     |    30 -
 .../backend/errors/ServerErrorException.js         |    35 -
 modules/web-console/backend/errors/index.js        |    43 -
 modules/web-console/backend/index.js               |    41 -
 modules/web-console/backend/injector.js            |    29 -
 modules/web-console/backend/launch-tools.js        |   113 -
 modules/web-console/backend/middlewares/api.js     |    60 -
 modules/web-console/backend/middlewares/demo.js    |    31 -
 modules/web-console/backend/middlewares/host.js    |    40 -
 modules/web-console/backend/middlewares/user.js    |    36 -
 .../migrations/1502249492000-invalidate_rename.js  |    28 -
 .../migrations/1502432624000-cache-index.js        |    32 -
 .../backend/migrations/1504672035000-igfs-index.js |    32 -
 .../migrations/1505114649000-models-index.js       |    32 -
 .../1508395969410-init-registered-date.js          |    34 -
 .../migrations/1516948939797-migrate-configs.js    |   399 -
 .../1547440382485-account-make-email-unique.js     |    85 -
 modules/web-console/backend/migrations/README.txt  |     4 -
 .../backend/migrations/migration-utils.js          |   127 -
 modules/web-console/backend/package-lock.json      |  8115 -----------
 modules/web-console/backend/package.json           |    86 -
 modules/web-console/backend/routes/activities.js   |    46 -
 modules/web-console/backend/routes/admin.js        |    91 -
 modules/web-console/backend/routes/caches.js       |    79 -
 modules/web-console/backend/routes/clusters.js     |   108 -
 .../web-console/backend/routes/configuration.js    |    53 -
 modules/web-console/backend/routes/demo.js         |   145 -
 .../web-console/backend/routes/demo/caches.json    |    87 -
 .../web-console/backend/routes/demo/clusters.json  |    50 -
 .../web-console/backend/routes/demo/domains.json   |   317 -
 modules/web-console/backend/routes/demo/igfss.json |    10 -
 modules/web-console/backend/routes/domains.js      |    84 -
 modules/web-console/backend/routes/downloads.js    |    59 -
 modules/web-console/backend/routes/igfss.js        |    79 -
 modules/web-console/backend/routes/notebooks.js    |    83 -
 modules/web-console/backend/routes/profile.js      |    74 -
 modules/web-console/backend/routes/public.js       |   161 -
 modules/web-console/backend/services/Utils.js      |    51 -
 modules/web-console/backend/services/activities.js |   111 -
 modules/web-console/backend/services/auth.js       |   178 -
 modules/web-console/backend/services/caches.js     |   215 -
 modules/web-console/backend/services/clusters.js   |   279 -
 .../web-console/backend/services/configurations.js |    70 -
 modules/web-console/backend/services/domains.js    |   266 -
 modules/web-console/backend/services/downloads.js  |    93 -
 modules/web-console/backend/services/igfss.js      |   184 -
 modules/web-console/backend/services/mails.js      |   216 -
 modules/web-console/backend/services/notebooks.js  |   115 -
 .../web-console/backend/services/notifications.js  |    50 -
 modules/web-console/backend/services/sessions.js   |    60 -
 modules/web-console/backend/services/spaces.js     |    90 -
 modules/web-console/backend/services/users.js      |   275 -
 modules/web-console/backend/templates/base.html    |    21 -
 modules/web-console/backend/test/app/db.js         |    69 -
 modules/web-console/backend/test/app/httpAgent.js  |    50 -
 modules/web-console/backend/test/app/mail.js       |    31 -
 modules/web-console/backend/test/app/settings.js   |    38 -
 .../web-console/backend/test/config/settings.json  |    17 -
 .../web-console/backend/test/data/accounts.json    |    19 -
 modules/web-console/backend/test/data/caches.json  |   135 -
 .../web-console/backend/test/data/clusters.json    |    56 -
 modules/web-console/backend/test/data/domains.json |   322 -
 modules/web-console/backend/test/data/igfss.json   |    12 -
 modules/web-console/backend/test/data/spaces.json  |    14 -
 modules/web-console/backend/test/index.js          |    31 -
 modules/web-console/backend/test/injector.js       |    36 -
 .../web-console/backend/test/routes/clusters.js    |    82 -
 modules/web-console/backend/test/routes/public.js  |    68 -
 .../backend/test/unit/ActivitiesService.test.js    |   132 -
 .../backend/test/unit/AuthService.test.js          |    94 -
 .../backend/test/unit/CacheService.test.js         |   172 -
 .../backend/test/unit/ClusterService.test.js       |   376 -
 .../backend/test/unit/DomainService.test.js        |   172 -
 .../backend/test/unit/IgfsService.test.js          |   145 -
 .../web-console/backend/test/unit/Utils.test.js    |    48 -
 .../web-console/docker/compose/backend/Dockerfile  |    35 -
 .../web-console/docker/compose/docker-compose.yml  |    55 -
 .../web-console/docker/compose/frontend/Dockerfile |    45 -
 .../docker/compose/frontend/nginx/nginx.conf       |    59 -
 .../docker/compose/frontend/nginx/web-console.conf |    62 -
 modules/web-console/e2e/docker-compose.yml         |    42 -
 modules/web-console/e2e/testcafe/.eslintrc         |     1 -
 modules/web-console/e2e/testcafe/Dockerfile        |    32 -
 .../e2e/testcafe/components/FormField.js           |    88 -
 .../e2e/testcafe/components/ListEditable.js        |    83 -
 .../e2e/testcafe/components/PanelCollapsible.js    |    28 -
 .../web-console/e2e/testcafe/components/Table.js   |    63 -
 .../e2e/testcafe/components/confirmation.js        |    39 -
 .../e2e/testcafe/components/modalInput.js          |    40 -
 .../web-console/e2e/testcafe/components/no-data.js |    20 -
 .../e2e/testcafe/components/notifications.js       |    21 -
 .../components/pageAdvancedConfiguration.js        |    29 -
 .../e2e/testcafe/components/pageConfiguration.js   |    21 -
 .../e2e/testcafe/components/topNavigation.js       |    23 -
 .../e2e/testcafe/components/userMenu.js            |    34 -
 .../e2e/testcafe/environment/envtools.js           |   197 -
 .../e2e/testcafe/environment/launch-env.js         |    26 -
 .../e2e/testcafe/fixtures/admin-panel.js           |    67 -
 .../e2e/testcafe/fixtures/auth/forgot-password.js  |    53 -
 .../e2e/testcafe/fixtures/auth/logout.js           |    38 -
 .../fixtures/auth/signup-validation-local.js       |    52 -
 .../e2e/testcafe/fixtures/auth/signup.js           |    76 -
 .../e2e/testcafe/fixtures/configuration/basic.js   |    86 -
 .../configuration/clusterFormChangeDetection.js    |    58 -
 .../fixtures/configuration/newClusterWithCache.js  |    45 -
 .../testcafe/fixtures/configuration/overview.js    |   147 -
 .../e2e/testcafe/fixtures/menu-smoke.js            |    48 -
 .../testcafe/fixtures/queries/notebooks-list.js    |    59 -
 .../testcafe/fixtures/user-profile/credentials.js  |    63 -
 .../e2e/testcafe/fixtures/user-profile/profile.js  |    60 -
 modules/web-console/e2e/testcafe/helpers.js        |    39 -
 modules/web-console/e2e/testcafe/index.js          |    38 -
 modules/web-console/e2e/testcafe/package.json      |    42 -
 .../PageConfigurationAdvancedCluster.js            |    39 -
 .../testcafe/page-models/PageConfigurationBasic.js |    67 -
 .../page-models/PageConfigurationOverview.js       |    36 -
 .../e2e/testcafe/page-models/PageQueries.js        |    69 -
 .../page-models/pageConfigurationAdvancedIGFS.js   |    21 -
 .../page-models/pageConfigurationAdvancedModels.js |    28 -
 .../e2e/testcafe/page-models/pageForgotPassword.js |    24 -
 .../e2e/testcafe/page-models/pageProfile.js        |    40 -
 .../e2e/testcafe/page-models/pageSignin.js         |    32 -
 .../e2e/testcafe/page-models/pageSignup.js         |    48 -
 modules/web-console/e2e/testcafe/roles.js          |    30 -
 .../web-console/e2e/testcafe/testcafe-runner.js    |    63 -
 modules/web-console/e2e/testenv/Dockerfile         |    51 -
 modules/web-console/e2e/testenv/nginx/nginx.conf   |    55 -
 .../web-console/e2e/testenv/nginx/web-console.conf |    62 -
 modules/web-console/frontend/.babelrc              |    16 -
 modules/web-console/frontend/.eslintrc             |   198 -
 modules/web-console/frontend/.gitignore            |     6 -
 modules/web-console/frontend/app/app.config.js     |   142 -
 modules/web-console/frontend/app/app.d.ts          |    29 -
 modules/web-console/frontend/app/app.js            |   392 -
 .../frontend/app/browserUpdate/index.js            |    36 -
 .../frontend/app/browserUpdate/style.scss          |    36 -
 .../activities-user-dialog.controller.js           |    33 -
 .../activities-user-dialog.tpl.pug                 |    34 -
 .../app/components/activities-user-dialog/index.js |    41 -
 .../app/components/breadcrumbs/component.js        |    43 -
 .../frontend/app/components/breadcrumbs/index.js   |    23 -
 .../frontend/app/components/breadcrumbs/style.scss |    46 -
 .../app/components/breadcrumbs/template.pug        |    17 -
 .../app/components/bs-select-menu/controller.js    |    31 -
 .../app/components/bs-select-menu/directive.js     |    30 -
 .../app/components/bs-select-menu/index.js         |    28 -
 .../app/components/bs-select-menu/index.spec.js    |    67 -
 .../app/components/bs-select-menu/strip.filter.js  |    22 -
 .../app/components/bs-select-menu/style.scss       |   101 -
 .../app/components/bs-select-menu/template.pug     |    47 -
 .../bs-select-menu/transcludeToBody.directive.js   |    50 -
 .../components/cluster-security-icon/component.js  |    25 -
 .../app/components/cluster-security-icon/index.js  |    24 -
 .../components/cluster-security-icon/template.pug  |    30 -
 .../app/components/cluster-selector/component.js   |    25 -
 .../app/components/cluster-selector/controller.js  |   102 -
 .../app/components/cluster-selector/index.js       |    23 -
 .../app/components/cluster-selector/style.scss     |    74 -
 .../app/components/cluster-selector/template.pug   |    82 -
 .../connected-clusters-badge/controller.js         |    56 -
 .../components/connected-clusters-badge/index.js   |    33 -
 .../components/connected-clusters-badge/style.scss |    43 -
 .../connected-clusters-badge/template.pug          |    18 -
 .../components/cell-logout/index.js                |    44 -
 .../components/cell-logout/template.pug            |    23 -
 .../components/cell-status/index.ts                |    31 -
 .../components/list/column-defs.js                 |    59 -
 .../components/list/controller.js                  |    60 -
 .../components/list/index.js                       |    29 -
 .../components/list/style.scss                     |    49 -
 .../components/list/template.tpl.pug               |    19 -
 .../connected-clusters-dialog/controller.js        |    24 -
 .../components/connected-clusters-dialog/index.js  |    35 -
 .../connected-clusters-dialog/service.js           |    44 -
 .../connected-clusters-dialog/style.scss           |    23 -
 .../connected-clusters-dialog/template.tpl.pug     |    34 -
 .../dialog-admin-create-user/component.ts          |    27 -
 .../dialog-admin-create-user/controller.ts         |    78 -
 .../components/dialog-admin-create-user/index.ts   |    23 -
 .../components/dialog-admin-create-user/state.ts   |    29 -
 .../dialog-admin-create-user/template.pug          |    37 -
 .../components/form-field-size/controller.ts       |   163 -
 .../form-field/components/form-field-size/index.js |    42 -
 .../components/form-field-size/style.scss          |    35 -
 .../components/form-field-size/template.pug        |    79 -
 .../form-field/copyInputValueButton.directive.js   |    86 -
 .../form-field/igniteFormField.directive.ts        |    76 -
 .../frontend/app/components/form-field/index.js    |    31 -
 .../form-field/showValidationError.directive.ts    |    77 -
 .../frontend/app/components/form-field/style.scss  |    29 -
 .../app/components/form-signup/component.ts        |    32 -
 .../app/components/form-signup/controller.ts       |    46 -
 .../frontend/app/components/form-signup/index.ts   |    41 -
 .../frontend/app/components/form-signup/style.scss |    31 -
 .../app/components/form-signup/template.pug        |   105 -
 .../components/global-progress-line/component.ts   |    28 -
 .../components/global-progress-line/controller.ts  |    47 -
 .../app/components/global-progress-line/index.ts   |    24 -
 .../app/components/global-progress-line/style.scss |    25 -
 .../components/global-progress-line/template.pug   |    17 -
 .../components/grid-column-selector/component.js   |    29 -
 .../components/grid-column-selector/controller.js  |   115 -
 .../grid-column-selector/controller.spec.js        |   435 -
 .../app/components/grid-column-selector/index.js   |    24 -
 .../app/components/grid-column-selector/style.scss |    25 -
 .../components/grid-column-selector/template.pug   |    29 -
 .../app/components/grid-export/component.js        |    70 -
 .../frontend/app/components/grid-export/index.js   |    24 -
 .../frontend/app/components/grid-export/style.scss |    34 -
 .../app/components/grid-export/template.pug        |    22 -
 .../app/components/grid-item-selected/component.js |    28 -
 .../components/grid-item-selected/controller.js    |    41 -
 .../app/components/grid-item-selected/index.js     |    25 -
 .../app/components/grid-item-selected/style.scss   |    23 -
 .../app/components/grid-item-selected/template.pug |    20 -
 .../app/components/grid-no-data/component.js       |    33 -
 .../app/components/grid-no-data/controller.js      |    50 -
 .../frontend/app/components/grid-no-data/index.js  |    24 -
 .../app/components/grid-no-data/style.scss         |    31 -
 .../app/components/grid-showing-rows/component.js  |    29 -
 .../app/components/grid-showing-rows/controller.js |   101 -
 .../app/components/grid-showing-rows/index.js      |    24 -
 .../app/components/grid-showing-rows/style.scss    |    24 -
 .../components/grid-showing-rows/template.tpl.pug  |    24 -
 .../ignite-chart-series-selector/component.js      |    28 -
 .../ignite-chart-series-selector/controller.js     |    63 -
 .../ignite-chart-series-selector/index.js          |    24 -
 .../ignite-chart-series-selector/template.pug      |    29 -
 .../app/components/ignite-chart/component.ts       |    35 -
 .../components/chart-no-data/component.ts          |    31 -
 .../components/chart-no-data/controller.ts         |    80 -
 .../ignite-chart/components/chart-no-data/index.ts |    23 -
 .../components/chart-no-data/template.tpl.pug      |    20 -
 .../app/components/ignite-chart/controller.js      |   397 -
 .../frontend/app/components/ignite-chart/index.js  |    26 -
 .../app/components/ignite-chart/style.scss         |    85 -
 .../app/components/ignite-chart/template.tpl.pug   |    35 -
 .../app/components/ignite-icon/directive.js        |    82 -
 .../frontend/app/components/ignite-icon/index.js   |    27 -
 .../frontend/app/components/ignite-icon/service.js |    49 -
 .../frontend/app/components/ignite-icon/style.scss |    27 -
 .../frontend/app/components/input-dialog/index.js  |    24 -
 .../input-dialog/input-dialog.controller.js        |    34 -
 .../input-dialog/input-dialog.service.ts           |   172 -
 .../components/input-dialog/input-dialog.tpl.pug   |   108 -
 .../app/components/list-editable/component.js      |    36 -
 .../component.spec.js                              |    72 -
 .../list-editable-add-item-button/component.ts     |    73 -
 .../has-items-template.pug                         |    23 -
 .../list-editable-add-item-button/index.ts         |    24 -
 .../no-items-template.pug                          |    18 -
 .../list-editable-add-item-button/style.scss       |    20 -
 .../list-editable-cols/cols.directive.js           |    77 -
 .../components/list-editable-cols/cols.style.scss  |    61 -
 .../list-editable-cols/cols.template.pug           |    29 -
 .../components/list-editable-cols/index.js         |    27 -
 .../components/list-editable-cols/row.directive.js |    45 -
 .../components/list-editable-one-way/directive.ts  |    45 -
 .../components/list-editable-one-way/index.ts      |    24 -
 .../list-editable-save-on-changes/directives.ts    |    73 -
 .../list-editable-save-on-changes/index.ts         |    24 -
 .../list-editable-transclude/directive.ts          |   117 -
 .../components/list-editable-transclude/index.ts   |    23 -
 .../app/components/list-editable/controller.ts     |   126 -
 .../frontend/app/components/list-editable/index.ts |    35 -
 .../app/components/list-editable/style.scss        |   149 -
 .../app/components/list-editable/template.pug      |    50 -
 .../list-of-registered-users/categories.js         |    31 -
 .../list-of-registered-users/column-defs.js        |    67 -
 .../list-of-registered-users/controller.js         |   406 -
 .../components/list-of-registered-users/index.js   |    28 -
 .../components/list-of-registered-users/style.scss |    35 -
 .../list-of-registered-users/template.tpl.pug      |    85 -
 .../frontend/app/components/no-data/component.ts   |    31 -
 .../frontend/app/components/no-data/controller.ts  |    46 -
 .../frontend/app/components/no-data/index.ts       |    25 -
 .../frontend/app/components/no-data/style.scss     |    28 -
 .../app/components/no-data/template.tpl.pug        |    35 -
 .../app/components/page-admin/controller.ts        |    28 -
 .../frontend/app/components/page-admin/index.js    |    42 -
 .../frontend/app/components/page-admin/style.scss  |    62 -
 .../app/components/page-admin/template.tpl.pug     |    28 -
 .../components/page-forgot-password/component.js   |    30 -
 .../components/page-forgot-password/controller.js  |    75 -
 .../app/components/page-forgot-password/index.js   |    28 -
 .../app/components/page-forgot-password/run.js     |    57 -
 .../app/components/page-forgot-password/style.scss |    41 -
 .../components/page-forgot-password/template.pug   |    40 -
 .../app/components/page-forgot-password/types.ts   |    24 -
 .../frontend/app/components/page-landing/index.js  |    64 -
 .../app/components/page-landing/public.pug         |    21 -
 .../app/components/page-landing/style.scss         |   115 -
 .../app/components/page-landing/template.pug       |    56 -
 .../components/page-password-changed/controller.ts |    32 -
 .../app/components/page-password-changed/index.js  |    49 -
 .../components/page-password-changed/style.scss    |    35 -
 .../components/page-password-changed/template.pug  |    21 -
 .../components/page-password-reset/controller.js   |    60 -
 .../app/components/page-password-reset/index.js    |    65 -
 .../app/components/page-password-reset/style.scss  |    38 -
 .../components/page-password-reset/template.pug    |    60 -
 .../app/components/page-profile/component.js       |    24 -
 .../app/components/page-profile/controller.js      |    98 -
 .../frontend/app/components/page-profile/index.js  |    37 -
 .../app/components/page-profile/style.scss         |    34 -
 .../app/components/page-profile/template.pug       |   161 -
 .../app/components/page-queries/component.js       |    59 -
 .../ignite-information/information.directive.js    |    31 -
 .../components/ignite-information/information.pug  |    20 -
 .../components/ignite-information/information.scss |    55 -
 .../components/query-actions-button/component.ts   |    28 -
 .../components/query-actions-button/controller.ts  |    53 -
 .../components/query-actions-button/template.pug   |    28 -
 .../components/queries-notebook/controller.ts      |  2353 ---
 .../components/queries-notebook/index.js           |    33 -
 .../components/queries-notebook/style.scss         |   197 -
 .../components/queries-notebook/template.tpl.pug   |   510 -
 .../queries-notebooks-list/controller.js           |   207 -
 .../components/queries-notebooks-list/index.js     |    28 -
 .../components/queries-notebooks-list/style.scss   |    39 -
 .../queries-notebooks-list/template.tpl.pug        |    56 -
 .../frontend/app/components/page-queries/index.ts  |   110 -
 .../app/components/page-queries/notebook.data.js   |   174 -
 .../components/page-queries/notebook.service.js    |    91 -
 .../app/components/page-queries/style.scss         |    24 -
 .../app/components/page-queries/template.tpl.pug   |    30 -
 .../app/components/page-signin/component.ts        |    29 -
 .../app/components/page-signin/controller.ts       |    88 -
 .../frontend/app/components/page-signin/index.ts   |    28 -
 .../frontend/app/components/page-signin/run.ts     |    70 -
 .../frontend/app/components/page-signin/style.scss |    41 -
 .../app/components/page-signin/template.pug        |    55 -
 .../page-signup-confirmation/component.ts          |    28 -
 .../page-signup-confirmation/controller.ts         |    42 -
 .../components/page-signup-confirmation/index.ts   |    23 -
 .../components/page-signup-confirmation/state.ts   |    48 -
 .../components/page-signup-confirmation/style.scss |    22 -
 .../page-signup-confirmation/template.tpl.pug      |    24 -
 .../app/components/page-signup/component.js        |    26 -
 .../app/components/page-signup/controller.ts       |    87 -
 .../frontend/app/components/page-signup/index.js   |    29 -
 .../frontend/app/components/page-signup/run.js     |    44 -
 .../frontend/app/components/page-signup/style.scss |    38 -
 .../app/components/page-signup/template.pug        |    32 -
 .../app/components/panel-collapsible/component.js  |    39 -
 .../app/components/panel-collapsible/controller.js |    63 -
 .../app/components/panel-collapsible/index.js      |    25 -
 .../app/components/panel-collapsible/index.spec.js |   139 -
 .../app/components/panel-collapsible/style.scss    |    79 -
 .../app/components/panel-collapsible/template.pug  |    24 -
 .../panel-collapsible/transcludeDirective.js       |    51 -
 .../app/components/password-visibility/index.js    |    26 -
 .../components/password-visibility/index.spec.js   |    65 -
 .../password-visibility/root.directive.js          |    49 -
 .../app/components/password-visibility/style.scss  |    54 -
 .../password-visibility/toggle-button.component.js |    49 -
 .../permanent-notifications/component.ts           |    25 -
 .../permanent-notifications/controller.ts          |    30 -
 .../components/permanent-notifications/index.ts    |    21 -
 .../components/permanent-notifications/style.scss  |    54 -
 .../permanent-notifications/template.pug           |    23 -
 .../app/components/progress-line/component.js      |    28 -
 .../app/components/progress-line/controller.js     |    60 -
 .../frontend/app/components/progress-line/index.js |    23 -
 .../app/components/progress-line/index.spec.js     |    69 -
 .../app/components/progress-line/style.scss        |    82 -
 .../app/components/progress-line/template.pug      |    18 -
 .../protect-from-bs-select-render/directive.js     |    32 -
 .../protect-from-bs-select-render/index.js         |    24 -
 .../app/components/status-output/component.ts      |    31 -
 .../components/status-output/componentFactory.ts   |    30 -
 .../app/components/status-output/controller.ts     |    53 -
 .../frontend/app/components/status-output/index.ts |    40 -
 .../app/components/status-output/style.scss        |    38 -
 .../app/components/status-output/template.tpl.pug  |    18 -
 .../app/components/timed-redirection/component.ts  |    29 -
 .../app/components/timed-redirection/controller.ts |    68 -
 .../app/components/timed-redirection/index.ts      |    23 -
 .../app/components/timed-redirection/style.scss    |    48 -
 .../app/components/timed-redirection/template.pug  |    22 -
 .../components/ui-grid-column-resizer/directive.js |    29 -
 .../app/components/ui-grid-column-resizer/index.js |    24 -
 .../app/components/ui-grid-filters/directive.js    |    95 -
 .../app/components/ui-grid-filters/index.js        |    45 -
 .../app/components/ui-grid-filters/style.scss      |    48 -
 .../app/components/ui-grid-filters/template.pug    |    57 -
 .../app/components/ui-grid-hovering/cell.js        |    48 -
 .../app/components/ui-grid-hovering/hovering.js    |    31 -
 .../app/components/ui-grid-hovering/index.js       |    30 -
 .../app/components/ui-grid-hovering/style.scss     |    28 -
 .../app/components/ui-grid-hovering/viewport.js    |    42 -
 .../frontend/app/components/ui-grid/component.js   |    49 -
 .../frontend/app/components/ui-grid/controller.js  |   244 -
 .../frontend/app/components/ui-grid/decorator.js   |    38 -
 .../frontend/app/components/ui-grid/index.js       |    25 -
 .../frontend/app/components/ui-grid/style.scss     |   148 -
 .../frontend/app/components/ui-grid/template.pug   |    60 -
 .../components/user-notifications/controller.js    |    56 -
 .../app/components/user-notifications/index.js     |    26 -
 .../app/components/user-notifications/service.js   |    76 -
 .../app/components/user-notifications/style.scss   |    24 -
 .../components/user-notifications/template.tpl.pug |    47 -
 .../app/components/version-picker/component.js     |    57 -
 .../app/components/version-picker/index.js         |    25 -
 .../app/components/version-picker/style.scss       |    40 -
 .../app/components/version-picker/template.pug     |    37 -
 .../app/components/web-console-footer/component.js |    25 -
 .../components/web-console-footer/controller.ts    |    30 -
 .../app/components/web-console-footer/index.js     |    32 -
 .../app/components/web-console-footer/style.scss   |   102 -
 .../app/components/web-console-footer/template.pug |    32 -
 .../app/components/web-console-header/component.ts |    43 -
 .../components/demo-mode-button/component.ts       |    24 -
 .../components/demo-mode-button/controller.ts      |    57 -
 .../components/demo-mode-button/template.pug       |    20 -
 .../components/user-menu/component.ts              |    25 -
 .../components/user-menu/controller.ts             |    56 -
 .../components/user-menu/style.scss                |    43 -
 .../components/user-menu/template.pug              |    26 -
 .../web-console-header-content/component.ts        |    25 -
 .../web-console-header-content/controller.ts       |    46 -
 .../web-console-header-content/style.scss          |    44 -
 .../web-console-header-content/template.pug        |    24 -
 .../app/components/web-console-header/index.js     |    29 -
 .../app/components/web-console-header/style.scss   |    95 -
 .../app/components/web-console-header/template.pug |    28 -
 .../components/web-console-sidebar/component.ts    |    25 -
 .../components/web-console-sidebar/controller.ts   |    33 -
 .../app/components/web-console-sidebar/index.ts    |    25 -
 .../app/components/web-console-sidebar/style.scss  |    44 -
 .../components/web-console-sidebar/template.pug    |    22 -
 .../web-console-sidebar-navigation/component.ts    |    28 -
 .../web-console-sidebar-navigation/controller.ts   |    26 -
 .../web-console-sidebar-navigation/style.scss      |   105 -
 .../web-console-sidebar-navigation/template.pug    |    35 -
 .../web-console-sidebar-overflow/component.ts      |    26 -
 .../web-console-sidebar-overflow/controller.ts     |    55 -
 .../web-console-sidebar-overflow/style.scss        |    52 -
 .../web-console-sidebar-overflow/template.pug      |    18 -
 .../button-download-project/component.ts           |    39 -
 .../components/button-download-project/index.ts    |    23 -
 .../button-download-project/template.pug           |    22 -
 .../components/button-import-models/component.ts   |    40 -
 .../components/button-import-models/index.ts       |    23 -
 .../components/button-import-models/style.scss     |    25 -
 .../components/button-import-models/template.pug   |    20 -
 .../components/button-preview-project/component.ts |    39 -
 .../components/button-preview-project/index.ts     |    23 -
 .../components/button-preview-project/template.pug |    22 -
 .../configuration/components/fakeUICanExit.spec.js |    32 -
 .../app/configuration/components/fakeUICanExit.ts  |    60 -
 .../configuration/components/formUICanExitGuard.ts |    62 -
 .../components/modal-import-models/component.js    |  1205 --
 .../components/modal-import-models/index.ts        |    31 -
 .../selected-items-amount-indicator/component.ts   |    27 -
 .../selected-items-amount-indicator/style.scss     |    23 -
 .../selected-items-amount-indicator/template.pug   |    17 -
 .../components/modal-import-models/service.ts      |    96 -
 .../step-indicator/component.ts                    |    38 -
 .../modal-import-models/step-indicator/style.scss  |   100 -
 .../step-indicator/template.pug                    |    31 -
 .../components/modal-import-models/style.scss      |    61 -
 .../tables-action-cell/component.ts                |    76 -
 .../tables-action-cell/style.scss                  |    48 -
 .../tables-action-cell/template.pug                |    43 -
 .../modal-import-models/template.tpl.pug           |   263 -
 .../components/modal-preview-project/component.ts  |    31 -
 .../components/modal-preview-project/controller.ts |   149 -
 .../components/modal-preview-project/index.ts      |    27 -
 .../components/modal-preview-project/service.ts    |    50 -
 .../components/modal-preview-project/style.scss    |    67 -
 .../components/modal-preview-project/template.pug  |    48 -
 .../page-configure-advanced/component.ts           |    25 -
 .../components/cache-edit-form/component.ts        |    32 -
 .../components/cache-edit-form/controller.ts       |   131 -
 .../components/cache-edit-form/index.ts            |    23 -
 .../components/cache-edit-form/style.scss          |    20 -
 .../components/cache-edit-form/template.tpl.pug    |    44 -
 .../cache-edit-form/templates/affinity.pug         |   142 -
 .../cache-edit-form/templates/concurrency.pug      |    87 -
 .../cache-edit-form/templates/general.pug          |   155 -
 .../cache-edit-form/templates/key-cfg.pug          |    66 -
 .../cache-edit-form/templates/memory.pug           |   252 -
 .../components/cache-edit-form/templates/misc.pug  |    95 -
 .../templates/near-cache-client.pug                |    67 -
 .../templates/near-cache-server.pug                |    68 -
 .../cache-edit-form/templates/node-filter.pug      |    67 -
 .../components/cache-edit-form/templates/query.pug |   177 -
 .../cache-edit-form/templates/rebalance.pug        |   108 -
 .../cache-edit-form/templates/statistics.pug       |    44 -
 .../components/cache-edit-form/templates/store.pug |   432 -
 .../components/cluster-edit-form/component.ts      |    31 -
 .../cluster-edit-form/controller.spec.js           |    81 -
 .../components/cluster-edit-form/controller.ts     |   190 -
 .../components/cluster-edit-form/index.ts          |    22 -
 .../components/cluster-edit-form/style.scss        |    20 -
 .../components/cluster-edit-form/template.tpl.pug  |    90 -
 .../cluster-edit-form/templates/atomic.pug         |   129 -
 .../cluster-edit-form/templates/attributes.pug     |    41 -
 .../cluster-edit-form/templates/binary.pug         |   151 -
 .../cluster-edit-form/templates/cache-key-cfg.pug  |    66 -
 .../cluster-edit-form/templates/checkpoint.pug     |   109 -
 .../cluster-edit-form/templates/checkpoint/fs.pug  |    42 -
 .../templates/checkpoint/jdbc.pug                  |   126 -
 .../cluster-edit-form/templates/checkpoint/s3.pug  |   443 -
 .../templates/client-connector.pug                 |   184 -
 .../cluster-edit-form/templates/collision.pug      |    64 -
 .../templates/collision/custom.pug                 |    30 -
 .../templates/collision/fifo-queue.pug             |    38 -
 .../templates/collision/job-stealing.pug           |    83 -
 .../templates/collision/priority-queue.pug         |    79 -
 .../cluster-edit-form/templates/communication.pug  |   318 -
 .../cluster-edit-form/templates/connector.pug      |   233 -
 .../cluster-edit-form/templates/data-storage.pug   |   515 -
 .../cluster-edit-form/templates/deployment.pug     |   265 -
 .../cluster-edit-form/templates/discovery.pug      |   259 -
 .../cluster-edit-form/templates/encryption.pug     |    81 -
 .../cluster-edit-form/templates/events.pug         |   151 -
 .../cluster-edit-form/templates/failover.pug       |   189 -
 .../cluster-edit-form/templates/general.pug        |   101 -
 .../templates/general/discovery/cloud.pug          |   100 -
 .../templates/general/discovery/google.pug         |    63 -
 .../templates/general/discovery/jdbc.pug           |    52 -
 .../templates/general/discovery/kubernetes.pug     |    59 -
 .../templates/general/discovery/multicast.pug      |    94 -
 .../templates/general/discovery/s3.pug             |    55 -
 .../templates/general/discovery/shared.pug         |    30 -
 .../templates/general/discovery/vm.pug             |    55 -
 .../templates/general/discovery/zookeeper.pug      |   115 -
 .../retrypolicy/bounded-exponential-backoff.pug    |    48 -
 .../discovery/zookeeper/retrypolicy/custom.pug     |    32 -
 .../zookeeper/retrypolicy/exponential-backoff.pug  |    48 -
 .../discovery/zookeeper/retrypolicy/forever.pug    |    30 -
 .../discovery/zookeeper/retrypolicy/n-times.pug    |    38 -
 .../discovery/zookeeper/retrypolicy/one-time.pug   |    30 -
 .../zookeeper/retrypolicy/until-elapsed.pug        |    38 -
 .../cluster-edit-form/templates/hadoop.pug         |   147 -
 .../cluster-edit-form/templates/load-balancing.pug |   183 -
 .../cluster-edit-form/templates/logger.pug         |    66 -
 .../cluster-edit-form/templates/logger/custom.pug  |    31 -
 .../cluster-edit-form/templates/logger/log4j.pug   |    68 -
 .../cluster-edit-form/templates/logger/log4j2.pug  |    50 -
 .../cluster-edit-form/templates/marshaller.pug     |   115 -
 .../cluster-edit-form/templates/memory.pug         |   240 -
 .../cluster-edit-form/templates/metrics.pug        |    71 -
 .../cluster-edit-form/templates/misc.pug           |   223 -
 .../cluster-edit-form/templates/mvcc.pug           |    47 -
 .../cluster-edit-form/templates/odbc.pug           |   106 -
 .../cluster-edit-form/templates/persistence.pug    |   247 -
 .../cluster-edit-form/templates/service.pug        |   114 -
 .../cluster-edit-form/templates/sql-connector.pug  |   117 -
 .../components/cluster-edit-form/templates/ssl.pug |   160 -
 .../cluster-edit-form/templates/swap.pug           |   105 -
 .../cluster-edit-form/templates/thread.pug         |   207 -
 .../cluster-edit-form/templates/time.pug           |    72 -
 .../cluster-edit-form/templates/transactions.pug   |   124 -
 .../components/igfs-edit-form/component.ts         |    30 -
 .../components/igfs-edit-form/controller.ts        |    75 -
 .../components/igfs-edit-form/index.ts             |    22 -
 .../components/igfs-edit-form/style.scss           |    20 -
 .../components/igfs-edit-form/template.tpl.pug     |    35 -
 .../components/igfs-edit-form/templates/dual.pug   |    59 -
 .../igfs-edit-form/templates/fragmentizer.pug      |    67 -
 .../igfs-edit-form/templates/general.pug           |    73 -
 .../components/igfs-edit-form/templates/ipc.pug    |   105 -
 .../components/igfs-edit-form/templates/misc.pug   |   209 -
 .../igfs-edit-form/templates/secondary.pug         |   307 -
 .../components/model-edit-form/component.js        |    31 -
 .../components/model-edit-form/controller.ts       |   193 -
 .../components/model-edit-form/index.js            |    22 -
 .../components/model-edit-form/style.scss          |    20 -
 .../components/model-edit-form/template.tpl.pug    |    29 -
 .../model-edit-form/templates/general.pug          |    89 -
 .../components/model-edit-form/templates/query.pug |   362 -
 .../components/model-edit-form/templates/store.pug |   152 -
 .../page-configure-advanced-caches/component.ts    |    25 -
 .../page-configure-advanced-caches/controller.ts   |   167 -
 .../page-configure-advanced-caches/index.ts        |    23 -
 .../page-configure-advanced-caches/template.pug    |    57 -
 .../page-configure-advanced-cluster/component.ts   |    25 -
 .../page-configure-advanced-cluster/controller.ts  |    62 -
 .../page-configure-advanced-cluster/index.ts       |    23 -
 .../page-configure-advanced-cluster/template.pug   |    25 -
 .../page-configure-advanced-igfs/component.ts      |    25 -
 .../page-configure-advanced-igfs/controller.ts     |   156 -
 .../page-configure-advanced-igfs/index.ts          |    23 -
 .../page-configure-advanced-igfs/template.pug      |    51 -
 .../page-configure-advanced-models/component.ts    |    26 -
 .../page-configure-advanced-models/controller.ts   |   176 -
 .../hasIndex.template.pug                          |    23 -
 .../page-configure-advanced-models/index.ts        |    23 -
 .../keyCell.template.pug                           |    21 -
 .../page-configure-advanced-models/style.scss      |    37 -
 .../page-configure-advanced-models/template.pug    |    51 -
 .../valueCell.template.pug                         |    18 -
 .../page-configure-advanced/controller.ts          |    31 -
 .../components/page-configure-advanced/index.ts    |    40 -
 .../components/page-configure-advanced/style.scss  |    96 -
 .../page-configure-advanced/template.pug           |    24 -
 .../components/page-configure-basic/component.ts   |    25 -
 .../components/page-configure-basic/controller.ts  |   210 -
 .../components/page-configure-basic/index.ts       |    28 -
 .../page-configure-basic/reducer.spec.js           |   208 -
 .../components/page-configure-basic/reducer.ts     |   109 -
 .../components/page-configure-basic/style.scss     |   136 -
 .../components/page-configure-basic/template.pug   |   198 -
 .../page-configure-overview/component.ts           |    25 -
 .../pco-grid-column-categories/directive.ts        |    66 -
 .../page-configure-overview/controller.ts          |   166 -
 .../components/page-configure-overview/index.ts    |    26 -
 .../components/page-configure-overview/style.scss  |    33 -
 .../page-configure-overview/template.pug           |    44 -
 .../components/page-configure/component.ts         |    28 -
 .../components/page-configure/controller.ts        |    51 -
 .../components/page-configure/index.ts             |    21 -
 .../components/page-configure/style.scss           |   334 -
 .../components/page-configure/template.pug         |    49 -
 .../components/pc-items-table/component.js         |    45 -
 .../components/pc-items-table/controller.js        |   143 -
 .../components/pc-items-table/decorator.js         |    34 -
 .../components/pc-items-table/index.js             |    25 -
 .../components/pc-items-table/style.scss           |    68 -
 .../components/pc-items-table/template.pug         |    46 -
 .../components/pc-split-button/component.ts        |    27 -
 .../components/pc-split-button/controller.ts       |    34 -
 .../components/pc-split-button/index.ts            |    23 -
 .../components/pc-split-button/template.pug        |    28 -
 .../components/pc-ui-grid-filters/directive.ts     |    65 -
 .../components/pc-ui-grid-filters/index.ts         |    46 -
 .../components/pc-ui-grid-filters/style.scss       |    22 -
 .../components/pc-ui-grid-filters/template.pug     |    39 -
 .../configuration/components/pcIsInCollection.ts   |    46 -
 .../app/configuration/components/pcValidation.ts   |   117 -
 .../components/preview-panel/directive.ts          |   242 -
 .../components/preview-panel/index.ts              |    23 -
 .../configuration/components/ui-ace-java/index.ts  |    26 -
 .../ui-ace-java/ui-ace-java.controller.ts          |    22 -
 .../ui-ace-java/ui-ace-java.directive.ts           |    44 -
 .../components/ui-ace-java/ui-ace-java.pug         |    22 -
 .../components/ui-ace-spring/index.ts              |    26 -
 .../ui-ace-spring/ui-ace-spring.controller.ts      |    22 -
 .../ui-ace-spring/ui-ace-spring.directive.ts       |    44 -
 .../components/ui-ace-spring/ui-ace-spring.pug     |    17 -
 .../components/ui-ace-tabs.directive.ts            |    26 -
 .../configuration/components/ui-ace.controller.js  |   123 -
 .../frontend/app/configuration/defaultNames.ts     |    23 -
 .../generator/JavaTypesNonEnum.service.spec.ts     |    38 -
 .../generator/JavaTypesNonEnum.service.ts          |    62 -
 .../generator/configuration.module.js              |    60 -
 .../generator/generator/AbstractTransformer.js     |   423 -
 .../generator/ArtifactVersionChecker.service.js    |    86 -
 .../app/configuration/generator/generator/Beans.js |   424 -
 .../generator/generator/ConfigurationGenerator.js  |  2999 ----
 .../generator/generator/Custom.service.js          |    23 -
 .../generator/generator/Docker.service.js          |   109 -
 .../generator/generator/Docker.service.spec.js     |   133 -
 .../generator/generator/JavaTransformer.service.js |  1808 ---
 .../generator/generator/Maven.service.js           |   267 -
 .../generator/generator/PlatformGenerator.js       |   531 -
 .../generator/generator/Properties.service.js      |    94 -
 .../generator/generator/Readme.service.js          |    78 -
 .../generator/SharpTransformer.service.js          |   258 -
 .../generator/SpringTransformer.service.js         |   346 -
 .../generator/generator/StringBuilder.js           |    76 -
 .../generator/defaults/Cache.platform.service.js   |    56 -
 .../generator/generator/defaults/Cache.service.js  |   151 -
 .../generator/defaults/Cluster.platform.service.js |    43 -
 .../generator/defaults/Cluster.service.js          |   475 -
 .../generator/defaults/Event-groups.service.js     |    27 -
 .../generator/generator/defaults/IGFS.service.js   |    78 -
 .../app/configuration/icons/configuration.icon.svg |    13 -
 .../frontend/app/configuration/index.lazy.ts       |    48 -
 .../frontend/app/configuration/index.ts            |   193 -
 .../frontend/app/configuration/mixins.pug          |   419 -
 .../frontend/app/configuration/services/Caches.ts  |   236 -
 .../app/configuration/services/Clusters.spec.js    |    55 -
 .../app/configuration/services/Clusters.ts         |   601 -
 .../services/ConfigChangesGuard.spec.js            |    40 -
 .../configuration/services/ConfigChangesGuard.ts   |    96 -
 .../services/ConfigSelectionManager.ts             |    93 -
 .../services/ConfigurationDownload.spec.js         |   110 -
 .../services/ConfigurationDownload.ts              |    82 -
 .../services/ConfigurationResource.spec.js         |    78 -
 .../services/ConfigurationResource.ts              |    48 -
 .../app/configuration/services/ConfigureState.ts   |    62 -
 .../frontend/app/configuration/services/IGFSs.ts   |    93 -
 .../frontend/app/configuration/services/Models.ts  |   199 -
 .../app/configuration/services/PageConfigure.ts    |    57 -
 .../app/configuration/services/SummaryZipper.ts    |    41 -
 .../app/configuration/services/summary.worker.js   |   147 -
 .../frontend/app/configuration/states.ts           |   289 -
 .../app/configuration/store/actionCreators.js      |   170 -
 .../app/configuration/store/actionTypes.js         |    31 -
 .../frontend/app/configuration/store/effects.js    |   763 -
 .../app/configuration/store/effects.spec.js        |   134 -
 .../frontend/app/configuration/store/reducer.js    |   502 -
 .../app/configuration/store/reducer.spec.js        |   275 -
 .../frontend/app/configuration/store/selectors.ts  |   209 -
 .../configuration/transitionHooks/errorState.ts    |    55 -
 .../frontend/app/configuration/types/index.ts      |   140 -
 .../app/core/activities/Activities.data.ts         |    51 -
 .../frontend/app/core/admin/Admin.data.js          |   102 -
 modules/web-console/frontend/app/core/index.js     |    25 -
 .../frontend/app/core/utils/maskNull.js            |    21 -
 modules/web-console/frontend/app/data/colors.json  |    22 -
 .../web-console/frontend/app/data/countries.json   |   179 -
 .../web-console/frontend/app/data/demo-info.json   |    14 -
 .../web-console/frontend/app/data/dialects.json    |     9 -
 .../frontend/app/data/event-groups.json            |   169 -
 .../frontend/app/data/getting-started.json         |   129 -
 modules/web-console/frontend/app/data/i18n.js      |   308 -
 .../frontend/app/data/java-classes.json            |    21 -
 .../frontend/app/data/java-keywords.json           |    55 -
 .../frontend/app/data/java-primitives.json         |     9 -
 .../web-console/frontend/app/data/jdbc-types.json  |    44 -
 .../frontend/app/data/pom-dependencies.json        |    28 -
 .../frontend/app/data/sql-keywords.json            |    41 -
 .../app/directives/auto-focus.directive.js         |    35 -
 .../frontend/app/directives/btn-ignite-link.js     |    29 -
 .../app/directives/copy-to-clipboard.directive.js  |    38 -
 .../hide-on-state-change.directive.js              |    36 -
 .../frontend/app/directives/match.directive.js     |    47 -
 .../app/directives/match.directive.spec.js         |    84 -
 .../app/directives/on-click-focus.directive.js     |    38 -
 .../directives/on-enter-focus-move.directive.js    |    41 -
 .../frontend/app/directives/on-enter.directive.js  |    44 -
 .../frontend/app/directives/on-escape.directive.js |    44 -
 .../app/directives/on-focus-out.directive.js       |   107 -
 .../app/directives/retain-selection.directive.js   |    78 -
 .../frontend/app/errors/CancellationError.js       |    28 -
 .../frontend/app/filters/byName.filter.js          |    25 -
 .../frontend/app/filters/bytes.filter.js           |    40 -
 .../frontend/app/filters/bytes.filter.spec.js      |    36 -
 .../frontend/app/filters/default-name.filter.js    |    29 -
 .../app/filters/domainsValidation.filter.js        |    51 -
 .../frontend/app/filters/duration.filter.js        |    47 -
 .../frontend/app/filters/hasPojo.filter.js         |    21 -
 .../web-console/frontend/app/filters/id8.filter.js |    22 -
 .../app/filters/uiGridSubcategories.filter.js      |    26 -
 .../frontend/app/helpers/jade/mixins.pug           |    22 -
 .../web-console/frontend/app/modules/ace.module.js |   284 -
 .../app/modules/agent/AgentManager.service.js      |   861 --
 .../app/modules/agent/AgentModal.service.js        |    98 -
 .../frontend/app/modules/agent/agent.module.js     |    30 -
 .../agent/components/cluster-login/component.js    |    45 -
 .../agent/components/cluster-login/index.js        |    25 -
 .../agent/components/cluster-login/service.js      |    85 -
 .../agent/components/cluster-login/template.pug    |    58 -
 .../app/modules/agent/decompress.worker.js         |    36 -
 .../frontend/app/modules/agent/types/Cluster.js    |    37 -
 .../app/modules/agent/types/ClusterSecrets.js      |    61 -
 .../modules/agent/types/ClusterSecretsManager.js   |    70 -
 .../app/modules/branding/branding.module.js        |    41 -
 .../app/modules/branding/branding.service.js       |    46 -
 .../app/modules/branding/features.directive.js     |    40 -
 .../app/modules/branding/terms.directive.js        |    35 -
 .../frontend/app/modules/cluster/Cache.js          |    52 -
 .../frontend/app/modules/cluster/CacheMetrics.js   |    62 -
 .../frontend/app/modules/cluster/NodeMetrics.js    |    19 -
 .../frontend/app/modules/demo/Demo.module.js       |   182 -
 .../app/modules/dialog/dialog-content.directive.js |    31 -
 .../app/modules/dialog/dialog-title.directive.js   |    31 -
 .../app/modules/dialog/dialog.controller.js        |    38 -
 .../app/modules/dialog/dialog.directive.js         |    32 -
 .../frontend/app/modules/dialog/dialog.factory.js  |    36 -
 .../frontend/app/modules/dialog/dialog.module.js   |    32 -
 .../frontend/app/modules/dialog/dialog.tpl.pug     |    26 -
 .../form/field/bs-select-placeholder.directive.js  |    57 -
 .../form/field/input/autofocus.directive.js        |    42 -
 .../frontend/app/modules/form/form.module.js       |    60 -
 .../app/modules/form/services/FormGUID.service.js  |    22 -
 .../modules/form/validator/ipaddress.directive.js  |    99 -
 .../validator/java-built-in-class.directive.js     |    48 -
 .../form/validator/java-identifier.directive.js    |    51 -
 .../form/validator/java-keywords.directive.js      |    52 -
 .../form/validator/java-package-name.directive.js  |    44 -
 .../validator/java-package-specified.directive.js  |    52 -
 .../form/validator/property-unique.directive.js    |    60 -
 .../property-value-specified.directive.js          |    39 -
 .../app/modules/form/validator/unique.directive.js |    92 -
 .../app/modules/form/validator/uuid.directive.js   |    44 -
 .../getting-started/GettingStarted.provider.js     |   146 -
 .../app/modules/loading/loading.directive.js       |    57 -
 .../frontend/app/modules/loading/loading.module.js |    26 -
 .../frontend/app/modules/loading/loading.pug       |    23 -
 .../frontend/app/modules/loading/loading.scss      |    73 -
 .../app/modules/loading/loading.service.js         |    54 -
 .../app/modules/navbar/Userbar.provider.js         |    30 -
 .../frontend/app/modules/navbar/navbar.module.js   |    26 -
 .../frontend/app/modules/nodes/Nodes.service.js    |    68 -
 .../app/modules/nodes/nodes-dialog.controller.js   |    70 -
 .../frontend/app/modules/nodes/nodes-dialog.scss   |    32 -
 .../app/modules/nodes/nodes-dialog.tpl.pug         |    42 -
 .../frontend/app/modules/nodes/nodes.module.js     |    27 -
 .../frontend/app/modules/socket.module.js          |    47 -
 .../frontend/app/modules/states/admin.state.js     |    35 -
 .../frontend/app/modules/states/errors.state.js    |    51 -
 .../frontend/app/modules/states/logout.state.js    |    33 -
 .../frontend/app/modules/states/settings.state.js  |    33 -
 .../frontend/app/modules/user/Auth.service.ts      |    98 -
 .../frontend/app/modules/user/User.service.js      |    85 -
 .../modules/user/emailConfirmationInterceptor.ts   |    37 -
 .../frontend/app/modules/user/permissions.js       |    28 -
 .../frontend/app/modules/user/user.module.js       |   111 -
 .../frontend/app/primitives/badge/index.scss       |    40 -
 .../frontend/app/primitives/btn-group/index.pug    |    39 -
 .../frontend/app/primitives/btn/index.scss         |   375 -
 .../frontend/app/primitives/checkbox/index.scss    |    32 -
 .../frontend/app/primitives/datepicker/index.pug   |    65 -
 .../frontend/app/primitives/datepicker/index.scss  |    42 -
 .../frontend/app/primitives/dropdown/index.pug     |    42 -
 .../frontend/app/primitives/dropdown/index.scss    |    79 -
 .../app/primitives/form-field/checkbox.pug         |    31 -
 .../app/primitives/form-field/dropdown.pug         |    59 -
 .../frontend/app/primitives/form-field/email.pug   |    38 -
 .../frontend/app/primitives/form-field/error.pug   |    30 -
 .../frontend/app/primitives/form-field/index.pug   |    29 -
 .../frontend/app/primitives/form-field/index.scss  |   706 -
 .../frontend/app/primitives/form-field/input.pug   |    29 -
 .../frontend/app/primitives/form-field/label.pug   |    31 -
 .../frontend/app/primitives/form-field/number.pug  |    48 -
 .../app/primitives/form-field/password.pug         |    53 -
 .../frontend/app/primitives/form-field/phone.pug   |    37 -
 .../frontend/app/primitives/form-field/radio.pug   |    32 -
 .../frontend/app/primitives/form-field/text.pug    |    36 -
 .../frontend/app/primitives/form-field/tooltip.pug |    26 -
 .../app/primitives/form-field/typeahead.pug        |    55 -
 .../frontend/app/primitives/grid/index.scss        |    42 -
 .../web-console/frontend/app/primitives/index.js   |    37 -
 .../frontend/app/primitives/modal/index.scss       |   269 -
 .../frontend/app/primitives/page/index.scss        |    34 -
 .../frontend/app/primitives/panel/index.scss       |   132 -
 .../app/primitives/spinner-circle/index.scss       |    59 -
 .../frontend/app/primitives/switcher/index.pug     |    20 -
 .../frontend/app/primitives/switcher/index.scss    |   119 -
 .../frontend/app/primitives/table/index.scss       |    90 -
 .../frontend/app/primitives/tabs/index.scss        |    95 -
 .../frontend/app/primitives/timepicker/index.pug   |    63 -
 .../frontend/app/primitives/timepicker/index.scss  |    90 -
 .../frontend/app/primitives/tooltip/index.scss     |    40 -
 .../frontend/app/primitives/typography/index.scss  |    36 -
 .../app/primitives/ui-grid-header/index.scss       |   133 -
 .../app/primitives/ui-grid-header/index.tpl.pug    |    37 -
 .../app/primitives/ui-grid-settings/index.scss     |   272 -
 .../frontend/app/primitives/ui-grid/index.scss     |   554 -
 .../app/services/AngularStrapSelect.decorator.js   |    78 -
 .../app/services/AngularStrapTooltip.decorator.js  |   103 -
 modules/web-console/frontend/app/services/CSV.js   |    22 -
 .../frontend/app/services/ChartColors.service.js   |    22 -
 .../frontend/app/services/Confirm.service.js       |   118 -
 .../frontend/app/services/ConfirmBatch.service.js  |   101 -
 .../app/services/CopyToClipboard.service.js        |    62 -
 .../frontend/app/services/Countries.service.js     |    43 -
 .../frontend/app/services/DefaultState.js          |    39 -
 .../frontend/app/services/ErrorParser.service.js   |    89 -
 .../frontend/app/services/ErrorPopover.service.js  |   125 -
 .../frontend/app/services/Focus.service.js         |    41 -
 .../frontend/app/services/FormUtils.service.js     |   464 -
 .../frontend/app/services/InetAddress.service.js   |    55 -
 .../frontend/app/services/JavaTypes.service.js     |   163 -
 .../frontend/app/services/JavaTypes.spec.js        |   120 -
 .../frontend/app/services/LegacyTable.service.js   |   235 -
 .../frontend/app/services/LegacyUtils.service.js   |   556 -
 .../frontend/app/services/Messages.service.js      |    75 -
 .../app/services/ModelNormalizer.service.js        |    61 -
 .../frontend/app/services/SqlTypes.service.js      |    67 -
 .../frontend/app/services/Version.service.js       |   198 -
 .../frontend/app/services/Version.spec.js          |   106 -
 .../frontend/app/services/exceptionHandler.js      |    36 -
 modules/web-console/frontend/app/services/index.js |    25 -
 modules/web-console/frontend/app/services/store.ts |    73 -
 .../web-console/frontend/app/store/actions/ui.ts   |    36 -
 .../web-console/frontend/app/store/actions/user.ts |    24 -
 .../web-console/frontend/app/store/effects/ui.ts   |    32 -
 modules/web-console/frontend/app/store/index.ts    |    48 -
 modules/web-console/frontend/app/store/ofType.ts   |    26 -
 .../web-console/frontend/app/store/reducers/ui.ts  |    50 -
 .../web-console/frontend/app/store/reduxDebug.ts   |    45 -
 .../frontend/app/store/reduxDevtoolsIntegration.js |    80 -
 .../web-console/frontend/app/store/selectors/ui.ts |    29 -
 modules/web-console/frontend/app/style.scss        |    22 -
 modules/web-console/frontend/app/types/index.ts    |    82 -
 .../frontend/app/utils/SimpleWorkerPool.js         |   115 -
 .../web-console/frontend/app/utils/dialogState.ts  |    56 -
 modules/web-console/frontend/app/utils/id8.js      |    20 -
 .../web-console/frontend/app/utils/lodashMixins.js |    23 -
 .../web-console/frontend/app/utils/uniqueName.js   |    27 -
 modules/web-console/frontend/app/vendor.js         |    59 -
 modules/web-console/frontend/index.js              |    23 -
 modules/web-console/frontend/package-lock.json     | 14224 -------------------
 modules/web-console/frontend/package.json          |   147 -
 modules/web-console/frontend/public/favicon.ico    |   Bin 1150 -> 0 bytes
 .../web-console/frontend/public/images/cache.png   |   Bin 15087 -> 0 bytes
 .../frontend/public/images/checkbox-active.svg     |    25 -
 .../frontend/public/images/checkbox.svg            |    22 -
 .../frontend/public/images/cluster-quick.png       |   Bin 16407 -> 0 bytes
 .../web-console/frontend/public/images/cluster.png |   Bin 24083 -> 0 bytes
 .../frontend/public/images/collapse.svg            |     3 -
 .../web-console/frontend/public/images/domains.png |   Bin 17899 -> 0 bytes
 .../web-console/frontend/public/images/expand.svg  |     3 -
 .../frontend/public/images/icons/alert.icon.svg    |     1 -
 .../public/images/icons/attention.icon.svg         |     3 -
 .../frontend/public/images/icons/check.icon.svg    |     3 -
 .../public/images/icons/checkmark.icon.svg         |     3 -
 .../frontend/public/images/icons/clock.icon.svg    |     1 -
 .../frontend/public/images/icons/cluster.icon.svg  |    10 -
 .../frontend/public/images/icons/collapse.icon.svg |     3 -
 .../frontend/public/images/icons/copy.icon.svg     |     3 -
 .../frontend/public/images/icons/cross.icon.svg    |     1 -
 .../frontend/public/images/icons/csv.icon.svg      |     1 -
 .../frontend/public/images/icons/download.icon.svg |     2 -
 .../public/images/icons/downloadAgent.icon.svg     |    16 -
 .../public/images/icons/exclamation.icon.svg       |     3 -
 .../frontend/public/images/icons/exit.icon.svg     |     3 -
 .../frontend/public/images/icons/expand.icon.svg   |     3 -
 .../public/images/icons/eyeClosed.icon.svg         |     6 -
 .../public/images/icons/eyeOpened.icon.svg         |     7 -
 .../frontend/public/images/icons/filter.icon.svg   |     1 -
 .../frontend/public/images/icons/gear.icon.svg     |     1 -
 .../frontend/public/images/icons/home.icon.svg     |     3 -
 .../frontend/public/images/icons/index.js          |    48 -
 .../frontend/public/images/icons/info.icon.svg     |     3 -
 .../public/images/icons/lockClosed.icon.svg        |     3 -
 .../public/images/icons/lockOpened.icon.svg        |     3 -
 .../frontend/public/images/icons/manual.icon.svg   |     1 -
 .../frontend/public/images/icons/menu.icon.svg     |     7 -
 .../frontend/public/images/icons/plus.icon.svg     |     2 -
 .../frontend/public/images/icons/refresh.icon.svg  |     1 -
 .../frontend/public/images/icons/search.icon.svg   |     1 -
 .../frontend/public/images/icons/sort.icon.svg     |     1 -
 .../frontend/public/images/icons/sql.icon.svg      |     3 -
 .../public/images/icons/structure.icon.svg         |     3 -
 .../web-console/frontend/public/images/igfs.png    |   Bin 14683 -> 0 bytes
 .../frontend/public/images/ignite-logo.svg         |    17 -
 .../frontend/public/images/ignite-puzzle.png       |   Bin 71974 -> 0 bytes
 .../frontend/public/images/multicluster.png        |   Bin 31178 -> 0 bytes
 .../public/images/page-landing-ui-sample.png       |   Bin 20468 -> 0 bytes
 .../frontend/public/images/pb-ignite.png           |   Bin 3493 -> 0 bytes
 .../web-console/frontend/public/images/preview.png |   Bin 29829 -> 0 bytes
 .../frontend/public/images/query-table.png         |   Bin 19943 -> 0 bytes
 .../public/stylesheets/_bootstrap-custom.scss      |    64 -
 .../public/stylesheets/_bootstrap-variables.scss   |   891 --
 .../public/stylesheets/_font-awesome-custom.scss   |   104 -
 .../frontend/public/stylesheets/blocks/error.scss  |    31 -
 .../frontend/public/stylesheets/form-field.scss    |   145 -
 .../frontend/public/stylesheets/style.scss         |  2171 ---
 .../frontend/public/stylesheets/variables.scss     |    39 -
 .../frontend/test/check-doc-links/Dockerfile       |    31 -
 .../test/check-doc-links/check-doc-links.js        |   151 -
 .../test/check-doc-links/docker-compose.yml        |    25 -
 modules/web-console/frontend/test/ci/.dockerignore |     4 -
 modules/web-console/frontend/test/ci/Dockerfile    |    34 -
 .../frontend/test/ci/docker-compose.yml            |    25 -
 modules/web-console/frontend/test/karma.conf.js    |   112 -
 .../frontend/test/unit/SqlTypes.test.js            |    52 -
 .../frontend/test/unit/UserAuth.test.js            |    37 -
 .../frontend/test/unit/defaultName.filter.test.js  |    40 -
 modules/web-console/frontend/tsconfig.json         |    15 -
 modules/web-console/frontend/views/base.pug        |    23 -
 modules/web-console/frontend/views/index.pug       |    45 -
 modules/web-console/frontend/views/public.pug      |    20 -
 .../frontend/views/sql/cache-metadata.tpl.pug      |    41 -
 .../frontend/views/sql/chart-settings.tpl.pug      |    40 -
 .../frontend/views/sql/paragraph-rate.tpl.pug      |    46 -
 .../views/templates/agent-download.tpl.pug         |    69 -
 .../frontend/views/templates/alert.tpl.pug         |    21 -
 .../frontend/views/templates/batch-confirm.tpl.pug |    47 -
 .../frontend/views/templates/confirm.tpl.pug       |    34 -
 .../frontend/views/templates/demo-info.tpl.pug     |    53 -
 .../frontend/views/templates/dropdown.tpl.pug      |    24 -
 .../views/templates/getting-started.tpl.pug        |    39 -
 .../frontend/views/templates/message.tpl.pug       |    32 -
 .../views/templates/validation-error.tpl.pug       |    25 -
 .../web-console/frontend/webpack/webpack.common.js |   163 -
 .../web-console/frontend/webpack/webpack.dev.js    |    97 -
 .../web-console/frontend/webpack/webpack.prod.js   |    61 -
 .../web-console/frontend/webpack/webpack.test.js   |    45 -
 modules/web-console/licenses/apache-2.0.txt        |   202 -
 modules/web-console/licenses/cc-by-3.0.txt         |   319 -
 modules/web-console/pom.xml                        |   431 -
 .../console/configuration/FieldProcessingInfo.java |    89 -
 .../ignite/console/configuration/MetadataInfo.java |    69 -
 .../WebConsoleConfigurationSelfTest.java           |  1118 --
 .../ignite/console/configuration/WrongFields.java  |    76 -
 .../console/testsuites/WebConsoleTestSuite.java    |    32 -
 modules/web-console/web-agent/.gitignore           |     2 -
 modules/web-console/web-agent/README.txt           |   123 -
 .../web-agent/assembly/release-web-agent.xml       |    66 -
 .../web-console/web-agent/bin/ignite-web-agent.bat |   143 -
 .../web-console/web-agent/bin/ignite-web-agent.sh  |    91 -
 .../web-console/web-agent/bin/include/functions.sh |    83 -
 modules/web-console/web-agent/demo/README.txt      |     4 -
 modules/web-console/web-agent/demo/db-init.sql     |   102 -
 .../web-console/web-agent/jdbc-drivers/README.txt  |    10 -
 modules/web-console/web-agent/logs/README.txt      |     5 -
 modules/web-console/web-agent/pom.xml              |   213 -
 .../ignite/console/agent/AgentConfiguration.java   |   619 -
 .../apache/ignite/console/agent/AgentLauncher.java |   518 -
 .../apache/ignite/console/agent/AgentUtils.java    |   333 -
 .../ignite/console/agent/ProxyAuthException.java   |    42 -
 .../ignite/console/agent/ProxyAuthenticator.java   |    82 -
 .../apache/ignite/console/agent/db/DbColumn.java   |    95 -
 .../ignite/console/agent/db/DbMetadataReader.java  |   142 -
 .../apache/ignite/console/agent/db/DbSchema.java   |    60 -
 .../apache/ignite/console/agent/db/DbTable.java    |    87 -
 .../agent/db/dialect/DB2MetadataDialect.java       |    33 -
 .../agent/db/dialect/DatabaseMetadataDialect.java  |   127 -
 .../agent/db/dialect/JdbcMetadataDialect.java      |   246 -
 .../agent/db/dialect/MySQLMetadataDialect.java     |    88 -
 .../agent/db/dialect/OracleMetadataDialect.java    |   425 -
 .../console/agent/handlers/AbstractListener.java   |   136 -
 .../console/agent/handlers/ClusterListener.java    |   525 -
 .../console/agent/handlers/DatabaseListener.java   |   354 -
 .../console/agent/handlers/RestListener.java       |   100 -
 .../ignite/console/agent/rest/RestExecutor.java    |   409 -
 .../ignite/console/agent/rest/RestResult.java      |   114 -
 .../ignite/console/demo/AgentClusterDemo.java      |   318 -
 .../apache/ignite/console/demo/AgentDemoUtils.java |    79 -
 .../ignite/console/demo/AgentMetadataDemo.java     |    99 -
 .../org/apache/ignite/console/demo/model/Car.java  |   152 -
 .../apache/ignite/console/demo/model/Country.java  |   152 -
 .../ignite/console/demo/model/Department.java      |   152 -
 .../apache/ignite/console/demo/model/Employee.java |   356 -
 .../apache/ignite/console/demo/model/Parking.java  |   152 -
 .../demo/service/DemoCachesLoadService.java        |   498 -
 .../demo/service/DemoComputeLoadService.java       |    78 -
 .../demo/service/DemoRandomCacheLoadService.java   |   121 -
 .../demo/service/DemoServiceClusterSingleton.java  |    41 -
 .../demo/service/DemoServiceKeyAffinity.java       |    41 -
 .../demo/service/DemoServiceMultipleInstances.java |    41 -
 .../demo/service/DemoServiceNodeSingleton.java     |    41 -
 .../console/demo/task/DemoCancellableTask.java     |    93 -
 .../ignite/console/demo/task/DemoComputeTask.java  |   105 -
 .../web-agent/src/main/resources/log4j.properties  |    52 -
 .../console/agent/rest/RestExecutorSelfTest.java   |   328 -
 .../ignite/testsuites/IgniteWebAgentTestSuite.java |    33 -
 .../web-agent/src/test/resources/ca.jks            |   Bin 1394 -> 0 bytes
 .../web-agent/src/test/resources/client.jks        |   Bin 2030 -> 0 bytes
 .../web-agent/src/test/resources/generate.bat      |   122 -
 .../web-agent/src/test/resources/generate.sh       |   111 -
 .../src/test/resources/jetty-with-ciphers-0.xml    |    94 -
 .../src/test/resources/jetty-with-ciphers-1.xml    |    94 -
 .../src/test/resources/jetty-with-ciphers-2.xml    |    94 -
 .../src/test/resources/jetty-with-ssl.xml          |    89 -
 .../web-agent/src/test/resources/server.jks        |   Bin 1419 -> 0 bytes
 parent/pom.xml                                     |    16 -
 pom.xml                                            |    10 -
 1108 files changed, 1315 insertions(+), 119157 deletions(-)
 delete mode 100644 docker/web-agent/Dockerfile
 delete mode 100644 docker/web-agent/README.txt
 delete mode 100644 docker/web-console/standalone/Dockerfile
 delete mode 100644 docker/web-console/standalone/README.txt
 delete mode 100644 docker/web-console/standalone/docker-entrypoint.sh
 delete mode 100644 docker/web-console/standalone/nginx/nginx.conf
 delete mode 100644 docker/web-console/standalone/nginx/web-console.conf
 copy modules/core/src/main/java/org/apache/ignite/{internal/processors/query/QueryRunningFuture.java => spi/communication/tcp/internal/ConnectionRequestFuture.java} (71%)
 copy modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/{HandshakeException.java => ConnectionRequestor.java} (70%)
 create mode 100644 modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/NodeUnreachableException.java
 copy modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/{HandshakeException.java => TcpConnectionIndexAwareMessage.java} (71%)
 copy modules/core/src/main/java/org/apache/ignite/{internal/processors/metastorage/persistence/DistributedMetaStorageUpdateMessage.java => spi/communication/tcp/internal/TcpConnectionRequestDiscoveryMessage.java} (65%)
 copy modules/core/src/main/java/org/apache/ignite/{internal/processors/query/h2/twostep/messages/GridQueryCancelRequest.java => spi/communication/tcp/internal/TcpInverseConnectionResponseMessage.java} (71%)
 create mode 100644 modules/core/src/test/java/org/apache/ignite/internal/util/DistributedProcessCoordinatorLeftTest.java
 create mode 100644 modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationInverseConnectionEstablishingTest.java
 delete mode 100644 modules/web-console/.dockerignore
 delete mode 100644 modules/web-console/.gitignore
 delete mode 100644 modules/web-console/DEVNOTES.txt
 delete mode 100644 modules/web-console/README.txt
 delete mode 100644 modules/web-console/assembly/README.txt
 delete mode 100644 modules/web-console/assembly/direct-install.xml
 delete mode 100644 modules/web-console/backend/.eslintrc
 delete mode 100644 modules/web-console/backend/.gitignore
 delete mode 100644 modules/web-console/backend/agent_dists/README.txt
 delete mode 100644 modules/web-console/backend/app/agentSocket.js
 delete mode 100644 modules/web-console/backend/app/agentsHandler.js
 delete mode 100644 modules/web-console/backend/app/apiServer.js
 delete mode 100644 modules/web-console/backend/app/browsersHandler.js
 delete mode 100644 modules/web-console/backend/app/configure.js
 delete mode 100644 modules/web-console/backend/app/mongo.js
 delete mode 100644 modules/web-console/backend/app/nconf.js
 delete mode 100644 modules/web-console/backend/app/routes.js
 delete mode 100644 modules/web-console/backend/app/schemas.js
 delete mode 100644 modules/web-console/backend/app/settings.js
 delete mode 100644 modules/web-console/backend/config/settings.json.sample
 delete mode 100644 modules/web-console/backend/errors/AppErrorException.js
 delete mode 100644 modules/web-console/backend/errors/AuthFailedException.js
 delete mode 100644 modules/web-console/backend/errors/DuplicateKeyException.js
 delete mode 100644 modules/web-console/backend/errors/IllegalAccessError.js
 delete mode 100644 modules/web-console/backend/errors/IllegalArgumentException.js
 delete mode 100644 modules/web-console/backend/errors/MissingConfirmRegistrationException.js
 delete mode 100644 modules/web-console/backend/errors/MissingResourceException.js
 delete mode 100644 modules/web-console/backend/errors/ServerErrorException.js
 delete mode 100644 modules/web-console/backend/errors/index.js
 delete mode 100755 modules/web-console/backend/index.js
 delete mode 100644 modules/web-console/backend/injector.js
 delete mode 100644 modules/web-console/backend/launch-tools.js
 delete mode 100644 modules/web-console/backend/middlewares/api.js
 delete mode 100644 modules/web-console/backend/middlewares/demo.js
 delete mode 100644 modules/web-console/backend/middlewares/host.js
 delete mode 100644 modules/web-console/backend/middlewares/user.js
 delete mode 100644 modules/web-console/backend/migrations/1502249492000-invalidate_rename.js
 delete mode 100644 modules/web-console/backend/migrations/1502432624000-cache-index.js
 delete mode 100644 modules/web-console/backend/migrations/1504672035000-igfs-index.js
 delete mode 100644 modules/web-console/backend/migrations/1505114649000-models-index.js
 delete mode 100644 modules/web-console/backend/migrations/1508395969410-init-registered-date.js
 delete mode 100644 modules/web-console/backend/migrations/1516948939797-migrate-configs.js
 delete mode 100644 modules/web-console/backend/migrations/1547440382485-account-make-email-unique.js
 delete mode 100644 modules/web-console/backend/migrations/README.txt
 delete mode 100644 modules/web-console/backend/migrations/migration-utils.js
 delete mode 100644 modules/web-console/backend/package-lock.json
 delete mode 100644 modules/web-console/backend/package.json
 delete mode 100644 modules/web-console/backend/routes/activities.js
 delete mode 100644 modules/web-console/backend/routes/admin.js
 delete mode 100644 modules/web-console/backend/routes/caches.js
 delete mode 100644 modules/web-console/backend/routes/clusters.js
 delete mode 100644 modules/web-console/backend/routes/configuration.js
 delete mode 100644 modules/web-console/backend/routes/demo.js
 delete mode 100644 modules/web-console/backend/routes/demo/caches.json
 delete mode 100644 modules/web-console/backend/routes/demo/clusters.json
 delete mode 100644 modules/web-console/backend/routes/demo/domains.json
 delete mode 100644 modules/web-console/backend/routes/demo/igfss.json
 delete mode 100644 modules/web-console/backend/routes/domains.js
 delete mode 100644 modules/web-console/backend/routes/downloads.js
 delete mode 100644 modules/web-console/backend/routes/igfss.js
 delete mode 100644 modules/web-console/backend/routes/notebooks.js
 delete mode 100644 modules/web-console/backend/routes/profile.js
 delete mode 100644 modules/web-console/backend/routes/public.js
 delete mode 100644 modules/web-console/backend/services/Utils.js
 delete mode 100644 modules/web-console/backend/services/activities.js
 delete mode 100644 modules/web-console/backend/services/auth.js
 delete mode 100644 modules/web-console/backend/services/caches.js
 delete mode 100644 modules/web-console/backend/services/clusters.js
 delete mode 100644 modules/web-console/backend/services/configurations.js
 delete mode 100644 modules/web-console/backend/services/domains.js
 delete mode 100644 modules/web-console/backend/services/downloads.js
 delete mode 100644 modules/web-console/backend/services/igfss.js
 delete mode 100644 modules/web-console/backend/services/mails.js
 delete mode 100644 modules/web-console/backend/services/notebooks.js
 delete mode 100644 modules/web-console/backend/services/notifications.js
 delete mode 100644 modules/web-console/backend/services/sessions.js
 delete mode 100644 modules/web-console/backend/services/spaces.js
 delete mode 100644 modules/web-console/backend/services/users.js
 delete mode 100644 modules/web-console/backend/templates/base.html
 delete mode 100644 modules/web-console/backend/test/app/db.js
 delete mode 100644 modules/web-console/backend/test/app/httpAgent.js
 delete mode 100644 modules/web-console/backend/test/app/mail.js
 delete mode 100644 modules/web-console/backend/test/app/settings.js
 delete mode 100644 modules/web-console/backend/test/config/settings.json
 delete mode 100644 modules/web-console/backend/test/data/accounts.json
 delete mode 100644 modules/web-console/backend/test/data/caches.json
 delete mode 100644 modules/web-console/backend/test/data/clusters.json
 delete mode 100644 modules/web-console/backend/test/data/domains.json
 delete mode 100644 modules/web-console/backend/test/data/igfss.json
 delete mode 100644 modules/web-console/backend/test/data/spaces.json
 delete mode 100644 modules/web-console/backend/test/index.js
 delete mode 100644 modules/web-console/backend/test/injector.js
 delete mode 100644 modules/web-console/backend/test/routes/clusters.js
 delete mode 100644 modules/web-console/backend/test/routes/public.js
 delete mode 100644 modules/web-console/backend/test/unit/ActivitiesService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/AuthService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/CacheService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/ClusterService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/DomainService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/IgfsService.test.js
 delete mode 100644 modules/web-console/backend/test/unit/Utils.test.js
 delete mode 100644 modules/web-console/docker/compose/backend/Dockerfile
 delete mode 100644 modules/web-console/docker/compose/docker-compose.yml
 delete mode 100644 modules/web-console/docker/compose/frontend/Dockerfile
 delete mode 100644 modules/web-console/docker/compose/frontend/nginx/nginx.conf
 delete mode 100644 modules/web-console/docker/compose/frontend/nginx/web-console.conf
 delete mode 100644 modules/web-console/e2e/docker-compose.yml
 delete mode 100644 modules/web-console/e2e/testcafe/.eslintrc
 delete mode 100644 modules/web-console/e2e/testcafe/Dockerfile
 delete mode 100644 modules/web-console/e2e/testcafe/components/FormField.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/ListEditable.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/PanelCollapsible.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/Table.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/confirmation.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/modalInput.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/no-data.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/notifications.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/pageAdvancedConfiguration.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/pageConfiguration.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/topNavigation.js
 delete mode 100644 modules/web-console/e2e/testcafe/components/userMenu.js
 delete mode 100644 modules/web-console/e2e/testcafe/environment/envtools.js
 delete mode 100644 modules/web-console/e2e/testcafe/environment/launch-env.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/admin-panel.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/auth/forgot-password.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/auth/logout.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/auth/signup-validation-local.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/auth/signup.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/configuration/basic.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/configuration/clusterFormChangeDetection.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/configuration/newClusterWithCache.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/configuration/overview.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/menu-smoke.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/queries/notebooks-list.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/user-profile/credentials.js
 delete mode 100644 modules/web-console/e2e/testcafe/fixtures/user-profile/profile.js
 delete mode 100644 modules/web-console/e2e/testcafe/helpers.js
 delete mode 100644 modules/web-console/e2e/testcafe/index.js
 delete mode 100644 modules/web-console/e2e/testcafe/package.json
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/PageConfigurationAdvancedCluster.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/PageConfigurationBasic.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/PageConfigurationOverview.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/PageQueries.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageConfigurationAdvancedIGFS.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageConfigurationAdvancedModels.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageForgotPassword.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageProfile.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageSignin.js
 delete mode 100644 modules/web-console/e2e/testcafe/page-models/pageSignup.js
 delete mode 100644 modules/web-console/e2e/testcafe/roles.js
 delete mode 100644 modules/web-console/e2e/testcafe/testcafe-runner.js
 delete mode 100644 modules/web-console/e2e/testenv/Dockerfile
 delete mode 100644 modules/web-console/e2e/testenv/nginx/nginx.conf
 delete mode 100644 modules/web-console/e2e/testenv/nginx/web-console.conf
 delete mode 100644 modules/web-console/frontend/.babelrc
 delete mode 100644 modules/web-console/frontend/.eslintrc
 delete mode 100644 modules/web-console/frontend/.gitignore
 delete mode 100644 modules/web-console/frontend/app/app.config.js
 delete mode 100644 modules/web-console/frontend/app/app.d.ts
 delete mode 100644 modules/web-console/frontend/app/app.js
 delete mode 100644 modules/web-console/frontend/app/browserUpdate/index.js
 delete mode 100644 modules/web-console/frontend/app/browserUpdate/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.controller.js
 delete mode 100644 modules/web-console/frontend/app/components/activities-user-dialog/activities-user-dialog.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/activities-user-dialog/index.js
 delete mode 100644 modules/web-console/frontend/app/components/breadcrumbs/component.js
 delete mode 100644 modules/web-console/frontend/app/components/breadcrumbs/index.js
 delete mode 100644 modules/web-console/frontend/app/components/breadcrumbs/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/breadcrumbs/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/directive.js
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/index.js
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/index.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/strip.filter.js
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/bs-select-menu/transcludeToBody.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-security-icon/component.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-security-icon/index.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-security-icon/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/cluster-selector/component.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-selector/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-selector/index.js
 delete mode 100644 modules/web-console/frontend/app/components/cluster-selector/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/cluster-selector/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-badge/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-badge/index.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-badge/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-badge/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/cell-logout/index.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/cell-logout/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/cell-status/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/list/column-defs.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/list/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/list/index.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/list/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/components/list/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/index.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/service.js
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/connected-clusters-dialog/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/dialog-admin-create-user/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/dialog-admin-create-user/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/dialog-admin-create-user/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/dialog-admin-create-user/state.ts
 delete mode 100644 modules/web-console/frontend/app/components/dialog-admin-create-user/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/form-field/components/form-field-size/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-field/components/form-field-size/index.js
 delete mode 100644 modules/web-console/frontend/app/components/form-field/components/form-field-size/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/form-field/components/form-field-size/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/form-field/copyInputValueButton.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/form-field/igniteFormField.directive.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-field/index.js
 delete mode 100644 modules/web-console/frontend/app/components/form-field/showValidationError.directive.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-field/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/form-signup/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-signup/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-signup/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/form-signup/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/form-signup/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/global-progress-line/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/global-progress-line/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/global-progress-line/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/global-progress-line/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/global-progress-line/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/component.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/controller.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/index.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/grid-column-selector/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/grid-export/component.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-export/index.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-export/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/grid-export/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/grid-item-selected/component.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-item-selected/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-item-selected/index.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-item-selected/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/grid-item-selected/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/grid-no-data/component.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-no-data/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-no-data/index.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-no-data/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/grid-showing-rows/component.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-showing-rows/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-showing-rows/index.js
 delete mode 100644 modules/web-console/frontend/app/components/grid-showing-rows/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/grid-showing-rows/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart-series-selector/component.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart-series-selector/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart-series-selector/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart-series-selector/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/components/chart-no-data/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/components/chart-no-data/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/components/chart-no-data/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/components/chart-no-data/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/ignite-chart/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/ignite-icon/directive.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-icon/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-icon/service.js
 delete mode 100644 modules/web-console/frontend/app/components/ignite-icon/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/input-dialog/index.js
 delete mode 100644 modules/web-console/frontend/app/components/input-dialog/input-dialog.controller.js
 delete mode 100644 modules/web-console/frontend/app/components/input-dialog/input-dialog.service.ts
 delete mode 100644 modules/web-console/frontend/app/components/input-dialog/input-dialog.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/component.js
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/component.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/has-items-template.pug
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/no-items-template.pug
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-add-item-button/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-cols/cols.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-cols/cols.style.scss
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-cols/cols.template.pug
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-cols/index.js
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-cols/row.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-one-way/directive.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-one-way/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-save-on-changes/directives.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-save-on-changes/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-transclude/directive.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/components/list-editable-transclude/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/list-editable/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/categories.js
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/column-defs.js
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/index.js
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/list-of-registered-users/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/no-data/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/no-data/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/no-data/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/no-data/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/no-data/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-admin/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-admin/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-admin/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-admin/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/component.js
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/run.js
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-forgot-password/types.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-landing/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-landing/public.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-landing/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-landing/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-password-changed/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-password-changed/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-password-changed/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-password-changed/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-password-reset/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/page-password-reset/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-password-reset/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-password-reset/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-profile/component.js
 delete mode 100644 modules/web-console/frontend/app/components/page-profile/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/page-profile/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-profile/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-profile/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/component.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/ignite-information/information.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/ignite-information/information.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/ignite-information/information.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/query-actions-button/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/query-actions-button/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/components/query-actions-button/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/notebook.data.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/notebook.service.js
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-queries/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/run.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-signin/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/state.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-signup-confirmation/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/component.js
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/index.js
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/run.js
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/page-signup/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/component.js
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/index.js
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/index.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/panel-collapsible/transcludeDirective.js
 delete mode 100644 modules/web-console/frontend/app/components/password-visibility/index.js
 delete mode 100644 modules/web-console/frontend/app/components/password-visibility/index.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/password-visibility/root.directive.js
 delete mode 100644 modules/web-console/frontend/app/components/password-visibility/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/password-visibility/toggle-button.component.js
 delete mode 100644 modules/web-console/frontend/app/components/permanent-notifications/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/permanent-notifications/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/permanent-notifications/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/permanent-notifications/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/permanent-notifications/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/component.js
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/index.js
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/index.spec.js
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/progress-line/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/protect-from-bs-select-render/directive.js
 delete mode 100644 modules/web-console/frontend/app/components/protect-from-bs-select-render/index.js
 delete mode 100644 modules/web-console/frontend/app/components/status-output/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/status-output/componentFactory.ts
 delete mode 100644 modules/web-console/frontend/app/components/status-output/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/status-output/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/status-output/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/status-output/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/timed-redirection/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/timed-redirection/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/timed-redirection/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/timed-redirection/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/timed-redirection/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-column-resizer/directive.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-column-resizer/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-filters/directive.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-filters/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-filters/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-filters/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-hovering/cell.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-hovering/hovering.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-hovering/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-hovering/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid-hovering/viewport.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/component.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/decorator.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/index.js
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/ui-grid/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/user-notifications/controller.js
 delete mode 100644 modules/web-console/frontend/app/components/user-notifications/index.js
 delete mode 100644 modules/web-console/frontend/app/components/user-notifications/service.js
 delete mode 100644 modules/web-console/frontend/app/components/user-notifications/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/user-notifications/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/components/version-picker/component.js
 delete mode 100644 modules/web-console/frontend/app/components/version-picker/index.js
 delete mode 100644 modules/web-console/frontend/app/components/version-picker/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/version-picker/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-footer/component.js
 delete mode 100644 modules/web-console/frontend/app/components/web-console-footer/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-footer/index.js
 delete mode 100644 modules/web-console/frontend/app/components/web-console-footer/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-footer/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/user-menu/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/user-menu/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/user-menu/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/user-menu/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/components/web-console-header-content/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/index.js
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-header/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/index.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-navigation/template.pug
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/component.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/controller.ts
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/style.scss
 delete mode 100644 modules/web-console/frontend/app/components/web-console-sidebar/web-console-sidebar-overflow/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-download-project/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-download-project/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-download-project/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-import-models/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-import-models/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-import-models/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-import-models/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-preview-project/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-preview-project/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/button-preview-project/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/fakeUICanExit.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/fakeUICanExit.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/formUICanExitGuard.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/component.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/selected-items-amount-indicator/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/selected-items-amount-indicator/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/selected-items-amount-indicator/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/service.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/step-indicator/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/step-indicator/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/step-indicator/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/tables-action-cell/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/tables-action-cell/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/tables-action-cell/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-import-models/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/service.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/modal-preview-project/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/affinity.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/concurrency.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/general.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/key-cfg.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/misc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/near-cache-client.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/near-cache-server.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/node-filter.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/query.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/rebalance.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/statistics.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cache-edit-form/templates/store.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/controller.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/atomic.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/attributes.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/cache-key-cfg.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/fs.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/jdbc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/encryption.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/cloud.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/google.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/jdbc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/kubernetes.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/multicast.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/s3.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/shared.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/vm.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/custom.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/exponential-backoff.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/forever.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/n-times.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/one-time.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/general/discovery/zookeeper/retrypolicy/until-elapsed.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/hadoop.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/load-balancing.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/logger.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/logger/custom.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/logger/log4j.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/logger/log4j2.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/marshaller.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/memory.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/metrics.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/misc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/mvcc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/component.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/index.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/template.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/templates/general.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/templates/query.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/model-edit-form/templates/store.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-caches/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-caches/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-caches/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-caches/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-cluster/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-cluster/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-cluster/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-cluster/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-igfs/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-igfs/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-igfs/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-igfs/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/hasIndex.template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/keyCell.template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/page-configure-advanced-models/valueCell.template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-advanced/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/reducer.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/reducer.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-basic/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/components/pco-grid-column-categories/directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure-overview/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/page-configure/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/component.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/controller.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/decorator.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/index.js
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-items-table/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-split-button/component.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-split-button/controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-split-button/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-split-button/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-ui-grid-filters/directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-ui-grid-filters/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-ui-grid-filters/style.scss
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pc-ui-grid-filters/template.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pcIsInCollection.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/pcValidation.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/preview-panel/directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/preview-panel/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-java/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-java/ui-ace-java.controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-java/ui-ace-java.directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-java/ui-ace-java.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-spring/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-spring/ui-ace-spring.controller.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-spring/ui-ace-spring.directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-spring/ui-ace-spring.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace-tabs.directive.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/components/ui-ace.controller.js
 delete mode 100644 modules/web-console/frontend/app/configuration/defaultNames.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/JavaTypesNonEnum.service.spec.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/JavaTypesNonEnum.service.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/configuration.module.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/AbstractTransformer.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/ArtifactVersionChecker.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Beans.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/ConfigurationGenerator.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Custom.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Docker.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Docker.service.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/JavaTransformer.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Maven.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/PlatformGenerator.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Properties.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/Readme.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/SharpTransformer.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/SpringTransformer.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/StringBuilder.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/Cache.platform.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/Cache.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.platform.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/Event-groups.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/generator/generator/defaults/IGFS.service.js
 delete mode 100644 modules/web-console/frontend/app/configuration/icons/configuration.icon.svg
 delete mode 100644 modules/web-console/frontend/app/configuration/index.lazy.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/index.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/mixins.pug
 delete mode 100644 modules/web-console/frontend/app/configuration/services/Caches.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/Clusters.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/services/Clusters.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigChangesGuard.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigChangesGuard.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigSelectionManager.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigurationDownload.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigurationDownload.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigurationResource.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigurationResource.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/ConfigureState.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/IGFSs.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/Models.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/PageConfigure.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/SummaryZipper.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/services/summary.worker.js
 delete mode 100644 modules/web-console/frontend/app/configuration/states.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/store/actionCreators.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/actionTypes.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/effects.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/effects.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/reducer.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/reducer.spec.js
 delete mode 100644 modules/web-console/frontend/app/configuration/store/selectors.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/transitionHooks/errorState.ts
 delete mode 100644 modules/web-console/frontend/app/configuration/types/index.ts
 delete mode 100644 modules/web-console/frontend/app/core/activities/Activities.data.ts
 delete mode 100644 modules/web-console/frontend/app/core/admin/Admin.data.js
 delete mode 100644 modules/web-console/frontend/app/core/index.js
 delete mode 100644 modules/web-console/frontend/app/core/utils/maskNull.js
 delete mode 100644 modules/web-console/frontend/app/data/colors.json
 delete mode 100644 modules/web-console/frontend/app/data/countries.json
 delete mode 100644 modules/web-console/frontend/app/data/demo-info.json
 delete mode 100644 modules/web-console/frontend/app/data/dialects.json
 delete mode 100644 modules/web-console/frontend/app/data/event-groups.json
 delete mode 100644 modules/web-console/frontend/app/data/getting-started.json
 delete mode 100644 modules/web-console/frontend/app/data/i18n.js
 delete mode 100644 modules/web-console/frontend/app/data/java-classes.json
 delete mode 100644 modules/web-console/frontend/app/data/java-keywords.json
 delete mode 100644 modules/web-console/frontend/app/data/java-primitives.json
 delete mode 100644 modules/web-console/frontend/app/data/jdbc-types.json
 delete mode 100644 modules/web-console/frontend/app/data/pom-dependencies.json
 delete mode 100644 modules/web-console/frontend/app/data/sql-keywords.json
 delete mode 100644 modules/web-console/frontend/app/directives/auto-focus.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/btn-ignite-link.js
 delete mode 100644 modules/web-console/frontend/app/directives/copy-to-clipboard.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/hide-on-state-change/hide-on-state-change.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/match.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/match.directive.spec.js
 delete mode 100644 modules/web-console/frontend/app/directives/on-click-focus.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/on-enter-focus-move.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/on-enter.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/on-escape.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/on-focus-out.directive.js
 delete mode 100644 modules/web-console/frontend/app/directives/retain-selection.directive.js
 delete mode 100644 modules/web-console/frontend/app/errors/CancellationError.js
 delete mode 100644 modules/web-console/frontend/app/filters/byName.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/bytes.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/bytes.filter.spec.js
 delete mode 100644 modules/web-console/frontend/app/filters/default-name.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/domainsValidation.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/duration.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/hasPojo.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/id8.filter.js
 delete mode 100644 modules/web-console/frontend/app/filters/uiGridSubcategories.filter.js
 delete mode 100644 modules/web-console/frontend/app/helpers/jade/mixins.pug
 delete mode 100644 modules/web-console/frontend/app/modules/ace.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/AgentManager.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/AgentModal.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/agent.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/components/cluster-login/component.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/components/cluster-login/index.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/components/cluster-login/service.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/components/cluster-login/template.pug
 delete mode 100644 modules/web-console/frontend/app/modules/agent/decompress.worker.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/types/Cluster.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/types/ClusterSecrets.js
 delete mode 100644 modules/web-console/frontend/app/modules/agent/types/ClusterSecretsManager.js
 delete mode 100644 modules/web-console/frontend/app/modules/branding/branding.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/branding/branding.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/branding/features.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/branding/terms.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/cluster/Cache.js
 delete mode 100644 modules/web-console/frontend/app/modules/cluster/CacheMetrics.js
 delete mode 100644 modules/web-console/frontend/app/modules/cluster/NodeMetrics.js
 delete mode 100644 modules/web-console/frontend/app/modules/demo/Demo.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog-content.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog-title.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog.controller.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog.factory.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/dialog/dialog.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/modules/form/field/bs-select-placeholder.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/field/input/autofocus.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/form.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/services/FormGUID.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/ipaddress.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/java-built-in-class.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/java-identifier.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/java-keywords.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/java-package-name.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/java-package-specified.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/property-unique.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/property-value-specified.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/unique.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/form/validator/uuid.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/getting-started/GettingStarted.provider.js
 delete mode 100644 modules/web-console/frontend/app/modules/loading/loading.directive.js
 delete mode 100644 modules/web-console/frontend/app/modules/loading/loading.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/loading/loading.pug
 delete mode 100644 modules/web-console/frontend/app/modules/loading/loading.scss
 delete mode 100644 modules/web-console/frontend/app/modules/loading/loading.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/navbar/Userbar.provider.js
 delete mode 100644 modules/web-console/frontend/app/modules/navbar/navbar.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/nodes/Nodes.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/nodes/nodes-dialog.controller.js
 delete mode 100644 modules/web-console/frontend/app/modules/nodes/nodes-dialog.scss
 delete mode 100644 modules/web-console/frontend/app/modules/nodes/nodes-dialog.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/modules/nodes/nodes.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/socket.module.js
 delete mode 100644 modules/web-console/frontend/app/modules/states/admin.state.js
 delete mode 100644 modules/web-console/frontend/app/modules/states/errors.state.js
 delete mode 100644 modules/web-console/frontend/app/modules/states/logout.state.js
 delete mode 100644 modules/web-console/frontend/app/modules/states/settings.state.js
 delete mode 100644 modules/web-console/frontend/app/modules/user/Auth.service.ts
 delete mode 100644 modules/web-console/frontend/app/modules/user/User.service.js
 delete mode 100644 modules/web-console/frontend/app/modules/user/emailConfirmationInterceptor.ts
 delete mode 100644 modules/web-console/frontend/app/modules/user/permissions.js
 delete mode 100644 modules/web-console/frontend/app/modules/user/user.module.js
 delete mode 100644 modules/web-console/frontend/app/primitives/badge/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/btn-group/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/btn/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/checkbox/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/datepicker/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/datepicker/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/dropdown/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/dropdown/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/checkbox.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/dropdown.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/email.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/error.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/input.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/label.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/number.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/password.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/phone.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/radio.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/text.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/tooltip.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/form-field/typeahead.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/grid/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/index.js
 delete mode 100644 modules/web-console/frontend/app/primitives/modal/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/page/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/panel/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/spinner-circle/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/switcher/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/switcher/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/table/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/tabs/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/timepicker/index.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/timepicker/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/tooltip/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/typography/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/ui-grid-header/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/ui-grid-header/index.tpl.pug
 delete mode 100644 modules/web-console/frontend/app/primitives/ui-grid-settings/index.scss
 delete mode 100644 modules/web-console/frontend/app/primitives/ui-grid/index.scss
 delete mode 100644 modules/web-console/frontend/app/services/AngularStrapSelect.decorator.js
 delete mode 100644 modules/web-console/frontend/app/services/AngularStrapTooltip.decorator.js
 delete mode 100644 modules/web-console/frontend/app/services/CSV.js
 delete mode 100644 modules/web-console/frontend/app/services/ChartColors.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Confirm.service.js
 delete mode 100644 modules/web-console/frontend/app/services/ConfirmBatch.service.js
 delete mode 100644 modules/web-console/frontend/app/services/CopyToClipboard.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Countries.service.js
 delete mode 100644 modules/web-console/frontend/app/services/DefaultState.js
 delete mode 100644 modules/web-console/frontend/app/services/ErrorParser.service.js
 delete mode 100644 modules/web-console/frontend/app/services/ErrorPopover.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Focus.service.js
 delete mode 100644 modules/web-console/frontend/app/services/FormUtils.service.js
 delete mode 100644 modules/web-console/frontend/app/services/InetAddress.service.js
 delete mode 100644 modules/web-console/frontend/app/services/JavaTypes.service.js
 delete mode 100644 modules/web-console/frontend/app/services/JavaTypes.spec.js
 delete mode 100644 modules/web-console/frontend/app/services/LegacyTable.service.js
 delete mode 100644 modules/web-console/frontend/app/services/LegacyUtils.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Messages.service.js
 delete mode 100644 modules/web-console/frontend/app/services/ModelNormalizer.service.js
 delete mode 100644 modules/web-console/frontend/app/services/SqlTypes.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Version.service.js
 delete mode 100644 modules/web-console/frontend/app/services/Version.spec.js
 delete mode 100644 modules/web-console/frontend/app/services/exceptionHandler.js
 delete mode 100644 modules/web-console/frontend/app/services/index.js
 delete mode 100644 modules/web-console/frontend/app/services/store.ts
 delete mode 100644 modules/web-console/frontend/app/store/actions/ui.ts
 delete mode 100644 modules/web-console/frontend/app/store/actions/user.ts
 delete mode 100644 modules/web-console/frontend/app/store/effects/ui.ts
 delete mode 100644 modules/web-console/frontend/app/store/index.ts
 delete mode 100644 modules/web-console/frontend/app/store/ofType.ts
 delete mode 100644 modules/web-console/frontend/app/store/reducers/ui.ts
 delete mode 100644 modules/web-console/frontend/app/store/reduxDebug.ts
 delete mode 100644 modules/web-console/frontend/app/store/reduxDevtoolsIntegration.js
 delete mode 100644 modules/web-console/frontend/app/store/selectors/ui.ts
 delete mode 100644 modules/web-console/frontend/app/style.scss
 delete mode 100644 modules/web-console/frontend/app/types/index.ts
 delete mode 100644 modules/web-console/frontend/app/utils/SimpleWorkerPool.js
 delete mode 100644 modules/web-console/frontend/app/utils/dialogState.ts
 delete mode 100644 modules/web-console/frontend/app/utils/id8.js
 delete mode 100644 modules/web-console/frontend/app/utils/lodashMixins.js
 delete mode 100644 modules/web-console/frontend/app/utils/uniqueName.js
 delete mode 100644 modules/web-console/frontend/app/vendor.js
 delete mode 100644 modules/web-console/frontend/index.js
 delete mode 100644 modules/web-console/frontend/package-lock.json
 delete mode 100644 modules/web-console/frontend/package.json
 delete mode 100644 modules/web-console/frontend/public/favicon.ico
 delete mode 100644 modules/web-console/frontend/public/images/cache.png
 delete mode 100644 modules/web-console/frontend/public/images/checkbox-active.svg
 delete mode 100644 modules/web-console/frontend/public/images/checkbox.svg
 delete mode 100644 modules/web-console/frontend/public/images/cluster-quick.png
 delete mode 100644 modules/web-console/frontend/public/images/cluster.png
 delete mode 100644 modules/web-console/frontend/public/images/collapse.svg
 delete mode 100644 modules/web-console/frontend/public/images/domains.png
 delete mode 100644 modules/web-console/frontend/public/images/expand.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/alert.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/attention.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/check.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/checkmark.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/clock.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/cluster.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/collapse.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/copy.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/cross.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/csv.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/download.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/downloadAgent.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/exclamation.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/exit.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/expand.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/eyeClosed.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/eyeOpened.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/filter.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/gear.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/home.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/index.js
 delete mode 100644 modules/web-console/frontend/public/images/icons/info.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/lockClosed.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/lockOpened.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/manual.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/menu.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/plus.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/refresh.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/search.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/sort.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/sql.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/icons/structure.icon.svg
 delete mode 100644 modules/web-console/frontend/public/images/igfs.png
 delete mode 100644 modules/web-console/frontend/public/images/ignite-logo.svg
 delete mode 100644 modules/web-console/frontend/public/images/ignite-puzzle.png
 delete mode 100644 modules/web-console/frontend/public/images/multicluster.png
 delete mode 100644 modules/web-console/frontend/public/images/page-landing-ui-sample.png
 delete mode 100644 modules/web-console/frontend/public/images/pb-ignite.png
 delete mode 100644 modules/web-console/frontend/public/images/preview.png
 delete mode 100644 modules/web-console/frontend/public/images/query-table.png
 delete mode 100644 modules/web-console/frontend/public/stylesheets/_bootstrap-custom.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/_bootstrap-variables.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/_font-awesome-custom.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/blocks/error.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/form-field.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/style.scss
 delete mode 100644 modules/web-console/frontend/public/stylesheets/variables.scss
 delete mode 100644 modules/web-console/frontend/test/check-doc-links/Dockerfile
 delete mode 100644 modules/web-console/frontend/test/check-doc-links/check-doc-links.js
 delete mode 100644 modules/web-console/frontend/test/check-doc-links/docker-compose.yml
 delete mode 100644 modules/web-console/frontend/test/ci/.dockerignore
 delete mode 100644 modules/web-console/frontend/test/ci/Dockerfile
 delete mode 100644 modules/web-console/frontend/test/ci/docker-compose.yml
 delete mode 100644 modules/web-console/frontend/test/karma.conf.js
 delete mode 100644 modules/web-console/frontend/test/unit/SqlTypes.test.js
 delete mode 100644 modules/web-console/frontend/test/unit/UserAuth.test.js
 delete mode 100644 modules/web-console/frontend/test/unit/defaultName.filter.test.js
 delete mode 100644 modules/web-console/frontend/tsconfig.json
 delete mode 100644 modules/web-console/frontend/views/base.pug
 delete mode 100644 modules/web-console/frontend/views/index.pug
 delete mode 100644 modules/web-console/frontend/views/public.pug
 delete mode 100644 modules/web-console/frontend/views/sql/cache-metadata.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/sql/chart-settings.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/sql/paragraph-rate.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/agent-download.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/alert.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/batch-confirm.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/confirm.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/demo-info.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/dropdown.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/getting-started.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/message.tpl.pug
 delete mode 100644 modules/web-console/frontend/views/templates/validation-error.tpl.pug
 delete mode 100644 modules/web-console/frontend/webpack/webpack.common.js
 delete mode 100644 modules/web-console/frontend/webpack/webpack.dev.js
 delete mode 100644 modules/web-console/frontend/webpack/webpack.prod.js
 delete mode 100644 modules/web-console/frontend/webpack/webpack.test.js
 delete mode 100644 modules/web-console/licenses/apache-2.0.txt
 delete mode 100644 modules/web-console/licenses/cc-by-3.0.txt
 delete mode 100644 modules/web-console/pom.xml
 delete mode 100644 modules/web-console/src/test/java/org/apache/ignite/console/configuration/FieldProcessingInfo.java
 delete mode 100644 modules/web-console/src/test/java/org/apache/ignite/console/configuration/MetadataInfo.java
 delete mode 100644 modules/web-console/src/test/java/org/apache/ignite/console/configuration/WebConsoleConfigurationSelfTest.java
 delete mode 100644 modules/web-console/src/test/java/org/apache/ignite/console/configuration/WrongFields.java
 delete mode 100644 modules/web-console/src/test/java/org/apache/ignite/console/testsuites/WebConsoleTestSuite.java
 delete mode 100644 modules/web-console/web-agent/.gitignore
 delete mode 100644 modules/web-console/web-agent/README.txt
 delete mode 100644 modules/web-console/web-agent/assembly/release-web-agent.xml
 delete mode 100644 modules/web-console/web-agent/bin/ignite-web-agent.bat
 delete mode 100755 modules/web-console/web-agent/bin/ignite-web-agent.sh
 delete mode 100644 modules/web-console/web-agent/bin/include/functions.sh
 delete mode 100644 modules/web-console/web-agent/demo/README.txt
 delete mode 100644 modules/web-console/web-agent/demo/db-init.sql
 delete mode 100644 modules/web-console/web-agent/jdbc-drivers/README.txt
 delete mode 100644 modules/web-console/web-agent/logs/README.txt
 delete mode 100644 modules/web-console/web-agent/pom.xml
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/AgentConfiguration.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/AgentLauncher.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/AgentUtils.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/ProxyAuthException.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/ProxyAuthenticator.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/DbColumn.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/DbMetadataReader.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/DbSchema.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/DbTable.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/DB2MetadataDialect.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/DatabaseMetadataDialect.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/JdbcMetadataDialect.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/MySQLMetadataDialect.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/db/dialect/OracleMetadataDialect.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/DatabaseListener.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/RestListener.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/AgentClusterDemo.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/AgentDemoUtils.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/AgentMetadataDemo.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/model/Car.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/model/Country.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/model/Department.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/model/Employee.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/model/Parking.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoComputeLoadService.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoRandomCacheLoadService.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoServiceClusterSingleton.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoServiceKeyAffinity.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoServiceMultipleInstances.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoServiceNodeSingleton.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/task/DemoCancellableTask.java
 delete mode 100644 modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/task/DemoComputeTask.java
 delete mode 100644 modules/web-console/web-agent/src/main/resources/log4j.properties
 delete mode 100644 modules/web-console/web-agent/src/test/java/org/apache/ignite/console/agent/rest/RestExecutorSelfTest.java
 delete mode 100644 modules/web-console/web-agent/src/test/java/org/apache/ignite/testsuites/IgniteWebAgentTestSuite.java
 delete mode 100644 modules/web-console/web-agent/src/test/resources/ca.jks
 delete mode 100644 modules/web-console/web-agent/src/test/resources/client.jks
 delete mode 100644 modules/web-console/web-agent/src/test/resources/generate.bat
 delete mode 100644 modules/web-console/web-agent/src/test/resources/generate.sh
 delete mode 100644 modules/web-console/web-agent/src/test/resources/jetty-with-ciphers-0.xml
 delete mode 100644 modules/web-console/web-agent/src/test/resources/jetty-with-ciphers-1.xml
 delete mode 100644 modules/web-console/web-agent/src/test/resources/jetty-with-ciphers-2.xml
 delete mode 100644 modules/web-console/web-agent/src/test/resources/jetty-with-ssl.xml
 delete mode 100644 modules/web-console/web-agent/src/test/resources/server.jks


[ignite] 01/02: IGNITE-13038 Web Console moved to separate repository: https://github.com/apache/ignite-web-console - Fixes #8065.

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexpl pushed a commit to branch ignite-2.9
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit d39cc1bc302fd26239ebd899d87f82554e98c730
Author: Alexey Kuznetsov <ak...@apache.org>
AuthorDate: Thu Jul 23 12:04:39 2020 +0500

    IGNITE-13038 Web Console moved to separate repository: https://github.com/apache/ignite-web-console - Fixes #8065.
    
    Signed-off-by: Alexey Kuznetsov <ak...@apache.org>
    
    (cherry picked from commit b799a0875e6a04259c9483a44c7087c1c21c63fc)
---
 .gitignore                                         |     1 -
 assembly/dependencies-apache-ignite-lgpl.xml       |     1 -
 assembly/dependencies-apache-ignite-slim.xml       |     1 -
 assembly/dependencies-apache-ignite.xml            |     1 -
 docker/web-agent/Dockerfile                        |    46 -
 docker/web-agent/README.txt                        |    36 -
 docker/web-console/standalone/Dockerfile           |    84 -
 docker/web-console/standalone/README.txt           |    35 -
 docker/web-console/standalone/docker-entrypoint.sh |    23 -
 docker/web-console/standalone/nginx/nginx.conf     |    55 -
 .../web-console/standalone/nginx/web-console.conf  |    62 -
 modules/web-console/.dockerignore                  |    10 -
 modules/web-console/.gitignore                     |     4 -
 modules/web-console/DEVNOTES.txt                   |   145 -
 modules/web-console/README.txt                     |    36 -
 modules/web-console/assembly/README.txt            |   127 -
 modules/web-console/assembly/direct-install.xml    |    91 -
 modules/web-console/backend/.eslintrc              |   169 -
 modules/web-console/backend/.gitignore             |     3 -
 modules/web-console/backend/agent_dists/README.txt |     6 -
 modules/web-console/backend/app/agentSocket.js     |   124 -
 modules/web-console/backend/app/agentsHandler.js   |   419 -
 modules/web-console/backend/app/apiServer.js       |    88 -
 modules/web-console/backend/app/browsersHandler.js |   348 -
 modules/web-console/backend/app/configure.js       |   104 -
 modules/web-console/backend/app/mongo.js           |   180 -
 modules/web-console/backend/app/nconf.js           |    54 -
 modules/web-console/backend/app/routes.js          |    66 -
 modules/web-console/backend/app/schemas.js         |  1323 --
 modules/web-console/backend/app/settings.js        |   150 -
 .../backend/config/settings.json.sample            |    36 -
 .../backend/errors/AppErrorException.js            |    34 -
 .../backend/errors/AuthFailedException.js          |    30 -
 .../backend/errors/DuplicateKeyException.js        |    28 -
 .../backend/errors/IllegalAccessError.js           |    30 -
 .../backend/errors/IllegalArgumentException.js     |    28 -
 .../errors/MissingConfirmRegistrationException.js  |    34 -
 .../backend/errors/MissingResourceException.js     |    30 -
 .../backend/errors/ServerErrorException.js         |    35 -
 modules/web-console/backend/errors/index.js        |    43 -
 modules/web-console/backend/index.js               |    41 -
 modules/web-console/backend/injector.js            |    29 -
 modules/web-console/backend/launch-tools.js        |   113 -
 modules/web-console/backend/middlewares/api.js     |    60 -
 modules/web-console/backend/middlewares/demo.js    |    31 -
 modules/web-console/backend/middlewares/host.js    |    40 -
 modules/web-console/backend/middlewares/user.js    |    36 -
 .../migrations/1502249492000-invalidate_rename.js  |    28 -
 .../migrations/1502432624000-cache-index.js        |    32 -
 .../backend/migrations/1504672035000-igfs-index.js |    32 -
 .../migrations/1505114649000-models-index.js       |    32 -
 .../1508395969410-init-registered-date.js          |    34 -
 .../migrations/1516948939797-migrate-configs.js    |   399 -
 .../1547440382485-account-make-email-unique.js     |    85 -
 modules/web-console/backend/migrations/README.txt  |     4 -
 .../backend/migrations/migration-utils.js          |   127 -
 modules/web-console/backend/package-lock.json      |  8115 -----------
 modules/web-console/backend/package.json           |    86 -
 modules/web-console/backend/routes/activities.js   |    46 -
 modules/web-console/backend/routes/admin.js        |    91 -
 modules/web-console/backend/routes/caches.js       |    79 -
 modules/web-console/backend/routes/clusters.js     |   108 -
 .../web-console/backend/routes/configuration.js    |    53 -
 modules/web-console/backend/routes/demo.js         |   145 -
 .../web-console/backend/routes/demo/caches.json    |    87 -
 .../web-console/backend/routes/demo/clusters.json  |    50 -
 .../web-console/backend/routes/demo/domains.json   |   317 -
 modules/web-console/backend/routes/demo/igfss.json |    10 -
 modules/web-console/backend/routes/domains.js      |    84 -
 modules/web-console/backend/routes/downloads.js    |    59 -
 modules/web-console/backend/routes/igfss.js        |    79 -
 modules/web-console/backend/routes/notebooks.js    |    83 -
 modules/web-console/backend/routes/profile.js      |    74 -
 modules/web-console/backend/routes/public.js       |   161 -
 modules/web-console/backend/services/Utils.js      |    51 -
 modules/web-console/backend/services/activities.js |   111 -
 modules/web-console/backend/services/auth.js       |   178 -
 modules/web-console/backend/services/caches.js     |   215 -
 modules/web-console/backend/services/clusters.js   |   279 -
 .../web-console/backend/services/configurations.js |    70 -
 modules/web-console/backend/services/domains.js    |   266 -
 modules/web-console/backend/services/downloads.js  |    93 -
 modules/web-console/backend/services/igfss.js      |   184 -
 modules/web-console/backend/services/mails.js      |   216 -
 modules/web-console/backend/services/notebooks.js  |   115 -
 .../web-console/backend/services/notifications.js  |    50 -
 modules/web-console/backend/services/sessions.js   |    60 -
 modules/web-console/backend/services/spaces.js     |    90 -
 modules/web-console/backend/services/users.js      |   275 -
 modules/web-console/backend/templates/base.html    |    21 -
 modules/web-console/backend/test/app/db.js         |    69 -
 modules/web-console/backend/test/app/httpAgent.js  |    50 -
 modules/web-console/backend/test/app/mail.js       |    31 -
 modules/web-console/backend/test/app/settings.js   |    38 -
 .../web-console/backend/test/config/settings.json  |    17 -
 .../web-console/backend/test/data/accounts.json    |    19 -
 modules/web-console/backend/test/data/caches.json  |   135 -
 .../web-console/backend/test/data/clusters.json    |    56 -
 modules/web-console/backend/test/data/domains.json |   322 -
 modules/web-console/backend/test/data/igfss.json   |    12 -
 modules/web-console/backend/test/data/spaces.json  |    14 -
 modules/web-console/backend/test/index.js          |    31 -
 modules/web-console/backend/test/injector.js       |    36 -
 .../web-console/backend/test/routes/clusters.js    |    82 -
 modules/web-console/backend/test/routes/public.js  |    68 -
 .../backend/test/unit/ActivitiesService.test.js    |   132 -
 .../backend/test/unit/AuthService.test.js          |    94 -
 .../backend/test/unit/CacheService.test.js         |   172 -
 .../backend/test/unit/ClusterService.test.js       |   376 -
 .../backend/test/unit/DomainService.test.js        |   172 -
 .../backend/test/unit/IgfsService.test.js          |   145 -
 .../web-console/backend/test/unit/Utils.test.js    |    48 -
 .../web-console/docker/compose/backend/Dockerfile  |    35 -
 .../web-console/docker/compose/docker-compose.yml  |    55 -
 .../web-console/docker/compose/frontend/Dockerfile |    45 -
 .../docker/compose/frontend/nginx/nginx.conf       |    59 -
 .../docker/compose/frontend/nginx/web-console.conf |    62 -
 modules/web-console/e2e/docker-compose.yml         |    42 -
 modules/web-console/e2e/testcafe/.eslintrc         |     1 -
 modules/web-console/e2e/testcafe/Dockerfile        |    32 -
 .../e2e/testcafe/components/FormField.js           |    88 -
 .../e2e/testcafe/components/ListEditable.js        |    83 -
 .../e2e/testcafe/components/PanelCollapsible.js    |    28 -
 .../web-console/e2e/testcafe/components/Table.js   |    63 -
 .../e2e/testcafe/components/confirmation.js        |    39 -
 .../e2e/testcafe/components/modalInput.js          |    40 -
 .../web-console/e2e/testcafe/components/no-data.js |    20 -
 .../e2e/testcafe/components/notifications.js       |    21 -
 .../components/pageAdvancedConfiguration.js        |    29 -
 .../e2e/testcafe/components/pageConfiguration.js   |    21 -
 .../e2e/testcafe/components/topNavigation.js       |    23 -
 .../e2e/testcafe/components/userMenu.js            |    34 -
 .../e2e/testcafe/environment/envtools.js           |   197 -
 .../e2e/testcafe/environment/launch-env.js         |    26 -
 .../e2e/testcafe/fixtures/admin-panel.js           |    67 -
 .../e2e/testcafe/fixtures/auth/forgot-password.js  |    53 -
 .../e2e/testcafe/fixtures/auth/logout.js           |    38 -
 .../fixtures/auth/signup-validation-local.js       |    52 -
 .../e2e/testcafe/fixtures/auth/signup.js           |    76 -
 .../e2e/testcafe/fixtures/configuration/basic.js   |    86 -
 .../configuration/clusterFormChangeDetection.js    |    58 -
 .../fixtures/configuration/newClusterWithCache.js  |    45 -
 .../testcafe/fixtures/configuration/overview.js    |   147 -
 .../e2e/testcafe/fixtures/menu-smoke.js            |    48 -
 .../testcafe/fixtures/queries/notebooks-list.js    |    59 -
 .../testcafe/fixtures/user-profile/credentials.js  |    63 -
 .../e2e/testcafe/fixtures/user-profile/profile.js  |    60 -
 modules/web-console/e2e/testcafe/helpers.js        |    39 -
 modules/web-console/e2e/testcafe/index.js          |    38 -
 modules/web-console/e2e/testcafe/package.json      |    42 -
 .../PageConfigurationAdvancedCluster.js            |    39 -
 .../testcafe/page-models/PageConfigurationBasic.js |    67 -
 .../page-models/PageConfigurationOverview.js       |    36 -
 .../e2e/testcafe/page-models/PageQueries.js        |    69 -
 .../page-models/pageConfigurationAdvancedIGFS.js   |    21 -
 .../page-models/pageConfigurationAdvancedModels.js |    28 -
 .../e2e/testcafe/page-models/pageForgotPassword.js |    24 -
 .../e2e/testcafe/page-models/pageProfile.js        |    40 -
 .../e2e/testcafe/page-models/pageSignin.js         |    32 -
 .../e2e/testcafe/page-models/pageSignup.js         |    48 -
 modules/web-console/e2e/testcafe/roles.js          |    30 -
 .../web-console/e2e/testcafe/testcafe-runner.js    |    63 -
 modules/web-console/e2e/testenv/Dockerfile         |    51 -
 modules/web-console/e2e/testenv/nginx/nginx.conf   |    55 -
 .../web-console/e2e/testenv/nginx/web-console.conf |    62 -
 modules/web-console/frontend/.babelrc              |    16 -
 modules/web-console/frontend/.eslintrc             |   198 -
 modules/web-console/frontend/.gitignore            |     6 -
 modules/web-console/frontend/app/app.config.js     |   142 -
 modules/web-console/frontend/app/app.d.ts          |    29 -
 modules/web-console/frontend/app/app.js            |   392 -
 .../frontend/app/browserUpdate/index.js            |    36 -
 .../frontend/app/browserUpdate/style.scss          |    36 -
 .../activities-user-dialog.controller.js           |    33 -
 .../activities-user-dialog.tpl.pug                 |    34 -
 .../app/components/activities-user-dialog/index.js |    41 -
 .../app/components/breadcrumbs/component.js        |    43 -
 .../frontend/app/components/breadcrumbs/index.js   |    23 -
 .../frontend/app/components/breadcrumbs/style.scss |    46 -
 .../app/components/breadcrumbs/template.pug        |    17 -
 .../app/components/bs-select-menu/controller.js    |    31 -
 .../app/components/bs-select-menu/directive.js     |    30 -
 .../app/components/bs-select-menu/index.js         |    28 -
 .../app/components/bs-select-menu/index.spec.js    |    67 -
 .../app/components/bs-select-menu/strip.filter.js  |    22 -
 .../app/components/bs-select-menu/style.scss       |   101 -
 .../app/components/bs-select-menu/template.pug     |    47 -
 .../bs-select-menu/transcludeToBody.directive.js   |    50 -
 .../components/cluster-security-icon/component.js  |    25 -
 .../app/components/cluster-security-icon/index.js  |    24 -
 .../components/cluster-security-icon/template.pug  |    30 -
 .../app/components/cluster-selector/component.js   |    25 -
 .../app/components/cluster-selector/controller.js  |   102 -
 .../app/components/cluster-selector/index.js       |    23 -
 .../app/components/cluster-selector/style.scss     |    74 -
 .../app/components/cluster-selector/template.pug   |    82 -
 .../connected-clusters-badge/controller.js         |    56 -
 .../components/connected-clusters-badge/index.js   |    33 -
 .../components/connected-clusters-badge/style.scss |    43 -
 .../connected-clusters-badge/template.pug          |    18 -
 .../components/cell-logout/index.js                |    44 -
 .../components/cell-logout/template.pug            |    23 -
 .../components/cell-status/index.ts                |    31 -
 .../components/list/column-defs.js                 |    59 -
 .../components/list/controller.js                  |    60 -
 .../components/list/index.js                       |    29 -
 .../components/list/style.scss                     |    49 -
 .../components/list/template.tpl.pug               |    19 -
 .../connected-clusters-dialog/controller.js        |    24 -
 .../components/connected-clusters-dialog/index.js  |    35 -
 .../connected-clusters-dialog/service.js           |    44 -
 .../connected-clusters-dialog/style.scss           |    23 -
 .../connected-clusters-dialog/template.tpl.pug     |    34 -
 .../dialog-admin-create-user/component.ts          |    27 -
 .../dialog-admin-create-user/controller.ts         |    78 -
 .../components/dialog-admin-create-user/index.ts   |    23 -
 .../components/dialog-admin-create-user/state.ts   |    29 -
 .../dialog-admin-create-user/template.pug          |    37 -
 .../components/form-field-size/controller.ts       |   163 -
 .../form-field/components/form-field-size/index.js |    42 -
 .../components/form-field-size/style.scss          |    35 -
 .../components/form-field-size/template.pug        |    79 -
 .../form-field/copyInputValueButton.directive.js   |    86 -
 .../form-field/igniteFormField.directive.ts        |    76 -
 .../frontend/app/components/form-field/index.js    |    31 -
 .../form-field/showValidationError.directive.ts    |    77 -
 .../frontend/app/components/form-field/style.scss  |    29 -
 .../app/components/form-signup/component.ts        |    32 -
 .../app/components/form-signup/controller.ts       |    46 -
 .../frontend/app/components/form-signup/index.ts   |    41 -
 .../frontend/app/components/form-signup/style.scss |    31 -
 .../app/components/form-signup/template.pug        |   105 -
 .../components/global-progress-line/component.ts   |    28 -
 .../components/global-progress-line/controller.ts  |    47 -
 .../app/components/global-progress-line/index.ts   |    24 -
 .../app/components/global-progress-line/style.scss |    25 -
 .../components/global-progress-line/template.pug   |    17 -
 .../components/grid-column-selector/component.js   |    29 -
 .../components/grid-column-selector/controller.js  |   115 -
 .../grid-column-selector/controller.spec.js        |   435 -
 .../app/components/grid-column-selector/index.js   |    24 -
 .../app/components/grid-column-selector/style.scss |    25 -
 .../components/grid-column-selector/template.pug   |    29 -
 .../app/components/grid-export/component.js        |    70 -
 .../frontend/app/components/grid-export/index.js   |    24 -
 .../frontend/app/components/grid-export/style.scss |    34 -
 .../app/components/grid-export/template.pug        |    22 -
 .../app/components/grid-item-selected/component.js |    28 -
 .../components/grid-item-selected/controller.js    |    41 -
 .../app/components/grid-item-selected/index.js     |    25 -
 .../app/components/grid-item-selected/style.scss   |    23 -
 .../app/components/grid-item-selected/template.pug |    20 -
 .../app/components/grid-no-data/component.js       |    33 -
 .../app/components/grid-no-data/controller.js      |    50 -
 .../frontend/app/components/grid-no-data/index.js  |    24 -
 .../app/components/grid-no-data/style.scss         |    31 -
 .../app/components/grid-showing-rows/component.js  |    29 -
 .../app/components/grid-showing-rows/controller.js |   101 -
 .../app/components/grid-showing-rows/index.js      |    24 -
 .../app/components/grid-showing-rows/style.scss    |    24 -
 .../components/grid-showing-rows/template.tpl.pug  |    24 -
 .../ignite-chart-series-selector/component.js      |    28 -
 .../ignite-chart-series-selector/controller.js     |    63 -
 .../ignite-chart-series-selector/index.js          |    24 -
 .../ignite-chart-series-selector/template.pug      |    29 -
 .../app/components/ignite-chart/component.ts       |    35 -
 .../components/chart-no-data/component.ts          |    31 -
 .../components/chart-no-data/controller.ts         |    80 -
 .../ignite-chart/components/chart-no-data/index.ts |    23 -
 .../components/chart-no-data/template.tpl.pug      |    20 -
 .../app/components/ignite-chart/controller.js      |   397 -
 .../frontend/app/components/ignite-chart/index.js  |    26 -
 .../app/components/ignite-chart/style.scss         |    85 -
 .../app/components/ignite-chart/template.tpl.pug   |    35 -
 .../app/components/ignite-icon/directive.js        |    82 -
 .../frontend/app/components/ignite-icon/index.js   |    27 -
 .../frontend/app/components/ignite-icon/service.js |    49 -
 .../frontend/app/components/ignite-icon/style.scss |    27 -
 .../frontend/app/components/input-dialog/index.js  |    24 -
 .../input-dialog/input-dialog.controller.js        |    34 -
 .../input-dialog/input-dialog.service.ts           |   172 -
 .../components/input-dialog/input-dialog.tpl.pug   |   108 -
 .../app/components/list-editable/component.js      |    36 -
 .../component.spec.js                              |    72 -
 .../list-editable-add-item-button/component.ts     |    73 -
 .../has-items-template.pug                         |    23 -
 .../list-editable-add-item-button/index.ts         |    24 -
 .../no-items-template.pug                          |    18 -
 .../list-editable-add-item-button/style.scss       |    20 -
 .../list-editable-cols/cols.directive.js           |    77 -
 .../components/list-editable-cols/cols.style.scss  |    61 -
 .../list-editable-cols/cols.template.pug           |    29 -
 .../components/list-editable-cols/index.js         |    27 -
 .../components/list-editable-cols/row.directive.js |    45 -
 .../components/list-editable-one-way/directive.ts  |    45 -
 .../components/list-editable-one-way/index.ts      |    24 -
 .../list-editable-save-on-changes/directives.ts    |    73 -
 .../list-editable-save-on-changes/index.ts         |    24 -
 .../list-editable-transclude/directive.ts          |   117 -
 .../components/list-editable-transclude/index.ts   |    23 -
 .../app/components/list-editable/controller.ts     |   126 -
 .../frontend/app/components/list-editable/index.ts |    35 -
 .../app/components/list-editable/style.scss        |   149 -
 .../app/components/list-editable/template.pug      |    50 -
 .../list-of-registered-users/categories.js         |    31 -
 .../list-of-registered-users/column-defs.js        |    67 -
 .../list-of-registered-users/controller.js         |   406 -
 .../components/list-of-registered-users/index.js   |    28 -
 .../components/list-of-registered-users/style.scss |    35 -
 .../list-of-registered-users/template.tpl.pug      |    85 -
 .../frontend/app/components/no-data/component.ts   |    31 -
 .../frontend/app/components/no-data/controller.ts  |    46 -
 .../frontend/app/components/no-data/index.ts       |    25 -
 .../frontend/app/components/no-data/style.scss     |    28 -
 .../app/components/no-data/template.tpl.pug        |    35 -
 .../app/components/page-admin/controller.ts        |    28 -
 .../frontend/app/components/page-admin/index.js    |    42 -
 .../frontend/app/components/page-admin/style.scss  |    62 -
 .../app/components/page-admin/template.tpl.pug     |    28 -
 .../components/page-forgot-password/component.js   |    30 -
 .../components/page-forgot-password/controller.js  |    75 -
 .../app/components/page-forgot-password/index.js   |    28 -
 .../app/components/page-forgot-password/run.js     |    57 -
 .../app/components/page-forgot-password/style.scss |    41 -
 .../components/page-forgot-password/template.pug   |    40 -
 .../app/components/page-forgot-password/types.ts   |    24 -
 .../frontend/app/components/page-landing/index.js  |    64 -
 .../app/components/page-landing/public.pug         |    21 -
 .../app/components/page-landing/style.scss         |   115 -
 .../app/components/page-landing/template.pug       |    56 -
 .../components/page-password-changed/controller.ts |    32 -
 .../app/components/page-password-changed/index.js  |    49 -
 .../components/page-password-changed/style.scss    |    35 -
 .../components/page-password-changed/template.pug  |    21 -
 .../components/page-password-reset/controller.js   |    60 -
 .../app/components/page-password-reset/index.js    |    65 -
 .../app/components/page-password-reset/style.scss  |    38 -
 .../components/page-password-reset/template.pug    |    60 -
 .../app/components/page-profile/component.js       |    24 -
 .../app/components/page-profile/controller.js      |    98 -
 .../frontend/app/components/page-profile/index.js  |    37 -
 .../app/components/page-profile/style.scss         |    34 -
 .../app/components/page-profile/template.pug       |   161 -
 .../app/components/page-queries/component.js       |    59 -
 .../ignite-information/information.directive.js    |    31 -
 .../components/ignite-information/information.pug  |    20 -
 .../components/ignite-information/information.scss |    55 -
 .../components/query-actions-button/component.ts   |    28 -
 .../components/query-actions-button/controller.ts  |    53 -
 .../components/query-actions-button/template.pug   |    28 -
 .../components/queries-notebook/controller.ts      |  2353 ---
 .../components/queries-notebook/index.js           |    33 -
 .../components/queries-notebook/style.scss         |   197 -
 .../components/queries-notebook/template.tpl.pug   |   510 -
 .../queries-notebooks-list/controller.js           |   207 -
 .../components/queries-notebooks-list/index.js     |    28 -
 .../components/queries-notebooks-list/style.scss   |    39 -
 .../queries-notebooks-list/template.tpl.pug        |    56 -
 .../frontend/app/components/page-queries/index.ts  |   110 -
 .../app/components/page-queries/notebook.data.js   |   174 -
 .../components/page-queries/notebook.service.js    |    91 -
 .../app/components/page-queries/style.scss         |    24 -
 .../app/components/page-queries/template.tpl.pug   |    30 -
 .../app/components/page-signin/component.ts        |    29 -
 .../app/components/page-signin/controller.ts       |    88 -
 .../frontend/app/components/page-signin/index.ts   |    28 -
 .../frontend/app/components/page-signin/run.ts     |    70 -
 .../frontend/app/components/page-signin/style.scss |    41 -
 .../app/components/page-signin/template.pug        |    55 -
 .../page-signup-confirmation/component.ts          |    28 -
 .../page-signup-confirmation/controller.ts         |    42 -
 .../components/page-signup-confirmation/index.ts   |    23 -
 .../components/page-signup-confirmation/state.ts   |    48 -
 .../components/page-signup-confirmation/style.scss |    22 -
 .../page-signup-confirmation/template.tpl.pug      |    24 -
 .../app/components/page-signup/component.js        |    26 -
 .../app/components/page-signup/controller.ts       |    87 -
 .../frontend/app/components/page-signup/index.js   |    29 -
 .../frontend/app/components/page-signup/run.js     |    44 -
 .../frontend/app/components/page-signup/style.scss |    38 -
 .../app/components/page-signup/template.pug        |    32 -
 .../app/components/panel-collapsible/component.js  |    39 -
 .../app/components/panel-collapsible/controller.js |    63 -
 .../app/components/panel-collapsible/index.js      |    25 -
 .../app/components/panel-collapsible/index.spec.js |   139 -
 .../app/components/panel-collapsible/style.scss    |    79 -
 .../app/components/panel-collapsible/template.pug  |    24 -
 .../panel-collapsible/transcludeDirective.js       |    51 -
 .../app/components/password-visibility/index.js    |    26 -
 .../components/password-visibility/index.spec.js   |    65 -
 .../password-visibility/root.directive.js          |    49 -
 .../app/components/password-visibility/style.scss  |    54 -
 .../password-visibility/toggle-button.component.js |    49 -
 .../permanent-notifications/component.ts           |    25 -
 .../permanent-notifications/controller.ts          |    30 -
 .../components/permanent-notifications/index.ts    |    21 -
 .../components/permanent-notifications/style.scss  |    54 -
 .../permanent-notifications/template.pug           |    23 -
 .../app/components/progress-line/component.js      |    28 -
 .../app/components/progress-line/controller.js     |    60 -
 .../frontend/app/components/progress-line/index.js |    23 -
 .../app/components/progress-line/index.spec.js     |    69 -
 .../app/components/progress-line/style.scss        |    82 -
 .../app/components/progress-line/template.pug      |    18 -
 .../protect-from-bs-select-render/directive.js     |    32 -
 .../protect-from-bs-select-render/index.js         |    24 -
 .../app/components/status-output/component.ts      |    31 -
 .../components/status-output/componentFactory.ts   |    30 -
 .../app/components/status-output/controller.ts     |    53 -
 .../frontend/app/components/status-output/index.ts |    40 -
 .../app/components/status-output/style.scss        |    38 -
 .../app/components/status-output/template.tpl.pug  |    18 -
 .../app/components/timed-redirection/component.ts  |    29 -
 .../app/components/timed-redirection/controller.ts |    68 -
 .../app/components/timed-redirection/index.ts      |    23 -
 .../app/components/timed-redirection/style.scss    |    48 -
 .../app/components/timed-redirection/template.pug  |    22 -
 .../components/ui-grid-column-resizer/directive.js |    29 -
 .../app/components/ui-grid-column-resizer/index.js |    24 -
 .../app/components/ui-grid-filters/directive.js    |    95 -
 .../app/components/ui-grid-filters/index.js        |    45 -
 .../app/components/ui-grid-filters/style.scss      |    48 -
 .../app/components/ui-grid-filters/template.pug    |    57 -
 .../app/components/ui-grid-hovering/cell.js        |    48 -
 .../app/components/ui-grid-hovering/hovering.js    |    31 -
 .../app/components/ui-grid-hovering/index.js       |    30 -
 .../app/components/ui-grid-hovering/style.scss     |    28 -
 .../app/components/ui-grid-hovering/viewport.js    |    42 -
 .../frontend/app/components/ui-grid/component.js   |    49 -
 .../frontend/app/components/ui-grid/controller.js  |   244 -
 .../frontend/app/components/ui-grid/decorator.js   |    38 -
 .../frontend/app/components/ui-grid/index.js       |    25 -
 .../frontend/app/components/ui-grid/style.scss     |   148 -
 .../frontend/app/components/ui-grid/template.pug   |    60 -
 .../components/user-notifications/controller.js    |    56 -
 .../app/components/user-notifications/index.js     |    26 -
 .../app/components/user-notifications/service.js   |    76 -
 .../app/components/user-notifications/style.scss   |    24 -
 .../components/user-notifications/template.tpl.pug |    47 -
 .../app/components/version-picker/component.js     |    57 -
 .../app/components/version-picker/index.js         |    25 -
 .../app/components/version-picker/style.scss       |    40 -
 .../app/components/version-picker/template.pug     |    37 -
 .../app/components/web-console-footer/component.js |    25 -
 .../components/web-console-footer/controller.ts    |    30 -
 .../app/components/web-console-footer/index.js     |    32 -
 .../app/components/web-console-footer/style.scss   |   102 -
 .../app/components/web-console-footer/template.pug |    32 -
 .../app/components/web-console-header/component.ts |    43 -
 .../components/demo-mode-button/component.ts       |    24 -
 .../components/demo-mode-button/controller.ts      |    57 -
 .../components/demo-mode-button/template.pug       |    20 -
 .../components/user-menu/component.ts              |    25 -
 .../components/user-menu/controller.ts             |    56 -
 .../components/user-menu/style.scss                |    43 -
 .../components/user-menu/template.pug              |    26 -
 .../web-console-header-content/component.ts        |    25 -
 .../web-console-header-content/controller.ts       |    46 -
 .../web-console-header-content/style.scss          |    44 -
 .../web-console-header-content/template.pug        |    24 -
 .../app/components/web-console-header/index.js     |    29 -
 .../app/components/web-console-header/style.scss   |    95 -
 .../app/components/web-console-header/template.pug |    28 -
 .../components/web-console-sidebar/component.ts    |    25 -
 .../components/web-console-sidebar/controller.ts   |    33 -
 .../app/components/web-console-sidebar/index.ts    |    25 -
 .../app/components/web-console-sidebar/style.scss  |    44 -
 .../components/web-console-sidebar/template.pug    |    22 -
 .../web-console-sidebar-navigation/component.ts    |    28 -
 .../web-console-sidebar-navigation/controller.ts   |    26 -
 .../web-console-sidebar-navigation/style.scss      |   105 -
 .../web-console-sidebar-navigation/template.pug    |    35 -
 .../web-console-sidebar-overflow/component.ts      |    26 -
 .../web-console-sidebar-overflow/controller.ts     |    55 -
 .../web-console-sidebar-overflow/style.scss        |    52 -
 .../web-console-sidebar-overflow/template.pug      |    18 -
 .../button-download-project/component.ts           |    39 -
 .../components/button-download-project/index.ts    |    23 -
 .../button-download-project/template.pug           |    22 -
 .../components/button-import-models/component.ts   |    40 -
 .../components/button-import-models/index.ts       |    23 -
 .../components/button-import-models/style.scss     |    25 -
 .../components/button-import-models/template.pug   |    20 -
 .../components/button-preview-project/component.ts |    39 -
 .../components/button-preview-project/index.ts     |    23 -
 .../components/button-preview-project/template.pug |    22 -
 .../configuration/components/fakeUICanExit.spec.js |    32 -
 .../app/configuration/components/fakeUICanExit.ts  |    60 -
 .../configuration/components/formUICanExitGuard.ts |    62 -
 .../components/modal-import-models/component.js    |  1205 --
 .../components/modal-import-models/index.ts        |    31 -
 .../selected-items-amount-indicator/component.ts   |    27 -
 .../selected-items-amount-indicator/style.scss     |    23 -
 .../selected-items-amount-indicator/template.pug   |    17 -
 .../components/modal-import-models/service.ts      |    96 -
 .../step-indicator/component.ts                    |    38 -
 .../modal-import-models/step-indicator/style.scss  |   100 -
 .../step-indicator/template.pug                    |    31 -
 .../components/modal-import-models/style.scss      |    61 -
 .../tables-action-cell/component.ts                |    76 -
 .../tables-action-cell/style.scss                  |    48 -
 .../tables-action-cell/template.pug                |    43 -
 .../modal-import-models/template.tpl.pug           |   263 -
 .../components/modal-preview-project/component.ts  |    31 -
 .../components/modal-preview-project/controller.ts |   149 -
 .../components/modal-preview-project/index.ts      |    27 -
 .../components/modal-preview-project/service.ts    |    50 -
 .../components/modal-preview-project/style.scss    |    67 -
 .../components/modal-preview-project/template.pug  |    48 -
 .../page-configure-advanced/component.ts           |    25 -
 .../components/cache-edit-form/component.ts        |    32 -
 .../components/cache-edit-form/controller.ts       |   131 -
 .../components/cache-edit-form/index.ts            |    23 -
 .../components/cache-edit-form/style.scss          |    20 -
 .../components/cache-edit-form/template.tpl.pug    |    44 -
 .../cache-edit-form/templates/affinity.pug         |   142 -
 .../cache-edit-form/templates/concurrency.pug      |    87 -
 .../cache-edit-form/templates/general.pug          |   155 -
 .../cache-edit-form/templates/key-cfg.pug          |    66 -
 .../cache-edit-form/templates/memory.pug           |   252 -
 .../components/cache-edit-form/templates/misc.pug  |    95 -
 .../templates/near-cache-client.pug                |    67 -
 .../templates/near-cache-server.pug                |    68 -
 .../cache-edit-form/templates/node-filter.pug      |    67 -
 .../components/cache-edit-form/templates/query.pug |   177 -
 .../cache-edit-form/templates/rebalance.pug        |   108 -
 .../cache-edit-form/templates/statistics.pug       |    44 -
 .../components/cache-edit-form/templates/store.pug |   432 -
 .../components/cluster-edit-form/component.ts      |    31 -
 .../cluster-edit-form/controller.spec.js           |    81 -
 .../components/cluster-edit-form/controller.ts     |   190 -
 .../components/cluster-edit-form/index.ts          |    22 -
 .../components/cluster-edit-form/style.scss        |    20 -
 .../components/cluster-edit-form/template.tpl.pug  |    90 -
 .../cluster-edit-form/templates/atomic.pug         |   129 -
 .../cluster-edit-form/templates/attributes.pug     |    41 -
 .../cluster-edit-form/templates/binary.pug         |   151 -
 .../cluster-edit-form/templates/cache-key-cfg.pug  |    66 -
 .../cluster-edit-form/templates/checkpoint.pug     |   109 -
 .../cluster-edit-form/templates/checkpoint/fs.pug  |    42 -
 .../templates/checkpoint/jdbc.pug                  |   126 -
 .../cluster-edit-form/templates/checkpoint/s3.pug  |   443 -
 .../templates/client-connector.pug                 |   184 -
 .../cluster-edit-form/templates/collision.pug      |    64 -
 .../templates/collision/custom.pug                 |    30 -
 .../templates/collision/fifo-queue.pug             |    38 -
 .../templates/collision/job-stealing.pug           |    83 -
 .../templates/collision/priority-queue.pug         |    79 -
 .../cluster-edit-form/templates/communication.pug  |   318 -
 .../cluster-edit-form/templates/connector.pug      |   233 -
 .../cluster-edit-form/templates/data-storage.pug   |   515 -
 .../cluster-edit-form/templates/deployment.pug     |   265 -
 .../cluster-edit-form/templates/discovery.pug      |   259 -
 .../cluster-edit-form/templates/encryption.pug     |    81 -
 .../cluster-edit-form/templates/events.pug         |   151 -
 .../cluster-edit-form/templates/failover.pug       |   189 -
 .../cluster-edit-form/templates/general.pug        |   101 -
 .../templates/general/discovery/cloud.pug          |   100 -
 .../templates/general/discovery/google.pug         |    63 -
 .../templates/general/discovery/jdbc.pug           |    52 -
 .../templates/general/discovery/kubernetes.pug     |    59 -
 .../templates/general/discovery/multicast.pug      |    94 -
 .../templates/general/discovery/s3.pug             |    55 -
 .../templates/general/discovery/shared.pug         |    30 -
 .../templates/general/discovery/vm.pug             |    55 -
 .../templates/general/discovery/zookeeper.pug      |   115 -
 .../retrypolicy/bounded-exponential-backoff.pug    |    48 -
 .../discovery/zookeeper/retrypolicy/custom.pug     |    32 -
 .../zookeeper/retrypolicy/exponential-backoff.pug  |    48 -
 .../discovery/zookeeper/retrypolicy/forever.pug    |    30 -
 .../discovery/zookeeper/retrypolicy/n-times.pug    |    38 -
 .../discovery/zookeeper/retrypolicy/one-time.pug   |    30 -
 .../zookeeper/retrypolicy/until-elapsed.pug        |    38 -
 .../cluster-edit-form/templates/hadoop.pug         |   147 -
 .../cluster-edit-form/templates/load-balancing.pug |   183 -
 .../cluster-edit-form/templates/logger.pug         |    66 -
 .../cluster-edit-form/templates/logger/custom.pug  |    31 -
 .../cluster-edit-form/templates/logger/log4j.pug   |    68 -
 .../cluster-edit-form/templates/logger/log4j2.pug  |    50 -
 .../cluster-edit-form/templates/marshaller.pug     |   115 -
 .../cluster-edit-form/templates/memory.pug         |   240 -
 .../cluster-edit-form/templates/metrics.pug        |    71 -
 .../cluster-edit-form/templates/misc.pug           |   223 -
 .../cluster-edit-form/templates/mvcc.pug           |    47 -
 .../cluster-edit-form/templates/odbc.pug           |   106 -
 .../cluster-edit-form/templates/persistence.pug    |   247 -
 .../cluster-edit-form/templates/service.pug        |   114 -
 .../cluster-edit-form/templates/sql-connector.pug  |   117 -
 .../components/cluster-edit-form/templates/ssl.pug |   160 -
 .../cluster-edit-form/templates/swap.pug           |   105 -
 .../cluster-edit-form/templates/thread.pug         |   207 -
 .../cluster-edit-form/templates/time.pug           |    72 -
 .../cluster-edit-form/templates/transactions.pug   |   124 -
 .../components/igfs-edit-form/component.ts         |    30 -
 .../components/igfs-edit-form/controller.ts        |    75 -
 .../components/igfs-edit-form/index.ts             |    22 -
 .../components/igfs-edit-form/style.scss           |    20 -
 .../components/igfs-edit-form/template.tpl.pug     |    35 -
 .../components/igfs-edit-form/templates/dual.pug   |    59 -
 .../igfs-edit-form/templates/fragmentizer.pug      |    67 -
 .../igfs-edit-form/templates/general.pug           |    73 -
 .../components/igfs-edit-form/templates/ipc.pug    |   105 -
 .../components/igfs-edit-form/templates/misc.pug   |   209 -
 .../igfs-edit-form/templates/secondary.pug         |   307 -
 .../components/model-edit-form/component.js        |    31 -
 .../components/model-edit-form/controller.ts       |   193 -
 .../components/model-edit-form/index.js            |    22 -
 .../components/model-edit-form/style.scss          |    20 -
 .../components/model-edit-form/template.tpl.pug    |    29 -
 .../model-edit-form/templates/general.pug          |    89 -
 .../components/model-edit-form/templates/query.pug |   362 -
 .../components/model-edit-form/templates/store.pug |   152 -
 .../page-configure-advanced-caches/component.ts    |    25 -
 .../page-configure-advanced-caches/controller.ts   |   167 -
 .../page-configure-advanced-caches/index.ts        |    23 -
 .../page-configure-advanced-caches/template.pug    |    57 -
 .../page-configure-advanced-cluster/component.ts   |    25 -
 .../page-configure-advanced-cluster/controller.ts  |    62 -
 .../page-configure-advanced-cluster/index.ts       |    23 -
 .../page-configure-advanced-cluster/template.pug   |    25 -
 .../page-configure-advanced-igfs/component.ts      |    25 -
 .../page-configure-advanced-igfs/controller.ts     |   156 -
 .../page-configure-advanced-igfs/index.ts          |    23 -
 .../page-configure-advanced-igfs/template.pug      |    51 -
 .../page-configure-advanced-models/component.ts    |    26 -
 .../page-configure-advanced-models/controller.ts   |   176 -
 .../hasIndex.template.pug                          |    23 -
 .../page-configure-advanced-models/index.ts        |    23 -
 .../keyCell.template.pug                           |    21 -
 .../page-configure-advanced-models/style.scss      |    37 -
 .../page-configure-advanced-models/template.pug    |    51 -
 .../valueCell.template.pug                         |    18 -
 .../page-configure-advanced/controller.ts          |    31 -
 .../components/page-configure-advanced/index.ts    |    40 -
 .../components/page-configure-advanced/style.scss  |    96 -
 .../page-configure-advanced/template.pug           |    24 -
 .../components/page-configure-basic/component.ts   |    25 -
 .../components/page-configure-basic/controller.ts  |   210 -
 .../components/page-configure-basic/index.ts       |    28 -
 .../page-configure-basic/reducer.spec.js           |   208 -
 .../components/page-configure-basic/reducer.ts     |   109 -
 .../components/page-configure-basic/style.scss     |   136 -
 .../components/page-configure-basic/template.pug   |   198 -
 .../page-configure-overview/component.ts           |    25 -
 .../pco-grid-column-categories/directive.ts        |    66 -
 .../page-configure-overview/controller.ts          |   166 -
 .../components/page-configure-overview/index.ts    |    26 -
 .../components/page-configure-overview/style.scss  |    33 -
 .../page-configure-overview/template.pug           |    44 -
 .../components/page-configure/component.ts         |    28 -
 .../components/page-configure/controller.ts        |    51 -
 .../components/page-configure/index.ts             |    21 -
 .../components/page-configure/style.scss           |   334 -
 .../components/page-configure/template.pug         |    49 -
 .../components/pc-items-table/component.js         |    45 -
 .../components/pc-items-table/controller.js        |   143 -
 .../components/pc-items-table/decorator.js         |    34 -
 .../components/pc-items-table/index.js             |    25 -
 .../components/pc-items-table/style.scss           |    68 -
 .../components/pc-items-table/template.pug         |    46 -
 .../components/pc-split-button/component.ts        |    27 -
 .../components/pc-split-button/controller.ts       |    34 -
 .../components/pc-split-button/index.ts            |    23 -
 .../components/pc-split-button/template.pug        |    28 -
 .../components/pc-ui-grid-filters/directive.ts     |    65 -
 .../components/pc-ui-grid-filters/index.ts         |    46 -
 .../components/pc-ui-grid-filters/style.scss       |    22 -
 .../components/pc-ui-grid-filters/template.pug     |    39 -
 .../configuration/components/pcIsInCollection.ts   |    46 -
 .../app/configuration/components/pcValidation.ts   |   117 -
 .../components/preview-panel/directive.ts          |   242 -
 .../components/preview-panel/index.ts              |    23 -
 .../configuration/components/ui-ace-java/index.ts  |    26 -
 .../ui-ace-java/ui-ace-java.controller.ts          |    22 -
 .../ui-ace-java/ui-ace-java.directive.ts           |    44 -
 .../components/ui-ace-java/ui-ace-java.pug         |    22 -
 .../components/ui-ace-spring/index.ts              |    26 -
 .../ui-ace-spring/ui-ace-spring.controller.ts      |    22 -
 .../ui-ace-spring/ui-ace-spring.directive.ts       |    44 -
 .../components/ui-ace-spring/ui-ace-spring.pug     |    17 -
 .../components/ui-ace-tabs.directive.ts            |    26 -
 .../configuration/components/ui-ace.controller.js  |   123 -
 .../frontend/app/configuration/defaultNames.ts     |    23 -
 .../generator/JavaTypesNonEnum.service.spec.ts     |    38 -
 .../generator/JavaTypesNonEnum.service.ts          |    62 -
 .../generator/configuration.module.js              |    60 -
 .../generator/generator/AbstractTransformer.js     |   423 -
 .../generator/ArtifactVersionChecker.service.js    |    86 -
 .../app/configuration/generator/generator/Beans.js |   424 -
 .../generator/generator/ConfigurationGenerator.js  |  2999 ----
 .../generator/generator/Custom.service.js          |    23 -
 .../generator/generator/Docker.service.js          |   109 -
 .../generator/generator/Docker.service.spec.js     |   133 -
 .../generator/generator/JavaTransformer.service.js |  1808 ---
 .../generator/generator/Maven.service.js           |   267 -
 .../generator/generator/PlatformGenerator.js       |   531 -
 .../generator/generator/Properties.service.js      |    94 -
 .../generator/generator/Readme.service.js          |    78 -
 .../generator/SharpTransformer.service.js          |   258 -
 .../generator/SpringTransformer.service.js         |   346 -
 .../generator/generator/StringBuilder.js           |    76 -
 .../generator/defaults/Cache.platform.service.js   |    56 -
 .../generator/generator/defaults/Cache.service.js  |   151 -
 .../generator/defaults/Cluster.platform.service.js |    43 -
 .../generator/defaults/Cluster.service.js          |   475 -
 .../generator/defaults/Event-groups.service.js     |    27 -
 .../generator/generator/defaults/IGFS.service.js   |    78 -
 .../app/configuration/icons/configuration.icon.svg |    13 -
 .../frontend/app/configuration/index.lazy.ts       |    48 -
 .../frontend/app/configuration/index.ts            |   193 -
 .../frontend/app/configuration/mixins.pug          |   419 -
 .../frontend/app/configuration/services/Caches.ts  |   236 -
 .../app/configuration/services/Clusters.spec.js    |    55 -
 .../app/configuration/services/Clusters.ts         |   601 -
 .../services/ConfigChangesGuard.spec.js            |    40 -
 .../configuration/services/ConfigChangesGuard.ts   |    96 -
 .../services/ConfigSelectionManager.ts             |    93 -
 .../services/ConfigurationDownload.spec.js         |   110 -
 .../services/ConfigurationDownload.ts              |    82 -
 .../services/ConfigurationResource.spec.js         |    78 -
 .../services/ConfigurationResource.ts              |    48 -
 .../app/configuration/services/ConfigureState.ts   |    62 -
 .../frontend/app/configuration/services/IGFSs.ts   |    93 -
 .../frontend/app/configuration/services/Models.ts  |   199 -
 .../app/configuration/services/PageConfigure.ts    |    57 -
 .../app/configuration/services/SummaryZipper.ts    |    41 -
 .../app/configuration/services/summary.worker.js   |   147 -
 .../frontend/app/configuration/states.ts           |   289 -
 .../app/configuration/store/actionCreators.js      |   170 -
 .../app/configuration/store/actionTypes.js         |    31 -
 .../frontend/app/configuration/store/effects.js    |   763 -
 .../app/configuration/store/effects.spec.js        |   134 -
 .../frontend/app/configuration/store/reducer.js    |   502 -
 .../app/configuration/store/reducer.spec.js        |   275 -
 .../frontend/app/configuration/store/selectors.ts  |   209 -
 .../configuration/transitionHooks/errorState.ts    |    55 -
 .../frontend/app/configuration/types/index.ts      |   140 -
 .../app/core/activities/Activities.data.ts         |    51 -
 .../frontend/app/core/admin/Admin.data.js          |   102 -
 modules/web-console/frontend/app/core/index.js     |    25 -
 .../frontend/app/core/utils/maskNull.js            |    21 -
 modules/web-console/frontend/app/data/colors.json  |    22 -
 .../web-console/frontend/app/data/countries.json   |   179 -
 .../web-console/frontend/app/data/demo-info.json   |    14 -
 .../web-console/frontend/app/data/dialects.json    |     9 -
 .../frontend/app/data/event-groups.json            |   169 -
 .../frontend/app/data/getting-started.json         |   129 -
 modules/web-console/frontend/app/data/i18n.js      |   308 -
 .../frontend/app/data/java-classes.json            |    21 -
 .../frontend/app/data/java-keywords.json           |    55 -
 .../frontend/app/data/java-primitives.json         |     9 -
 .../web-console/frontend/app/data/jdbc-types.json  |    44 -
 .../frontend/app/data/pom-dependencies.json        |    28 -
 .../frontend/app/data/sql-keywords.json            |    41 -
 .../app/directives/auto-focus.directive.js         |    35 -
 .../frontend/app/directives/btn-ignite-link.js     |    29 -
 .../app/directives/copy-to-clipboard.directive.js  |    38 -
 .../hide-on-state-change.directive.js              |    36 -
 .../frontend/app/directives/match.directive.js     |    47 -
 .../app/directives/match.directive.spec.js         |    84 -
 .../app/directives/on-click-focus.directive.js     |    38 -
 .../directives/on-enter-focus-move.directive.js    |    41 -
 .../frontend/app/directives/on-enter.directive.js  |    44 -
 .../frontend/app/directives/on-escape.directive.js |    44 -
 .../app/directives/on-focus-out.directive.js       |   107 -
 .../app/directives/retain-selection.directive.js   |    78 -
 .../frontend/app/errors/CancellationError.js       |    28 -
 .../frontend/app/filters/byName.filter.js          |    25 -
 .../frontend/app/filters/bytes.filter.js           |    40 -
 .../frontend/app/filters/bytes.filter.spec.js      |    36 -
 .../frontend/app/filters/default-name.filter.js    |    29 -
 .../app/filters/domainsValidation.filter.js        |    51 -
 .../frontend/app/filters/duration.filter.js        |    47 -
 .../frontend/app/filters/hasPojo.filter.js         |    21 -
 .../web-console/frontend/app/filters/id8.filter.js |    22 -
 .../app/filters/uiGridSubcategories.filter.js      |    26 -
 .../frontend/app/helpers/jade/mixins.pug           |    22 -
 .../web-console/frontend/app/modules/ace.module.js |   284 -
 .../app/modules/agent/AgentManager.service.js      |   861 --
 .../app/modules/agent/AgentModal.service.js        |    98 -
 .../frontend/app/modules/agent/agent.module.js     |    30 -
 .../agent/components/cluster-login/component.js    |    45 -
 .../agent/components/cluster-login/index.js        |    25 -
 .../agent/components/cluster-login/service.js      |    85 -
 .../agent/components/cluster-login/template.pug    |    58 -
 .../app/modules/agent/decompress.worker.js         |    36 -
 .../frontend/app/modules/agent/types/Cluster.js    |    37 -
 .../app/modules/agent/types/ClusterSecrets.js      |    61 -
 .../modules/agent/types/ClusterSecretsManager.js   |    70 -
 .../app/modules/branding/branding.module.js        |    41 -
 .../app/modules/branding/branding.service.js       |    46 -
 .../app/modules/branding/features.directive.js     |    40 -
 .../app/modules/branding/terms.directive.js        |    35 -
 .../frontend/app/modules/cluster/Cache.js          |    52 -
 .../frontend/app/modules/cluster/CacheMetrics.js   |    62 -
 .../frontend/app/modules/cluster/NodeMetrics.js    |    19 -
 .../frontend/app/modules/demo/Demo.module.js       |   182 -
 .../app/modules/dialog/dialog-content.directive.js |    31 -
 .../app/modules/dialog/dialog-title.directive.js   |    31 -
 .../app/modules/dialog/dialog.controller.js        |    38 -
 .../app/modules/dialog/dialog.directive.js         |    32 -
 .../frontend/app/modules/dialog/dialog.factory.js  |    36 -
 .../frontend/app/modules/dialog/dialog.module.js   |    32 -
 .../frontend/app/modules/dialog/dialog.tpl.pug     |    26 -
 .../form/field/bs-select-placeholder.directive.js  |    57 -
 .../form/field/input/autofocus.directive.js        |    42 -
 .../frontend/app/modules/form/form.module.js       |    60 -
 .../app/modules/form/services/FormGUID.service.js  |    22 -
 .../modules/form/validator/ipaddress.directive.js  |    99 -
 .../validator/java-built-in-class.directive.js     |    48 -
 .../form/validator/java-identifier.directive.js    |    51 -
 .../form/validator/java-keywords.directive.js      |    52 -
 .../form/validator/java-package-name.directive.js  |    44 -
 .../validator/java-package-specified.directive.js  |    52 -
 .../form/validator/property-unique.directive.js    |    60 -
 .../property-value-specified.directive.js          |    39 -
 .../app/modules/form/validator/unique.directive.js |    92 -
 .../app/modules/form/validator/uuid.directive.js   |    44 -
 .../getting-started/GettingStarted.provider.js     |   146 -
 .../app/modules/loading/loading.directive.js       |    57 -
 .../frontend/app/modules/loading/loading.module.js |    26 -
 .../frontend/app/modules/loading/loading.pug       |    23 -
 .../frontend/app/modules/loading/loading.scss      |    73 -
 .../app/modules/loading/loading.service.js         |    54 -
 .../app/modules/navbar/Userbar.provider.js         |    30 -
 .../frontend/app/modules/navbar/navbar.module.js   |    26 -
 .../frontend/app/modules/nodes/Nodes.service.js    |    68 -
 .../app/modules/nodes/nodes-dialog.controller.js   |    70 -
 .../frontend/app/modules/nodes/nodes-dialog.scss   |    32 -
 .../app/modules/nodes/nodes-dialog.tpl.pug         |    42 -
 .../frontend/app/modules/nodes/nodes.module.js     |    27 -
 .../frontend/app/modules/socket.module.js          |    47 -
 .../frontend/app/modules/states/admin.state.js     |    35 -
 .../frontend/app/modules/states/errors.state.js    |    51 -
 .../frontend/app/modules/states/logout.state.js    |    33 -
 .../frontend/app/modules/states/settings.state.js  |    33 -
 .../frontend/app/modules/user/Auth.service.ts      |    98 -
 .../frontend/app/modules/user/User.service.js      |    85 -
 .../modules/user/emailConfirmationInterceptor.ts   |    37 -
 .../frontend/app/modules/user/permissions.js       |    28 -
 .../frontend/app/modules/user/user.module.js       |   111 -
 .../frontend/app/primitives/badge/index.scss       |    40 -
 .../frontend/app/primitives/btn-group/index.pug    |    39 -
 .../frontend/app/primitives/btn/index.scss         |   375 -
 .../frontend/app/primitives/checkbox/index.scss    |    32 -
 .../frontend/app/primitives/datepicker/index.pug   |    65 -
 .../frontend/app/primitives/datepicker/index.scss  |    42 -
 .../frontend/app/primitives/dropdown/index.pug     |    42 -
 .../frontend/app/primitives/dropdown/index.scss    |    79 -
 .../app/primitives/form-field/checkbox.pug         |    31 -
 .../app/primitives/form-field/dropdown.pug         |    59 -
 .../frontend/app/primitives/form-field/email.pug   |    38 -
 .../frontend/app/primitives/form-field/error.pug   |    30 -
 .../frontend/app/primitives/form-field/index.pug   |    29 -
 .../frontend/app/primitives/form-field/index.scss  |   706 -
 .../frontend/app/primitives/form-field/input.pug   |    29 -
 .../frontend/app/primitives/form-field/label.pug   |    31 -
 .../frontend/app/primitives/form-field/number.pug  |    48 -
 .../app/primitives/form-field/password.pug         |    53 -
 .../frontend/app/primitives/form-field/phone.pug   |    37 -
 .../frontend/app/primitives/form-field/radio.pug   |    32 -
 .../frontend/app/primitives/form-field/text.pug    |    36 -
 .../frontend/app/primitives/form-field/tooltip.pug |    26 -
 .../app/primitives/form-field/typeahead.pug        |    55 -
 .../frontend/app/primitives/grid/index.scss        |    42 -
 .../web-console/frontend/app/primitives/index.js   |    37 -
 .../frontend/app/primitives/modal/index.scss       |   269 -
 .../frontend/app/primitives/page/index.scss        |    34 -
 .../frontend/app/primitives/panel/index.scss       |   132 -
 .../app/primitives/spinner-circle/index.scss       |    59 -
 .../frontend/app/primitives/switcher/index.pug     |    20 -
 .../frontend/app/primitives/switcher/index.scss    |   119 -
 .../frontend/app/primitives/table/index.scss       |    90 -
 .../frontend/app/primitives/tabs/index.scss        |    95 -
 .../frontend/app/primitives/timepicker/index.pug   |    63 -
 .../frontend/app/primitives/timepicker/index.scss  |    90 -
 .../frontend/app/primitives/tooltip/index.scss     |    40 -
 .../frontend/app/primitives/typography/index.scss  |    36 -
 .../app/primitives/ui-grid-header/index.scss       |   133 -
 .../app/primitives/ui-grid-header/index.tpl.pug    |    37 -
 .../app/primitives/ui-grid-settings/index.scss     |   272 -
 .../frontend/app/primitives/ui-grid/index.scss     |   554 -
 .../app/services/AngularStrapSelect.decorator.js   |    78 -
 .../app/services/AngularStrapTooltip.decorator.js  |   103 -
 modules/web-console/frontend/app/services/CSV.js   |    22 -
 .../frontend/app/services/ChartColors.service.js   |    22 -
 .../frontend/app/services/Confirm.service.js       |   118 -
 .../frontend/app/services/ConfirmBatch.service.js  |   101 -
 .../app/services/CopyToClipboard.service.js        |    62 -
 .../frontend/app/services/Countries.service.js     |    43 -
 .../frontend/app/services/DefaultState.js          |    39 -
 .../frontend/app/services/ErrorParser.service.js   |    89 -
 .../frontend/app/services/ErrorPopover.service.js  |   125 -
 .../frontend/app/services/Focus.service.js         |    41 -
 .../frontend/app/services/FormUtils.service.js     |   464 -
 .../frontend/app/services/InetAddress.service.js   |    55 -
 .../frontend/app/services/JavaTypes.service.js     |   163 -
 .../frontend/app/services/JavaTypes.spec.js        |   120 -
 .../frontend/app/services/LegacyTable.service.js   |   235 -
 .../frontend/app/services/LegacyUtils.service.js   |   556 -
 .../frontend/app/services/Messages.service.js      |    75 -
 .../app/services/ModelNormalizer.service.js        |    61 -
 .../frontend/app/services/SqlTypes.service.js      |    67 -
 .../frontend/app/services/Version.service.js       |   198 -
 .../frontend/app/services/Version.spec.js          |   106 -
 .../frontend/app/services/exceptionHandler.js      |    36 -
 modules/web-console/frontend/app/services/index.js |    25 -
 modules/web-console/frontend/app/services/store.ts |    73 -
 .../web-console/frontend/app/store/actions/ui.ts   |    36 -
 .../web-console/frontend/app/store/actions/user.ts |    24 -
 .../web-console/frontend/app/store/effects/ui.ts   |    32 -
 modules/web-console/frontend/app/store/index.ts    |    48 -
 modules/web-console/frontend/app/store/ofType.ts   |    26 -
 .../web-console/frontend/app/store/reducers/ui.ts  |    50 -
 .../web-console/frontend/app/store/reduxDebug.ts   |    45 -
 .../frontend/app/store/reduxDevtoolsIntegration.js |    80 -
 .../web-console/frontend/app/store/selectors/ui.ts |    29 -
 modules/web-console/frontend/app/style.scss        |    22 -
 modules/web-console/frontend/app/types/index.ts    |    82 -
 .../frontend/app/utils/SimpleWorkerPool.js         |   115 -
 .../web-console/frontend/app/utils/dialogState.ts  |    56 -
 modules/web-console/frontend/app/utils/id8.js      |    20 -
 .../web-console/frontend/app/utils/lodashMixins.js |    23 -
 .../web-console/frontend/app/utils/uniqueName.js   |    27 -
 modules/web-console/frontend/app/vendor.js         |    59 -
 modules/web-console/frontend/index.js              |    23 -
 modules/web-console/frontend/package-lock.json     | 14224 -------------------
 modules/web-console/frontend/package.json          |   147 -
 modules/web-console/frontend/public/favicon.ico    |   Bin 1150 -> 0 bytes
 .../web-console/frontend/public/images/cache.png   |   Bin 15087 -> 0 bytes
 .../frontend/public/images/checkbox-active.svg     |    25 -
 .../frontend/public/images/checkbox.svg            |    22 -
 .../frontend/public/images/cluster-quick.png       |   Bin 16407 -> 0 bytes
 .../web-console/frontend/public/images/cluster.png |   Bin 24083 -> 0 bytes
 .../frontend/public/images/collapse.svg            |     3 -
 .../web-console/frontend/public/images/domains.png |   Bin 17899 -> 0 bytes
 .../web-console/frontend/public/images/expand.svg  |     3 -
 .../frontend/public/images/icons/alert.icon.svg    |     1 -
 .../public/images/icons/attention.icon.svg         |     3 -
 .../frontend/public/images/icons/check.icon.svg    |     3 -
 .../public/images/icons/checkmark.icon.svg         |     3 -
 .../frontend/public/images/icons/clock.icon.svg    |     1 -
 .../frontend/public/images/icons/cluster.icon.svg  |    10 -
 .../frontend/public/images/icons/collapse.icon.svg |     3 -
 .../frontend/public/images/icons/copy.icon.svg     |     3 -
 .../frontend/public/images/icons/cross.icon.svg    |     1 -
 .../frontend/public/images/icons/csv.icon.svg      |     1 -
 .../frontend/public/images/icons/download.icon.svg |     2 -
 .../public/images/icons/downloadAgent.icon.svg     |    16 -
 .../public/images/icons/exclamation.icon.svg       |     3 -
 .../frontend/public/images/icons/exit.icon.svg     |     3 -
 .../frontend/public/images/icons/expand.icon.svg   |     3 -
 .../public/images/icons/eyeClosed.icon.svg         |     6 -
 .../public/images/icons/eyeOpened.icon.svg         |     7 -
 .../frontend/public/images/icons/filter.icon.svg   |     1 -
 .../frontend/public/images/icons/gear.icon.svg     |     1 -
 .../frontend/public/images/icons/home.icon.svg     |     3 -
 .../frontend/public/images/icons/index.js          |    48 -
 .../frontend/public/images/icons/info.icon.svg     |     3 -
 .../public/images/icons/lockClosed.icon.svg        |     3 -
 .../public/images/icons/lockOpened.icon.svg        |     3 -
 .../frontend/public/images/icons/manual.icon.svg   |     1 -
 .../frontend/public/images/icons/menu.icon.svg     |     7 -
 .../frontend/public/images/icons/plus.icon.svg     |     2 -
 .../frontend/public/images/icons/refresh.icon.svg  |     1 -
 .../frontend/public/images/icons/search.icon.svg   |     1 -
 .../frontend/public/images/icons/sort.icon.svg     |     1 -
 .../frontend/public/images/icons/sql.icon.svg      |     3 -
 .../public/images/icons/structure.icon.svg         |     3 -
 .../web-console/frontend/public/images/igfs.png    |   Bin 14683 -> 0 bytes
 .../frontend/public/images/ignite-logo.svg         |    17 -
 .../frontend/public/images/ignite-puzzle.png       |   Bin 71974 -> 0 bytes
 .../frontend/public/images/multicluster.png        |   Bin 31178 -> 0 bytes
 .../public/images/page-landing-ui-sample.png       |   Bin 20468 -> 0 bytes
 .../frontend/public/images/pb-ignite.png           |   Bin 3493 -> 0 bytes
 .../web-console/frontend/public/images/preview.png |   Bin 29829 -> 0 bytes
 .../frontend/public/images/query-table.png         |   Bin 19943 -> 0 bytes
 .../public/stylesheets/_bootstrap-custom.scss      |    64 -
 .../public/stylesheets/_bootstrap-variables.scss   |   891 --
 .../public/stylesheets/_font-awesome-custom.scss   |   104 -
 .../frontend/public/stylesheets/blocks/error.scss  |    31 -
 .../frontend/public/stylesheets/form-field.scss    |   145 -
 .../frontend/public/stylesheets/style.scss         |  2171 ---
 .../frontend/public/stylesheets/variables.scss     |    39 -
 .../frontend/test/check-doc-links/Dockerfile       |    31 -
 .../test/check-doc-links/check-doc-links.js        |   151 -
 .../test/check-doc-links/docker-compose.yml        |    25 -
 modules/web-console/frontend/test/ci/.dockerignore |     4 -
 modules/web-console/frontend/test/ci/Dockerfile    |    34 -
 .../frontend/test/ci/docker-compose.yml            |    25 -
 modules/web-console/frontend/test/karma.conf.js    |   112 -
 .../frontend/test/unit/SqlTypes.test.js            |    52 -
 .../frontend/test/unit/UserAuth.test.js            |    37 -
 .../frontend/test/unit/defaultName.filter.test.js  |    40 -
 modules/web-console/frontend/tsconfig.json         |    15 -
 modules/web-console/frontend/views/base.pug        |    23 -
 modules/web-console/frontend/views/index.pug       |    45 -
 modules/web-console/frontend/views/public.pug      |    20 -
 .../frontend/views/sql/cache-metadata.tpl.pug      |    41 -
 .../frontend/views/sql/chart-settings.tpl.pug      |    40 -
 .../frontend/views/sql/paragraph-rate.tpl.pug      |    46 -
 .../views/templates/agent-download.tpl.pug         |    69 -
 .../frontend/views/templates/alert.tpl.pug         |    21 -
 .../frontend/views/templates/batch-confirm.tpl.pug |    47 -
 .../frontend/views/templates/confirm.tpl.pug       |    34 -
 .../frontend/views/templates/demo-info.tpl.pug     |    53 -
 .../frontend/views/templates/dropdown.tpl.pug      |    24 -
 .../views/templates/getting-started.tpl.pug        |    39 -
 .../frontend/views/templates/message.tpl.pug       |    32 -
 .../views/templates/validation-error.tpl.pug       |    25 -
 .../web-console/frontend/webpack/webpack.common.js |   163 -
 .../web-console/frontend/webpack/webpack.dev.js    |    97 -
 .../web-console/frontend/webpack/webpack.prod.js   |    61 -
 .../web-console/frontend/webpack/webpack.test.js   |    45 -
 modules/web-console/licenses/apache-2.0.txt        |   202 -
 modules/web-console/licenses/cc-by-3.0.txt         |   319 -
 modules/web-console/pom.xml                        |   431 -
 .../console/configuration/FieldProcessingInfo.java |    89 -
 .../ignite/console/configuration/MetadataInfo.java |    69 -
 .../WebConsoleConfigurationSelfTest.java           |  1118 --
 .../ignite/console/configuration/WrongFields.java  |    76 -
 .../console/testsuites/WebConsoleTestSuite.java    |    32 -
 modules/web-console/web-agent/.gitignore           |     2 -
 modules/web-console/web-agent/README.txt           |   123 -
 .../web-agent/assembly/release-web-agent.xml       |    66 -
 .../web-console/web-agent/bin/ignite-web-agent.bat |   143 -
 .../web-console/web-agent/bin/ignite-web-agent.sh  |    91 -
 .../web-console/web-agent/bin/include/functions.sh |    83 -
 modules/web-console/web-agent/demo/README.txt      |     4 -
 modules/web-console/web-agent/demo/db-init.sql     |   102 -
 .../web-console/web-agent/jdbc-drivers/README.txt  |    10 -
 modules/web-console/web-agent/logs/README.txt      |     5 -
 modules/web-console/web-agent/pom.xml              |   213 -
 .../ignite/console/agent/AgentConfiguration.java   |   619 -
 .../apache/ignite/console/agent/AgentLauncher.java |   518 -
 .../apache/ignite/console/agent/AgentUtils.java    |   333 -
 .../ignite/console/agent/ProxyAuthException.java   |    42 -
 .../ignite/console/agent/ProxyAuthenticator.java   |    82 -
 .../apache/ignite/console/agent/db/DbColumn.java   |    95 -
 .../ignite/console/agent/db/DbMetadataReader.java  |   142 -
 .../apache/ignite/console/agent/db/DbSchema.java   |    60 -
 .../apache/ignite/console/agent/db/DbTable.java    |    87 -
 .../agent/db/dialect/DB2MetadataDialect.java       |    33 -
 .../agent/db/dialect/DatabaseMetadataDialect.java  |   127 -
 .../agent/db/dialect/JdbcMetadataDialect.java      |   246 -
 .../agent/db/dialect/MySQLMetadataDialect.java     |    88 -
 .../agent/db/dialect/OracleMetadataDialect.java    |   425 -
 .../console/agent/handlers/AbstractListener.java   |   136 -
 .../console/agent/handlers/ClusterListener.java    |   525 -
 .../console/agent/handlers/DatabaseListener.java   |   354 -
 .../console/agent/handlers/RestListener.java       |   100 -
 .../ignite/console/agent/rest/RestExecutor.java    |   409 -
 .../ignite/console/agent/rest/RestResult.java      |   114 -
 .../ignite/console/demo/AgentClusterDemo.java      |   318 -
 .../apache/ignite/console/demo/AgentDemoUtils.java |    79 -
 .../ignite/console/demo/AgentMetadataDemo.java     |    99 -
 .../org/apache/ignite/console/demo/model/Car.java  |   152 -
 .../apache/ignite/console/demo/model/Country.java  |   152 -
 .../ignite/console/demo/model/Department.java      |   152 -
 .../apache/ignite/console/demo/model/Employee.java |   356 -
 .../apache/ignite/console/demo/model/Parking.java  |   152 -
 .../demo/service/DemoCachesLoadService.java        |   498 -
 .../demo/service/DemoComputeLoadService.java       |    78 -
 .../demo/service/DemoRandomCacheLoadService.java   |   121 -
 .../demo/service/DemoServiceClusterSingleton.java  |    41 -
 .../demo/service/DemoServiceKeyAffinity.java       |    41 -
 .../demo/service/DemoServiceMultipleInstances.java |    41 -
 .../demo/service/DemoServiceNodeSingleton.java     |    41 -
 .../console/demo/task/DemoCancellableTask.java     |    93 -
 .../ignite/console/demo/task/DemoComputeTask.java  |   105 -
 .../web-agent/src/main/resources/log4j.properties  |    52 -
 .../console/agent/rest/RestExecutorSelfTest.java   |   328 -
 .../ignite/testsuites/IgniteWebAgentTestSuite.java |    33 -
 .../web-agent/src/test/resources/ca.jks            |   Bin 1394 -> 0 bytes
 .../web-agent/src/test/resources/client.jks        |   Bin 2030 -> 0 bytes
 .../web-agent/src/test/resources/generate.bat      |   122 -
 .../web-agent/src/test/resources/generate.sh       |   111 -
 .../src/test/resources/jetty-with-ciphers-0.xml    |    94 -
 .../src/test/resources/jetty-with-ciphers-1.xml    |    94 -
 .../src/test/resources/jetty-with-ciphers-2.xml    |    94 -
 .../src/test/resources/jetty-with-ssl.xml          |    89 -
 .../web-agent/src/test/resources/server.jks        |   Bin 1419 -> 0 bytes
 parent/pom.xml                                     |    16 -
 pom.xml                                            |    10 -
 1084 files changed, 118962 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2e01d60..dea16dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,7 +67,6 @@ ipch/
 !/bin
 !/modules/core/src/test/bin
 !/modules/sqlline/bin
-!/modules/web-console/web-agent/bin
 [Dd]ebug*/
 [Rr]elease*/
 packages
diff --git a/assembly/dependencies-apache-ignite-lgpl.xml b/assembly/dependencies-apache-ignite-lgpl.xml
index fe2932e..7337210 100644
--- a/assembly/dependencies-apache-ignite-lgpl.xml
+++ b/assembly/dependencies-apache-ignite-lgpl.xml
@@ -132,7 +132,6 @@
                 <exclude>org.apache.ignite:ignite-cassandra</exclude>
                 <exclude>org.apache.ignite:ignite-yardstick</exclude>
                 <exclude>org.apache.ignite:ignite-benchmarks</exclude>
-                <exclude>org.apache.ignite:ignite-web-agent</exclude>
                 <exclude>org.apache.ignite:ignite-dev-utils</exclude>
                 <exclude>org.apache.ignite:ignite-extdata-platform</exclude>
                 <exclude>org.apache.ignite:ignite-compatibility</exclude>
diff --git a/assembly/dependencies-apache-ignite-slim.xml b/assembly/dependencies-apache-ignite-slim.xml
index 25c2497..a4122f8 100644
--- a/assembly/dependencies-apache-ignite-slim.xml
+++ b/assembly/dependencies-apache-ignite-slim.xml
@@ -138,7 +138,6 @@
                 <exclude>org.apache.ignite:ignite-cassandra</exclude>
                 <exclude>org.apache.ignite:ignite-yardstick</exclude>
                 <exclude>org.apache.ignite:ignite-benchmarks</exclude>
-                <exclude>org.apache.ignite:ignite-web-agent</exclude>
                 <exclude>org.apache.ignite:ignite-dev-utils</exclude>
                 <exclude>org.apache.ignite:ignite-extdata-platform</exclude>
                 <exclude>org.apache.ignite:ignite-compatibility</exclude>
diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml
index fa02927..029f7ab 100644
--- a/assembly/dependencies-apache-ignite.xml
+++ b/assembly/dependencies-apache-ignite.xml
@@ -138,7 +138,6 @@
                 <exclude>org.apache.ignite:ignite-cassandra</exclude>
                 <exclude>org.apache.ignite:ignite-yardstick</exclude>
                 <exclude>org.apache.ignite:ignite-benchmarks</exclude>
-                <exclude>org.apache.ignite:ignite-web-agent</exclude>
                 <exclude>org.apache.ignite:ignite-dev-utils</exclude>
                 <exclude>org.apache.ignite:ignite-extdata-platform</exclude>
                 <exclude>org.apache.ignite:ignite-compatibility</exclude>
diff --git a/docker/web-agent/Dockerfile b/docker/web-agent/Dockerfile
deleted file mode 100644
index 7e45ad3..0000000
--- a/docker/web-agent/Dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Start from Java 8 based on Alpine Linux image (~5Mb)
-FROM openjdk:8-jre-alpine
-
-# Provide default arguments
-ARG DEFAULT_DRIVER_FOLDER="/opt/ignite/drivers"
-ARG DEFAULT_NODE_URI="http://localhost:8080"
-ARG DEFAULT_SERVER_URI="http://localhost"
-ARG DEFAULT_TOKENS="NO_TOKENS"
-
-ENV DRIVER_FOLDER=$DEFAULT_DRIVER_FOLDER
-ENV NODE_URI=$DEFAULT_NODE_URI
-ENV SERVER_URI=$DEFAULT_SERVER_URI
-ENV TOKENS=$DEFAULT_TOKENS
-
-# Settings
-USER root
-ENV AGENT_HOME /opt/ignite/ignite-web-agent
-WORKDIR ${AGENT_HOME} 
-
-# Add missing software
-RUN apk --no-cache \
-    add bash
-
-# Copy main binary archive
-COPY ignite-web-agent* ./
-
-# Entrypoint
-CMD ./ignite-web-agent.sh -d ${DRIVER_FOLDER} -n ${NODE_URI} -s ${SERVER_URI} -t ${TOKENS}
-
diff --git a/docker/web-agent/README.txt b/docker/web-agent/README.txt
deleted file mode 100644
index 376e333..0000000
--- a/docker/web-agent/README.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Apache Ignite Web Agent Docker module
-=====================================
-Apache Ignite Web Agent Docker module provides Dockerfile and accompanying files
-for building docker image of Web Agent.
-
-
-Build image
-===========
-1) Build Apache Ignite Web Console module
-
-        mvn clean install -T 2C \
-                          -Pall-java,all-scala,licenses,web-console \
-                          -pl :ignite-web-console -am \
-                          -DskipTests
-
-2) Go to Apache Ignite Web Console Docker module directory and copy Apache
-   Ignite Web Agent's binary archive
-
-        cd docker/web-agent
-        cp -rfv ../../modules/web-console/web-agent/target/ignite-web-agent-*.zip ./
-
-3) Unpack and remove Apache Ignite Web Agent's binary archive
-
-        unzip ignite-web-agent-*.zip
-        rm -rf ignite-web-agent-*.zip
-
-4) Build docker image
-
-        docker build . -t apacheignite/web-agent[:<version>]
-
-   Prepared image will be available in local docker registry (can be seen
-   issuing `docker images` command)
-
-5) Clean up
-
-        rm -rf ignite-web-agent*
diff --git a/docker/web-console/standalone/Dockerfile b/docker/web-console/standalone/Dockerfile
deleted file mode 100644
index bd03c7d..0000000
--- a/docker/web-console/standalone/Dockerfile
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#~~~~~~~~~~~~~~~~~~#
-#  Frontend build  #
-#~~~~~~~~~~~~~~~~~~#
-FROM node:10-stretch as frontend-build
-
-ENV NPM_CONFIG_LOGLEVEL error
-
-WORKDIR /opt/web-console
-
-# Install node modules and build sources
-COPY frontend frontend
-RUN cd frontend && \
-    npm install --no-optional && \
-    npm run build
-
-
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
-#  Web Console Standalone assemble  #
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
-FROM node:10-stretch
-
-ENV NPM_CONFIG_LOGLEVEL error
-
-# Install global node packages
-RUN npm install -g pm2
-
-# Update software sources and install missing applications
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
-    && echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
-    apt update && \
-    apt install -y --no-install-recommends \
-        nginx-light \
-        mongodb-org-server \
-        dos2unix && \
-    apt-get clean && \
-    rm -rf /var/lib/apt/lists/*
-
-WORKDIR /opt/web-console
-
-# Install node modules for backend
-COPY backend/package*.json backend/
-RUN cd backend && \
-    npm install --no-optional --production
-
-# Copy and build sources
-COPY backend backend
-RUN cd backend && \
-    npm run build
-
-# Copy Ignite Web Agent module package
-COPY ignite-web-agent-*.zip backend/agent_dists
-
-# Copy previously built frontend
-COPY --from=frontend-build /opt/web-console/frontend/build static
-
-# Copy and fix entrypoint script
-COPY docker-entrypoint.sh docker-entrypoint.sh
-RUN chmod +x docker-entrypoint.sh \
-    && dos2unix docker-entrypoint.sh
-
-# Copy nginx configuration
-COPY nginx/* /etc/nginx/
-
-EXPOSE 80
-
-ENTRYPOINT ["/opt/web-console/docker-entrypoint.sh"]
-
diff --git a/docker/web-console/standalone/README.txt b/docker/web-console/standalone/README.txt
deleted file mode 100644
index c97e792..0000000
--- a/docker/web-console/standalone/README.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Apache Ignite Web Console Standalone Docker module
-==================================================
-Apache Ignite Web Console Standalone Docker module provides Dockerfile and accompanying files
-for building docker image of Web Console.
-
-
-Ignite Web Console Standalone Docker Image Build Instructions
-=============================================================
-1) Build ignite-web-console module
-
-        mvn clean install -P web-console -DskipTests -T 2C -pl :ignite-web-console -am
-
-2) Copy ignite-web-agent-<version>.zip from 'modules/web-console/web-agent/target'
-   to 'docker/web-console/standalone' directory
-
-        cp -rf modules/web-console/web-agent/target/ignite-web-agent-*.zip docker/web-console/standalone
-
-3) Go to Apache Ignite Web Console Docker module directory and copy Apache
-   Ignite Web Console's frontend and backend directory
-
-        cd docker/web-console/standalone
-        cp -rf ../../../modules/web-console/backend ./
-        cp -rf ../../../modules/web-console/frontend ./
-
-4) Build docker image
-
-        docker build . -t apacheignite/web-console-standalone:[:<version>]
-
-   Prepared image will be available in local docker registry (can be seen
-   issuing `docker images` command)
-
-5) Clean up
-
-        rm -rf backend frontend ignite-web-agent*
-
diff --git a/docker/web-console/standalone/docker-entrypoint.sh b/docker/web-console/standalone/docker-entrypoint.sh
deleted file mode 100644
index 6757de6..0000000
--- a/docker/web-console/standalone/docker-entrypoint.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-/usr/bin/mongod --fork --config=/etc/mongod.conf
-
-service nginx start
-
-cd backend && pm2 start ./index.js --no-daemon
diff --git a/docker/web-console/standalone/nginx/nginx.conf b/docker/web-console/standalone/nginx/nginx.conf
deleted file mode 100644
index dbc79d7..0000000
--- a/docker/web-console/standalone/nginx/nginx.conf
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-user  www-data;
-worker_processes  1;
-
-error_log  /var/log/nginx/error.log  warn;
-pid        /var/run/nginx.pid;
-
-events {
-    worker_connections  128;
-}
-
-http {
-    server_tokens off;
-    sendfile            on;
-    tcp_nopush          on;
-
-    keepalive_timeout   60;
-    tcp_nodelay         on;
-
-    client_max_body_size 100m;
-
-    #access log
-    log_format main '$http_host $remote_addr - $remote_user [$time_local] '
-    '"$request" $status $bytes_sent '
-    '"$http_referer" "$http_user_agent" '
-    '"$gzip_ratio"';
-
-    include /etc/nginx/mime.types;
-    default_type  application/octet-stream;
-    gzip on;
-    gzip_disable "msie6";
-    gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss application/javascript;
-    gzip_vary on;
-    gzip_comp_level 5;
-
-    access_log  /var/log/nginx/access.log  main;
-    #conf.d
-    include web-console.conf ;
-}
diff --git a/docker/web-console/standalone/nginx/web-console.conf b/docker/web-console/standalone/nginx/web-console.conf
deleted file mode 100644
index caf171e..0000000
--- a/docker/web-console/standalone/nginx/web-console.conf
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-upstream backend-api {
-  server localhost:3000;
-}
-
-server {
-  listen 80;
-  server_name _;
-
-  set $ignite_console_dir /opt/web-console/static;
-
-  root $ignite_console_dir;
-
-  error_page 500 502 503 504 /50x.html;
-
-  location / {
-    try_files $uri /index.html = 404;
-  }
-
-  location /api/v1 {
-    proxy_set_header Host $http_host;
-    proxy_pass http://backend-api;
-  }
-
-  location /socket.io {
-    proxy_set_header Upgrade $http_upgrade;
-    proxy_set_header Connection "upgrade";
-    proxy_http_version 1.1;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $host;
-    proxy_pass http://backend-api;
-  }
-
-  location /agents {
-    proxy_set_header Upgrade $http_upgrade;
-    proxy_set_header Connection "upgrade";
-    proxy_http_version 1.1;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-    proxy_set_header Host $host;
-    proxy_pass http://backend-api;
-  }
-
-  location = /50x.html {
-    root $ignite_console_dir/error_page;
-  }
-}
diff --git a/modules/web-console/.dockerignore b/modules/web-console/.dockerignore
deleted file mode 100644
index 1958528..0000000
--- a/modules/web-console/.dockerignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.git
-*Dockerfile*
-*docker-compose*
-**/build/
-**/node_modules/
-**/target/
-!web-agent/target/*.zip
-**/backend/agent_dists/*.zip
-**/backend/config/*.json
-**/backend/test
\ No newline at end of file
diff --git a/modules/web-console/.gitignore b/modules/web-console/.gitignore
deleted file mode 100644
index e99ad51..0000000
--- a/modules/web-console/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.npmrc
-build/
-node_modules/
-package-lock.json
diff --git a/modules/web-console/DEVNOTES.txt b/modules/web-console/DEVNOTES.txt
deleted file mode 100644
index 417829e..0000000
--- a/modules/web-console/DEVNOTES.txt
+++ /dev/null
@@ -1,145 +0,0 @@
-Ignite Web Console Build Instructions
-=====================================
-1. Install MongoDB (version >=3.0) using instructions from http://docs.mongodb.org/manual/installation.
-2. Install Node.js (version >=8.0.0) using installer from https://nodejs.org/en/download/current for your OS.
-3. Change directory to 'modules/web-console/backend' and
- run "npm install --no-optional" for download backend dependencies.
-4. Change directory to 'modules/web-console/frontend' and
- run "npm install --no-optional" for download frontend dependencies.
-5. Build ignite-web-agent module follow instructions from 'modules/web-console/web-agent/README.txt'.
-6. Copy ignite-web-agent-<version>.zip from 'modules/web-console/web-agent/target'
- to 'modules/web-console/backend/agent_dists' folder.
-
-Steps 1 - 4 should be executed once.
-
-Ignite Web Console Run In Development Mode
-==========================================
-1. Configure MongoDB to run as service or in terminal change dir to $MONGO_INSTALL_DIR/server/3.2/bin
-  and start MongoDB by executing "mongod".
-
-2. In new terminal change directory to 'modules/web-console/backend'.
-   If needed run "npm install --no-optional" (if dependencies changed) and run "npm start" to start backend.
-
-3. In new terminal change directory to 'modules/web-console/frontend'.
-  If needed run "npm install --no-optional" (if dependencies changed) and start webpack in development mode "npm run dev".
-
-4. In browser open: http://localhost:9000
-
-How to migrate model:
-
-1. Model will be upgraded on first start.
-2. To downgrade model execute in terminal following command: "./node_modules/.bin/migrate down <migration-name> -d <dbConnectionUri>".
-   Example: "./node_modules/.bin/migrate down add_index -d mongodb://localhost/console".
-
-
-Ignite Web Console Direct-Install Maven Build Instructions
-==========================================================
-To build direct-install archive from sources run following command in Ignite project root folder:
-"mvn clean package -pl :ignite-web-console -am -P web-console,direct-install,lgpl -DskipTests=true -DskipClientDocs -Dmaven.javadoc.skip=true"
-
-Assembled archive can be found here: `modules/web-console/target/ignite-web-console-direct-install-*.zip`.
-
-
-Ignite Web Console Docker Images Build Instructions
-===================================================
-Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.
-
-To build docker images from sources run following command in Ignite project root folder:
-
-"mvn clean package -pl :ignite-web-console -am -P web-console,docker-image -DskipTests=true -DskipClientDocs -Dmaven.javadoc.skip=true"
-
-Prepared image can be listed with `docker images` command.
-
-
-Ignite Web Console Backend Docker Image Build Manual Instructions
-====================================================================
-Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.
-
-1. Build Apache Ignite Web Agent archive as described in `modules/web-console/web-agent/README.txt`.
-2. Goto Web Console's module directory: `cd modules/web-console`
-3. Build docker image:
-
-"docker build . -t apacheignite/web-console-backend[:<version>] -f docker/compose/backend/Dockerfile"
-
-Prepared image can be listed in `docker images` command output.
-
-
-Ignite Web Console Frontend Docker Image Build Manual Instructions
-====================================================================
-Install Docker (version >=17.05) using instructions from https://www.docker.com/community-edition.
-
-1. Build Apache Ignite Web Agent archive as described in `modules/web-console/web-agent/README.txt`.
-2. Goto Web Console's module directory: `cd modules/web-console`
-3. Build docker image:
-
-"docker build . -t apacheignite/web-console-frontend[:<version>] -f docker/compose/frontend/Dockerfile"
-
-Prepared image can be listed in `docker images` command output.
-
-
-End-to-end tests
-================
-E2E tests are performed with TestCafe framework - https://testcafe.devexpress.com
-
-To launch tests on your local machine you will need:
-1. Install and launch MongoDB.
-2. Optionally install Chromium (https://www.chromium.org/getting-involved/download-chromium or https://chromium.woolyss.com).
-   You may use any other browser, just set 'BROWSERS' constant in 'modules/web-console/e2e/testcafe/index.js'.
-3. In new terminal change directory to 'modules/web-console/e2e/testcafe' folder and execute: "npm install".
-4. To start test environment and tests execute: "npm run test".
-
-During developing tests you may need to run some particular tests without running all suites.
-For this case you need to run environment and test separately.
-To perform it do the following:
-1. Ensure that MongoDB is up and running and all dependencies for backend and frontend are installed.
-2. Open directory "modules/web-console/e2e/testcafe" in terminal. Install dependencies for E2E testing with "npm install" command.
-3. Execute command "npm run env". This will start backend and frontend environment.
-4. Open another terminal window and run command "node index.js" in the same directory. This will run only tests without launching environment.
-
-Please refer to TestCafe documentation at https://devexpress.github.io/testcafe/documentation/test-api/test-code-structure.html#skipping-tests
- upon how to specify which particular test should be run or skipped.
-
-You can modify the following params with environment variables:
-- DB_URL - connection string to test MongoDB. Default: mongodb://localhost/console-e2e
-- APP_URL - URL for test environment applications. Default: http://localhost:9001
-- REPORTER - Which "TestCafe" reporter to use. Set to 'teamcity' to use Teamcity reporter. Default: "spec" (native Testcafe reporter)
-
-You can run tests in docker:
-1. Install docker and docker-compose.
-2. Execute in terminal: "docker-compose up --build --abort-on-container-exit" in directory "modules/web-console/e2e".
-3. If you need to cleanup docker container then execute "docker-compose down".
-
-
-Frontend unit tests
-===================
-Unit tests are performed with Mocha framework - https://mochajs.org
-
-To launch tests on your local machine you will need:
-1. In new terminal change directory to 'modules/web-console/frontend' folder and execute: "npm install".
-2. To start test environment and tests execute: "npm run test".
-
-
-Backend unit tests
-==================
-Unit tests are performed with Mocha framework - https://mochajs.org
-
-To launch tests on your local machine you will need:
-1. In new terminal change directory to 'modules/web-console/backend' folder and execute: "npm install".
-2. To start test environment and tests execute: "npm run test".
-
-
-Web Console settings
-====================
-Web Console backend could be configured with custom parameters.
-
-See "backend/config/settings.json.sample" for list of parameters with example value.
-
-If you need custom parameters, you will need create "backend/config/settings.json" and adjust values.
-
-Web Console settings for Docker
-===============================
-Web Console backend could be configured with custom parameters.
-
-You may pass custom parameters with help of "-e" option.
-
-For example: docker run -e "server_disable_signup=true" -p 9090:80 $IMAGE_ID
diff --git a/modules/web-console/README.txt b/modules/web-console/README.txt
deleted file mode 100644
index 286082c..0000000
--- a/modules/web-console/README.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-Ignite Web Console
-======================================
-An Interactive Configuration Wizard and Management Tool for Apache Ignite
-
-The Apache Ignite Web Console includes an interactive configuration wizard which helps you create and download configuration
- files for your Apache Ignite cluster. The tool also provides management capabilities which allow you to run SQL queries
- on your in-memory cache as well as view execution plans, in-memory schema, and streaming charts.
-
-In order to simplify evaluation of Web Console demo mode was implemented.
- To start demo, you need to click button "Start demo". New tab will be open with prepared demo data on each screen.
-
- Demo for import domain model from database.
-  In this mode an in-memory H2 database will be started.
-  How to evaluate:
-    1) Go to Ignite Web Console "Domain model" screen.
-    2) Click "Import from database". You should see modal with demo description.
-    3) Click "Next" button. You should see list of available schemas.
-    4) Click "Next" button. You should see list of available tables.
-    5) Click "Next" button. You should see import options.
-    6) Select some of them and click "Save".
-
- Demo for SQL.
-   How to evaluate:
-    In this mode internal Ignite node will be started. Cache created and populated with data.
-     1) Click "SQL" in Ignite Web Console top menu.
-     2) "Demo" notebook with preconfigured queries will be opened.
-     3) You can also execute any SQL queries for tables: "Country, Department, Employee, Parking, Car".
-
- For example:
-  1) Enter SQL statement:
-      SELECT p.name, count(*) AS cnt FROM "ParkingCache".Parking p
-       INNER JOIN "CarCache".Car c ON (p.id) = (c.parkingId)
-       GROUP BY P.NAME
-  2) Click "Execute" button. You should get some data in table.
-  3) Click charts buttons to see auto generated charts.
-
diff --git a/modules/web-console/assembly/README.txt b/modules/web-console/assembly/README.txt
deleted file mode 100644
index e88e345..0000000
--- a/modules/web-console/assembly/README.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-Requirements
--------------------------------------
-1. JDK 8 suitable for your platform.
-2. Supported browsers: Chrome, Firefox, Safari, Edge.
-3. Ignite cluster should be started with `ignite-rest-http` module in classpath.
- For this copy `ignite-rest-http` folder from `libs\optional` to `libs` folder.
-
-How to run
--------------------------------------
-1. Unpack ignite-web-console-x.x.x.zip to some folder.
-2. Change work directory to folder where Web Console was unpacked.
-3. Start ignite-web-console-xxx executable for you platform:
-    For Linux: `sudo ./ignite-web-console-linux`
-    For macOS: `sudo ./ignite-web-console-macos`
-    For Windows: `ignite-web-console-win.exe`
-
-NOTE: For Linux and macOS `sudo` required because non-privileged users are not allowed to bind to privileged ports (port numbers below 1024).
-
-4. Open URL `localhost` in browser.
-5. Login with user `admin@admin` and password `admin`.
-6. Start web agent from folder `web agent`. For Web Agent settings see `web-agent\README.txt`.
-
-NOTE: Cluster URL should be specified in `web-agent\default.properties` in `node-uri` parameter.
-
-Technical details
--------------------------------------
-1. Package content:
-    `libs` - this folder contains Web Console and MongoDB binaries.
-    `user_data` - this folder contains all Web Console data (registered users, created objects, ...) and
-     should be preserved in case of update to new version.
-    `web-agent` - this folder contains Web Agent.
-2. Package already contains MongoDB for macOS, Windows, RHEL, CentOs and Ubuntu on other platforms MongoDB will be downloaded on first start. MongoDB executables will be downloaded to `libs\mogodb` folder.
-3. Web console will start on default HTTP port `80` and bind to all interfaces `0.0.0.0`.
-3. To bind Web Console to specific network interface:
-    On Linux: `./ignite-web-console-linux --server:host 192.168.0.1`
-    On macOS: `sudo ./ignite-web-console-macos --server:host 192.168.0.1`
-    On Windows: `ignite-web-console-win.exe --server:host 192.168.0.1`
-4. To start Web Console on another port, for example `3000`:
-    On Linux: `sudo ./ignite-web-console-linux --server:port 3000`
-    On macOS: `./ignite-web-console-macos --server:port 3000`
-    On Windows: `ignite-web-console-win.exe --server:port 3000`
-
-All available parameters with defaults:
-    Web Console host:                              --server:host 0.0.0.0
-    Web Console port:                              --server:port 80
-
-    Enable HTTPS:                                  --server:ssl false
-    Disable self registration:                     --server:disable:signup false
-
-    MongoDB URL:                                   --mongodb:url mongodb://localhost/console
-
-    Enable account activation:                     --activation:enabled false
-    Activation timeout(milliseconds):              --activation:timeout 1800000
-    Activation send email throttle (milliseconds): --activation:sendTimeout 180000
-
-    Mail service:                                  --mail:service "gmail"
-    Signature text:                                --mail:sign "Kind regards, Apache Ignite Team"
-    Greeting text:                                 --mail:greeting "Apache Ignite Web Console"
-    Mail FROM:                                     --mail:from "Apache Ignite Web Console <so...@somecompany.somedomain>"
-    User to send e-mail:                           --mail:auth:user "someusername@somecompany.somedomain"
-    E-mail service password:                       --mail:auth:pass ""
-
-SSL options has no default values:
-    --server:key "path to file with server.key"
-    --server:cert "path to file with server.crt"
-    --server:ca "path to file with ca.crt"
-    --server:passphrase "Password for key"
-    --server:ciphers "Comma separated ciphers list"
-    --server:secureProtocol "The TLS protocol version to use"
-    --server:clientCertEngine "Name of an OpenSSL engine which can provide the client certificate"
-    --server:pfx "Path to PFX or PKCS12 encoded private key and certificate chain"
-    --server:crl "Path to file with CRLs (Certificate Revocation Lists)"
-    --server:dhparam "Diffie Hellman parameters"
-    --server:ecdhCurve "A string describing a named curve"
-    --server:maxVersion "Optional the maximmu TLS version to allow"
-    --server:minVersion "Optional the minimum TLS version to allow"
-    --server:secureOptions "Optional OpenSSL options"
-    --server:sessionIdContext "Opaque identifier used by servers to ensure session state is not shared between applications"
-    --server:honorCipherOrder "true or false"
-    --server:requestCert "Set to true to specify whether a server should request a certificate from a connecting client"
-    --server:rejectUnauthorized "Set to true to automatically reject clients with invalid certificates"
-
-Documentation for SSL options: https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options
-
-Sample usages:
-    `ignite-web-console-win.exe --mail:auth:user "my_user@gmail.com" --mail:auth:pass "my_password"`
-    `ignite-web-console-win.exe --server:port 11443 --server:ssl true --server:requestCert true --server:key "server.key" --server:cert "server.crt" --server:ca "ca.crt" --server:passphrase "my_password"`
-
-Advanced configuration of SMTP for Web Console.
--------------------------------------
-1. Create sub-folder "config" in folder with Web Console executable.
-2. Create in config folder file "settings.json".
-3. Specify SMTP settings in settings.json (updating to your specific names and passwords):
-
-Sample "settings.json":
-{
-    "mail": {
-        "service": "gmail",
-        "greeting": "My Company Greeting",
-        "from": "My Company Web Console <so...@gmail.com>",
-        "sign": "Kind regards,<br>My Company Team",
-        "auth": {
-            "user": "some_name@gmail.com",
-            "pass": "my_password"
-        }
-    }
-}
-
-Web Console sends e-mails with help of NodeMailer: https://nodemailer.com.
-
-Documentation available here:
-   https://nodemailer.com/smtp
-   https://nodemailer.com/smtp/well-known
-
-In case of non GMail SMTP server it may require to change options in "settings.json" according to NodeMailer documentation.
-
-Troubleshooting
--------------------------------------
-1. On Windows check that MongoDB is not blocked by Antivirus/Firewall/Smartscreen.
-2. Root permission is required to bind to 80 port under macOS and Linux, but you may always start Web Console
-   on another port if you don't have such permission.
-3. For extended debug output start Web Console as following:
-     On Linux execute command in terminal: `DEBUG=mongodb-* ./ignite-web-console-linux`
-     On macOS execute command in terminal: `DEBUG=mongodb-* ./ignite-web-console-macos`
-     On Windows execute two commands in terminal:
-         `SET DEBUG=mongodb-*`
-         `ignite-web-console-win.exe`
diff --git a/modules/web-console/assembly/direct-install.xml b/modules/web-console/assembly/direct-install.xml
deleted file mode 100644
index d34cd07..0000000
--- a/modules/web-console/assembly/direct-install.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<assembly xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
-          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
-    <id>release-ignite-web-agent</id>
-
-    <formats>
-        <format>zip</format>
-    </formats>
-
-    <fileSets>
-        <fileSet>
-            <directory>${project.basedir}/target</directory>
-            <outputDirectory>/libs/agent_dists</outputDirectory>
-            <excludes>
-                <exclude>**/*</exclude>
-            </excludes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${project.basedir}/target</directory>
-            <outputDirectory>/libs/mongodb/mongodb-download</outputDirectory>
-            <excludes>
-                <exclude>**/*</exclude>
-            </excludes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${project.basedir}/target</directory>
-            <outputDirectory>/user_data</outputDirectory>
-            <excludes>
-                <exclude>**/*</exclude>
-            </excludes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${basedir}/assembly</directory>
-            <outputDirectory>/</outputDirectory>
-            <includes>
-                <include>**/README*</include>
-            </includes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${basedir}/backend/build</directory>
-            <outputDirectory>/</outputDirectory>
-            <includes>
-                <include>ignite-web-console-win.exe</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>${basedir}/backend/build</directory>
-            <outputDirectory>/</outputDirectory>
-            <fileMode>0755</fileMode>
-            <includes>
-                <include>ignite-web-console-*</include>
-            </includes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${basedir}/web-agent/target</directory>
-            <outputDirectory>/libs/agent_dists</outputDirectory>
-            <includes>
-                <include>ignite-web-agent-${project.version}.zip</include>
-            </includes>
-        </fileSet>
-
-        <fileSet>
-            <directory>${basedir}/frontend/build</directory>
-            <outputDirectory>/libs/frontend</outputDirectory>
-        </fileSet>
-    </fileSets>
-</assembly>
diff --git a/modules/web-console/backend/.eslintrc b/modules/web-console/backend/.eslintrc
deleted file mode 100644
index b288d07..0000000
--- a/modules/web-console/backend/.eslintrc
+++ /dev/null
@@ -1,169 +0,0 @@
-env:
-    es6: true
-    browser: false
-    mocha: true
-parserOptions:
-    sourceType: module
-    ecmaVersion: 2018
-
-rules:
-    arrow-parens: [1, "always"]
-    arrow-spacing: [1, { "before": true, "after": true }]
-    accessor-pairs: 2
-    block-scoped-var: 2
-    brace-style: [0, "1tbs"]
-    comma-dangle: [2, "never"]
-    comma-spacing: [2, {"before": false, "after": true}]
-    comma-style: [2, "last"]
-    complexity: [1, 40]
-    computed-property-spacing: [2, "never"]
-    consistent-return: 0
-    consistent-this: [0, "that"]
-    constructor-super: 2
-    curly: [2, "multi-or-nest"]
-    default-case: 2
-    dot-location: 0
-    dot-notation: [2, { "allowKeywords": true }]
-    eol-last: 2
-    eqeqeq: 2
-    func-names: 0
-    func-style: [0, "declaration"]
-    generator-star-spacing: 0
-    guard-for-in: 1
-    handle-callback-err: 0
-    id-length: [2, {"min": 1, "max": 60}]
-    indent: [2, 4, {"SwitchCase": 1, "MemberExpression": "off", "CallExpression": {"arguments": "off"}}]
-    key-spacing: [2, { "beforeColon": false, "afterColon": true }]
-    lines-around-comment: 0
-    linebreak-style: [0, "unix"]
-    max-depth: [0, 4]
-    max-len: [0, 120, 4]
-    max-nested-callbacks: [1, 4]
-    max-params: [0, 3]
-    max-statements: [0, 10]
-    new-cap: 2
-    new-parens: 2
-    no-alert: 2
-    no-array-constructor: 2
-    no-bitwise: 0
-    no-caller: 2
-    no-catch-shadow: 2
-    no-cond-assign: 2
-    no-console: 0
-    no-constant-condition: 2
-    no-continue: 0
-    no-class-assign: 2
-    no-const-assign: 2
-    no-control-regex: 2
-    no-debugger: 2
-    no-delete-var: 2
-    no-div-regex: 0
-    no-dupe-keys: 2
-    no-dupe-args: 2
-    no-duplicate-case: 2
-    no-else-return: 2
-    no-empty: 2
-    no-empty-character-class: 2
-    no-eq-null: 2
-    no-eval: 2
-    no-ex-assign: 2
-    no-extend-native: 2
-    no-extra-bind: 2
-    no-extra-boolean-cast: 2
-    no-extra-parens: 0
-    no-extra-semi: 2
-    no-fallthrough: 2
-    no-floating-decimal: 1
-    no-func-assign: 2
-    no-implied-eval: 2
-    no-inline-comments: 0
-    no-inner-declarations: [2, "functions"]
-    no-invalid-regexp: 2
-    no-irregular-whitespace: 2
-    no-iterator: 2
-    no-label-var: 2
-    no-labels: 2
-    no-lone-blocks: 2
-    no-lonely-if: 2
-    no-implicit-coercion: [2, {"boolean": false, "number": true, "string": true}]
-    no-loop-func: 2
-    no-mixed-requires: [0, false]
-    no-mixed-spaces-and-tabs: [2, true]
-    no-multi-spaces: ["error", {"exceptions": { "VariableDeclarator": true }}]
-    no-multi-str: 2
-    no-multiple-empty-lines: [0, {"max": 2}]
-    no-native-reassign: 2
-    no-negated-in-lhs: 2
-    no-nested-ternary: 0
-    no-new: 2
-    no-new-func: 2
-    no-new-object: 2
-    no-new-require: 0
-    no-new-wrappers: 2
-    no-obj-calls: 2
-    no-octal: 2
-    no-octal-escape: 2
-    no-param-reassign: 0
-    no-path-concat: 0
-    no-plusplus: 0
-    no-process-env: 0
-    no-process-exit: 0
-    no-proto: 2
-    no-redeclare: 2
-    no-regex-spaces: 1
-    no-restricted-modules: 0
-    no-script-url: 0
-    no-self-compare: 2
-    no-sequences: 2
-    no-shadow: 0
-    no-shadow-restricted-names: 2
-    no-spaced-func: 2
-    no-sparse-arrays: 1
-    no-sync: 0
-    no-ternary: 0
-    no-trailing-spaces: ["error", {"ignoreComments": true}]
-    no-throw-literal: 0
-    no-this-before-super: 2
-    no-unexpected-multiline: 2
-    // The rule produces undesired results with TS
-    // no-undef: 2
-    no-undef-init: 2
-    no-undefined: 2
-    no-unneeded-ternary: 2
-    no-unreachable: 2
-    no-unused-expressions: [2, { allowShortCircuit: true }]
-    no-unused-vars: [0, {"vars": "all", "args": "after-used"}]
-    typescript/no-unused-vars: [0]
-    no-useless-call: 2
-    no-void: 0
-    no-var: 2
-    no-warning-comments: 0
-    no-with: 2
-    newline-after-var: 0
-    object-shorthand: [2, "always"]
-    one-var: [2, "never"]
-    operator-assignment: [2, "always"]
-    operator-linebreak: 0
-    padded-blocks: 0
-    prefer-const: 1
-    prefer-spread: 2
-    quote-props: [2, "as-needed"]
-    quotes: [2, "single", {"allowTemplateLiterals": true}]
-    radix: 1
-    semi: [2, "always"]
-    semi-spacing: [2, {"before": false, "after": true}]
-    sort-vars: 0
-    keyword-spacing: 2
-    space-before-blocks: [2, "always"]
-    space-before-function-paren: [2, "never"]
-    space-in-parens: 0
-    space-infix-ops: 2
-    space-unary-ops: [2, { "words": true, "nonwords": false }]
-    spaced-comment: [1, "always", {"markers": ["/"]}]
-    use-isnan: 2
-    valid-jsdoc: 0
-    valid-typeof: 2
-    vars-on-top: 2
-    wrap-iife: 0
-    wrap-regex: 0
-    yoda: [2, "never"]
diff --git a/modules/web-console/backend/.gitignore b/modules/web-console/backend/.gitignore
deleted file mode 100644
index 73bd1a1..0000000
--- a/modules/web-console/backend/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-agent_dists/*.zip
-config/*.json
-!package-lock.json
diff --git a/modules/web-console/backend/agent_dists/README.txt b/modules/web-console/backend/agent_dists/README.txt
deleted file mode 100644
index e0a67c6..0000000
--- a/modules/web-console/backend/agent_dists/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Ignite Web Console
-======================================
-
-This is a default directory for agent distributions.
-
-A custom directory can be set in `backend/config/settings.json`.
diff --git a/modules/web-console/backend/app/agentSocket.js b/modules/web-console/backend/app/agentSocket.js
deleted file mode 100644
index 0df5c5e..0000000
--- a/modules/web-console/backend/app/agentSocket.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const _ = require('lodash');
-
-// Fire me up!
-
-/**
- * Module interaction with agents.
- */
-module.exports = {
-    implements: 'agent-socket'
-};
-
-/**
- * @returns {AgentSocket}
- */
-module.exports.factory = function() {
-    /**
-     * Connected agent descriptor.
-     */
-    class AgentSocket {
-        /**
-         * @param {Socket} socket Socket for interaction.
-         * @param {Object} accounts Active accounts.
-         * @param {Array.<String>} tokens Agent tokens.
-         * @param {String} demoEnabled Demo enabled.
-         */
-        constructor(socket, accounts, tokens, demoEnabled) {
-            Object.assign(this, {
-                accounts,
-                cluster: null,
-                demo: {
-                    enabled: demoEnabled,
-                    browserSockets: []
-                },
-                socket,
-                tokens
-            });
-        }
-
-        resetToken(oldToken) {
-            _.pull(this.tokens, oldToken);
-
-            this.emitEvent('agent:reset:token', oldToken)
-                .then(() => {
-                    if (_.isEmpty(this.tokens) && this.socket.connected)
-                        this.socket.close();
-                });
-        }
-
-        /**
-         * Send event to agent.
-         *
-         * @this {AgentSocket}
-         * @param {String} event Event name.
-         * @param {Array.<Object>} args - Transmitted arguments.
-         * @param {Function} [callback] on finish
-         */
-        _emit(event, args, callback) {
-            if (!this.socket.connected) {
-                if (callback)
-                    callback('org.apache.ignite.agent.AgentException: Connection is closed');
-
-                return;
-            }
-
-            this.socket.emit(event, ...args, callback);
-        }
-
-        /**
-         * Send event to agent.
-         *
-         * @param {String} event - Event name.
-         * @param {Object?} args - Transmitted arguments.
-         * @returns {Promise}
-         */
-        emitEvent(event, ...args) {
-            return new Promise((resolve, reject) =>
-                this._emit(event, args, (resErr, res) => {
-                    if (resErr)
-                        return reject(resErr);
-
-                    resolve(res);
-                })
-            );
-        }
-
-        restResultParse(res) {
-            if (res.status === 0)
-                return JSON.parse(res.data);
-
-            if (res.status === 2)
-                throw new Error('AgentSocket failed to authenticate in grid. Please check agent\'s login and password or node port.');
-
-            throw new Error(res.error);
-        }
-
-        /**
-         * @param {Socket} browserSocket
-         */
-        attachToDemoCluster(browserSocket) {
-            this.demo.browserSockets.push(...browserSocket);
-        }
-    }
-
-    return AgentSocket;
-};
diff --git a/modules/web-console/backend/app/agentsHandler.js b/modules/web-console/backend/app/agentsHandler.js
deleted file mode 100644
index f6e3da9..0000000
--- a/modules/web-console/backend/app/agentsHandler.js
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const uuid = require('uuid/v4');
-
-const fs = require('fs');
-const path = require('path');
-const JSZip = require('jszip');
-const socketio = require('socket.io');
-const _ = require('lodash');
-
-// Fire me up!
-
-/**
- * Module interaction with agents.
- */
-module.exports = {
-    implements: 'agents-handler',
-    inject: ['settings', 'mongo', 'agent-socket']
-};
-
-/**
- * @param settings
- * @param mongo
- * @param {AgentSocket} AgentSocket
- * @returns {AgentsHandler}
- */
-module.exports.factory = function(settings, mongo, AgentSocket) {
-    class AgentSockets {
-        constructor() {
-            /**
-             * @type {Map.<String, Array.<String>>}
-             */
-            this.sockets = new Map();
-        }
-
-        get(account) {
-            let sockets = this.sockets.get(account._id.toString());
-
-            if (_.isEmpty(sockets))
-                this.sockets.set(account._id.toString(), sockets = []);
-
-            return sockets;
-        }
-
-        /**
-         * @param {AgentSocket} sock
-         * @param {String} account
-         * @return {Array.<AgentSocket>}
-         */
-        add(account, sock) {
-            const sockets = this.get(account);
-
-            sockets.push(sock);
-        }
-
-        /**
-         * @param {Socket} browserSocket
-         * @return {AgentSocket}
-         */
-        find(browserSocket) {
-            const {_id} = browserSocket.request.user;
-
-            const sockets = this.sockets.get(_id);
-
-            return _.find(sockets, (sock) => _.includes(sock.demo.browserSockets, browserSocket));
-        }
-    }
-
-    class Cluster {
-        constructor(top) {
-            const clusterName = top.clusterName;
-
-            this.id = _.isEmpty(top.clusterId) ? uuid() : top.clusterId;
-            this.name = _.isEmpty(clusterName) ? `Cluster ${this.id.substring(0, 8).toUpperCase()}` : clusterName;
-            this.nids = top.nids;
-            this.addresses = top.addresses;
-            this.clients = top.clients;
-            this.clusterVersion = top.clusterVersion;
-            this.active = top.active;
-            this.secured = top.secured;
-        }
-
-        isSameCluster(top) {
-            return _.intersection(this.nids, top.nids).length > 0;
-        }
-
-        update(top) {
-            this.clusterVersion = top.clusterVersion;
-            this.nids = top.nids;
-            this.addresses = top.addresses;
-            this.clients = top.clients;
-            this.clusterVersion = top.clusterVersion;
-            this.active = top.active;
-            this.secured = top.secured;
-        }
-
-        same(top) {
-            return _.difference(this.nids, top.nids).length === 0 &&
-                _.isEqual(this.addresses, top.addresses) &&
-                this.clusterVersion === top.clusterVersion &&
-                this.active === top.active;
-        }
-    }
-
-    /**
-     * Connected agents manager.
-     */
-    class AgentsHandler {
-        /**
-         * @constructor
-         */
-        constructor() {
-            /**
-             * Connected agents.
-             * @type {AgentSockets}
-             */
-            this._agentSockets = new AgentSockets();
-
-            this.clusters = [];
-            this.topLsnrs = [];
-        }
-
-        /**
-         * Collect supported agents list.
-         * @private
-         */
-        _collectSupportedAgents() {
-            const jarFilter = (file) => path.extname(file) === '.jar';
-
-            const agentArchives = fs.readdirSync(settings.agent.dists)
-                .filter((file) => path.extname(file) === '.zip');
-
-            const agentsPromises = _.map(agentArchives, (fileName) => {
-                const filePath = path.join(settings.agent.dists, fileName);
-
-                return JSZip.loadAsync(fs.readFileSync(filePath))
-                    .then((zip) => {
-                        const jarPath = _.find(_.keys(zip.files), jarFilter);
-
-                        return JSZip.loadAsync(zip.files[jarPath].async('nodebuffer'))
-                            .then((jar) => jar.files['META-INF/MANIFEST.MF'].async('string'))
-                            .then((lines) =>
-                                _.reduce(lines.split(/\s*\n+\s*/), (acc, line) => {
-                                    if (!_.isEmpty(line)) {
-                                        const arr = line.split(/\s*:\s*/);
-
-                                        acc[arr[0]] = arr[1];
-                                    }
-
-                                    return acc;
-                                }, {}))
-                            .then((manifest) => {
-                                const ver = manifest['Implementation-Version'];
-                                const buildTime = manifest['Build-Time'];
-
-                                if (ver && buildTime)
-                                    return { fileName, filePath, ver, buildTime };
-                            });
-                    });
-            });
-
-            return Promise.all(agentsPromises)
-                .then((descs) => {
-                    const agentDescs = _.keyBy(_.remove(descs, null), 'ver');
-
-                    const latestVer = _.head(Object.keys(agentDescs).sort((a, b) => {
-                        const aParts = a.split('.');
-                        const bParts = b.split('.');
-
-                        for (let i = 0; i < aParts.length; ++i) {
-                            if (aParts[i] !== bParts[i])
-                                return aParts[i] < bParts[i] ? 1 : -1;
-                        }
-
-                        if (aParts.length === bParts.length)
-                            return 0;
-
-                        return aParts.length < bParts.length ? 1 : -1;
-                    }));
-
-                    // Latest version of agent distribution.
-                    if (latestVer)
-                        agentDescs.current = agentDescs[latestVer];
-
-                    return agentDescs;
-                });
-        }
-
-        getOrCreateCluster(top) {
-            let cluster = _.find(this.clusters, (c) => c.isSameCluster(top));
-
-            if (_.isNil(cluster)) {
-                cluster = new Cluster(top);
-
-                this.clusters.push(cluster);
-            }
-
-            return cluster;
-        }
-
-        /**
-         * Add topology listener.
-         *
-         * @param lsnr
-         */
-        addTopologyListener(lsnr) {
-            this.topLsnrs.push(lsnr);
-        }
-
-        /**
-         * Link agent with browsers by account.
-         *
-         * @param {Socket} sock
-         * @param {Array.<mongo.Account>} accounts
-         * @param {Array.<String>} tokens
-         * @param {boolean} demoEnabled
-         *
-         * @private
-         */
-        onConnect(sock, accounts, tokens, demoEnabled) {
-            const agentSocket = new AgentSocket(sock, accounts, tokens, demoEnabled);
-
-            _.forEach(accounts, (account) => {
-                this._agentSockets.add(account, agentSocket);
-
-                this._browsersHnd.agentStats(account);
-            });
-
-            sock.on('disconnect', () => {
-                _.forEach(accounts, (account) => {
-                    _.pull(this._agentSockets.get(account), agentSocket);
-
-                    this._browsersHnd.agentStats(account);
-                });
-            });
-
-            sock.on('cluster:topology', (top) => {
-                if (_.isNil(top)) {
-                    console.log('Invalid format of message: "cluster:topology"');
-
-                    return;
-                }
-
-                const cluster = this.getOrCreateCluster(top);
-
-                _.forEach(this.topLsnrs, (lsnr) => lsnr(agentSocket, cluster, top));
-
-                if (agentSocket.cluster !== cluster) {
-                    agentSocket.cluster = cluster;
-
-                    _.forEach(accounts, (account) => {
-                        this._browsersHnd.agentStats(account);
-                    });
-                }
-                else {
-                    const changed = !cluster.same(top);
-
-                    if (changed) {
-                        cluster.update(top);
-
-                        _.forEach(accounts, (account) => {
-                            this._browsersHnd.clusterChanged(account, cluster);
-                        });
-                    }
-                }
-            });
-
-            sock.on('cluster:disconnected', () => {
-                const newTop = _.assign({}, agentSocket.cluster, {nids: []});
-
-                _.forEach(this.topLsnrs, (lsnr) => lsnr(agentSocket, agentSocket.cluster, newTop));
-
-                agentSocket.cluster = null;
-
-                _.forEach(accounts, (account) => {
-                    this._browsersHnd.agentStats(account);
-                });
-            });
-
-            return agentSocket;
-        }
-
-        getAccounts(tokens) {
-            return mongo.Account.find({token: {$in: tokens}}, '_id token').lean().exec()
-                .then((accounts) => ({accounts, activeTokens: _.uniq(_.map(accounts, 'token'))}));
-        }
-
-        /**
-         * @param {http.Server|https.Server} srv Server instance that we want to attach agent handler.
-         * @param {BrowsersHandler} browsersHnd
-         */
-        attach(srv, browsersHnd) {
-            this._browsersHnd = browsersHnd;
-
-            this._collectSupportedAgents()
-                .then((supportedAgents) => {
-                    this.currentAgent = _.get(supportedAgents, 'current');
-
-                    if (this.io)
-                        throw 'Agent server already started!';
-
-                    this.io = socketio(srv, {path: '/agents'});
-
-                    this.io.on('connection', (sock) => {
-                        const sockId = sock.id;
-
-                        console.log('Connected agent with socketId: ', sockId);
-
-                        sock.on('disconnect', (reason) => {
-                            console.log(`Agent disconnected with [socketId=${sockId}, reason=${reason}]`);
-                        });
-
-                        sock.on('agent:auth', ({ver, bt, tokens, disableDemo} = {}, cb) => {
-                            console.log(`Received authentication request [socketId=${sockId}, tokens=${tokens}, ver=${ver}].`);
-
-                            if (_.isEmpty(tokens))
-                                return cb('Tokens not set. Please reload agent archive or check settings');
-
-                            if (ver && bt && !_.isEmpty(supportedAgents)) {
-                                const btDistr = _.get(supportedAgents, [ver, 'buildTime']);
-
-                                if (_.isEmpty(btDistr) || btDistr !== bt)
-                                    return cb('You are using an older version of the agent. Please reload agent');
-                            }
-
-                            return this.getAccounts(tokens)
-                                .then(({accounts, activeTokens}) => {
-                                    if (_.isEmpty(activeTokens))
-                                        return cb(`Failed to authenticate with token(s): ${tokens.join(',')}. Please reload agent archive or check settings`);
-
-                                    cb(null, activeTokens);
-
-                                    return this.onConnect(sock, accounts, activeTokens, !disableDemo);
-                                })
-                                // TODO IGNITE-1379 send error to web master.
-                                .catch(() => cb(`Invalid token(s): ${tokens.join(',')}. Please reload agent archive or check settings`));
-                        });
-                    });
-                })
-                .catch(() => {
-                    console.log('Failed to collect supported agents');
-                });
-        }
-
-        agent(account, demo, clusterId) {
-            if (!this.io)
-                return Promise.reject(new Error('Agent server not started yet!'));
-
-            const socks = this._agentSockets.get(account);
-
-            if (_.isEmpty(socks))
-                return Promise.reject(new Error('Failed to find connected agent for this account'));
-
-            if (demo) {
-                const sock = _.find(socks, (sock) => sock.demo.enabled);
-
-                if (sock)
-                    return Promise.resolve(sock);
-
-                return Promise.reject(new Error('Demo mode disabled by administrator'));
-            }
-
-            if (_.isNil(clusterId))
-                return Promise.resolve(_.head(socks));
-
-            const sock = _.find(socks, (agentSock) => _.get(agentSock, 'cluster.id') === clusterId);
-
-            if (_.isEmpty(sock))
-                return Promise.reject(new Error('Failed to find agent connected to cluster'));
-
-            return Promise.resolve(sock);
-        }
-
-        agents(account) {
-            if (!this.io)
-                return Promise.reject(new Error('Agent server not started yet!'));
-
-            const socks = this._agentSockets.get(account);
-
-            if (_.isEmpty(socks))
-                return Promise.reject(new Error('Failed to find connected agent for this token'));
-
-            return Promise.resolve(socks);
-        }
-
-        /**
-         * Try stop agent for token if not used by others.
-         *
-         * @param {mongo.Account} account
-         */
-        onTokenReset(account) {
-            if (_.isNil(this.io))
-                return;
-
-            const agentSockets = this._agentSockets.get(account);
-
-            _.forEach(agentSockets, (sock) => sock.resetToken(account.token));
-        }
-    }
-
-    return new AgentsHandler();
-};
diff --git a/modules/web-console/backend/app/apiServer.js b/modules/web-console/backend/app/apiServer.js
deleted file mode 100644
index 90c39ba..0000000
--- a/modules/web-console/backend/app/apiServer.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const fs = require('fs');
-const path = require('path');
-
-// Fire me up!
-
-const Express = require('express');
-
-module.exports = {
-    implements: 'api-server',
-    inject: ['settings', 'configure', 'routes'],
-    factory(settings, configure, routes) {
-        /**
-         * Connected agents manager.
-         */
-        class ApiServer {
-            /**
-             * @param {Server} srv
-             */
-            attach(srv) {
-                const app = new Express();
-
-                configure.express(app);
-
-                routes.register(app);
-
-                if (settings.packaged) {
-                    const staticDir = path.join(process.cwd(), 'libs/frontend');
-
-                    try {
-                        fs.accessSync(staticDir, fs.F_OK);
-
-                        app.use('/', Express.static(staticDir));
-
-                        app.get('*', function(req, res) {
-                            res.sendFile(path.join(staticDir, 'index.html'));
-                        });
-                    }
-                    catch (e) {
-                        console.log(`Failed to find folder with frontend files: ${staticDir}`);
-                    }
-                }
-
-                // Catch 404 and forward to error handler.
-                app.use((req, res) => {
-                    if (req.xhr)
-                        return res.status(404).send({ error: 'Not Found: ' + req.originalUrl });
-
-                    return res.sendStatus(404);
-                });
-
-                // Production error handler: no stacktraces leaked to user.
-                app.use((err, req, res) => {
-                    res.status(err.status || 500);
-
-                    res.render('error', {
-                        message: err.message,
-                        error: {}
-                    });
-                });
-
-                srv.addListener('request', app);
-
-                return app;
-            }
-        }
-
-        return new ApiServer();
-    }
-};
diff --git a/modules/web-console/backend/app/browsersHandler.js b/modules/web-console/backend/app/browsersHandler.js
deleted file mode 100644
index 4d5b02d..0000000
--- a/modules/web-console/backend/app/browsersHandler.js
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const _ = require('lodash');
-const socketio = require('socket.io');
-
-// Fire me up!
-
-/**
- * Module interaction with browsers.
- */
-module.exports = {
-    implements: 'browsers-handler',
-    inject: ['configure', 'errors', 'mongo'],
-    factory: (configure, errors, mongo) => {
-        class BrowserSockets {
-            constructor() {
-                this.sockets = new Map();
-            }
-
-            /**
-             * @param {Socket} sock
-             */
-            add(sock) {
-                const key = sock.request.user._id.toString();
-
-                if (this.sockets.has(key))
-                    this.sockets.get(key).push(sock);
-                else
-                    this.sockets.set(key, [sock]);
-
-                return this.sockets.get(sock.request.user);
-            }
-
-            /**
-             * @param {Socket} sock
-             */
-            remove(sock) {
-                const key = sock.request.user._id.toString();
-
-                const sockets = this.sockets.get(key);
-
-                _.pull(sockets, sock);
-
-                return sockets;
-            }
-
-            get(account) {
-                const key = account._id.toString();
-
-                let sockets = this.sockets.get(key);
-
-                if (_.isEmpty(sockets))
-                    this.sockets.set(key, sockets = []);
-
-                return sockets;
-            }
-        }
-
-        class BrowsersHandler {
-            /**
-             * @constructor
-             */
-            constructor() {
-                /**
-                 * Connected browsers.
-                 * @type {BrowserSockets}
-                 */
-                this._browserSockets = new BrowserSockets();
-
-                /**
-                 * Registered Visor task.
-                 * @type {Map}
-                 */
-                this._visorTasks = new Map();
-            }
-
-            /**
-             * @param {Error} err
-             * @return {{code: number, message: *}}
-             */
-            errorTransformer(err) {
-                return {
-                    code: err.code || 1,
-                    message: err.message || err
-                };
-            }
-
-            /**
-             * @param {String} account
-             * @param {Array.<Socket>} [socks]
-             */
-            agentStats(account, socks = this._browserSockets.get(account)) {
-                return this._agentHnd.agents(account)
-                    .then((agentSocks) => {
-                        const stat = _.reduce(agentSocks, (acc, agentSock) => {
-                            acc.count += 1;
-                            acc.hasDemo = acc.hasDemo || _.get(agentSock, 'demo.enabled');
-
-                            if (agentSock.cluster)
-                                acc.clusters.push(agentSock.cluster);
-
-                            return acc;
-                        }, {count: 0, hasDemo: false, clusters: []});
-
-                        stat.clusters = _.uniqWith(stat.clusters, _.isEqual);
-
-                        return stat;
-                    })
-                    .catch(() => ({count: 0, hasDemo: false, clusters: []}))
-                    .then((stat) => _.forEach(socks, (sock) => sock.emit('agents:stat', stat)));
-            }
-
-            clusterChanged(account, cluster) {
-                const socks = this._browserSockets.get(account);
-
-                _.forEach(socks, (sock) => {
-                    if (sock)
-                        sock.emit('cluster:changed', cluster);
-                    else
-                        console.log(`Fount closed socket [account=${account}, cluster=${cluster}]`);
-                });
-            }
-
-            pushInitialData(sock) {
-                // Send initial data.
-            }
-
-            emitNotification(sock) {
-                sock.emit('user:notifications', this.notification);
-            }
-
-            /**
-             * @param {String} notification Notification message.
-             */
-            updateNotification(notification) {
-                this.notification = notification;
-
-                for (const socks of this._browserSockets.sockets.values()) {
-                    for (const sock of socks)
-                        this.emitNotification(sock);
-                }
-            }
-
-            executeOnAgent(account, demo, event, ...args) {
-                const cb = _.last(args);
-
-                return this._agentHnd.agent(account, demo)
-                    .then((agentSock) => agentSock.emitEvent(event, ..._.dropRight(args)))
-                    .then((res) => cb(null, res))
-                    .catch((err) => cb(this.errorTransformer(err)));
-            }
-
-            agentListeners(sock) {
-                const demo = sock.request._query.IgniteDemoMode === 'true';
-                const account = () => sock.request.user;
-
-                // Return available drivers to browser.
-                sock.on('schemaImport:drivers', (...args) => {
-                    this.executeOnAgent(account(), demo, 'schemaImport:drivers', ...args);
-                });
-
-                // Return schemas from database to browser.
-                sock.on('schemaImport:schemas', (...args) => {
-                    this.executeOnAgent(account(), demo, 'schemaImport:schemas', ...args);
-                });
-
-                // Return tables from database to browser.
-                sock.on('schemaImport:metadata', (...args) => {
-                    this.executeOnAgent(account(), demo, 'schemaImport:metadata', ...args);
-                });
-            }
-
-            /**
-             * @param {Promise.<AgentSocket>} agent
-             * @param {Boolean} demo
-             * @param {{sessionId: String}|{'login': String, 'password': String}} credentials
-             * @param {Object.<String, String>} params
-             * @return {Promise.<T>}
-             */
-            executeOnNode(agent, token, demo, credentials, params) {
-                return agent
-                    .then((agentSock) => agentSock.emitEvent('node:rest',
-                        {uri: 'ignite', token, demo, params: _.merge({}, credentials, params)}));
-            }
-
-            registerVisorTask(taskId, taskCls, ...argCls) {
-                this._visorTasks.set(taskId, {
-                    taskCls,
-                    argCls
-                });
-            }
-
-            nodeListeners(sock) {
-                // Return command result from grid to browser.
-                sock.on('node:rest', (arg, cb) => {
-                    const {clusterId, params, credentials} = arg || {};
-
-                    if (!_.isFunction(cb))
-                        cb = console.log;
-
-                    const demo = _.get(sock, 'request._query.IgniteDemoMode') === 'true';
-
-                    if ((_.isNil(clusterId) && !demo) || _.isNil(params)) {
-                        console.log('Received invalid message: "node:rest" on socket:', JSON.stringify(sock.handshake));
-
-                        return cb('Invalid format of message: "node:rest"');
-                    }
-
-                    const agent = this._agentHnd.agent(sock.request.user, demo, clusterId);
-
-                    const token = sock.request.user.token;
-
-                    this.executeOnNode(agent, token, demo, credentials, params)
-                        .then((data) => cb(null, data))
-                        .catch((err) => cb(this.errorTransformer(err)));
-                });
-
-                const internalVisor = (postfix) => `org.apache.ignite.internal.visor.${postfix}`;
-
-                this.registerVisorTask('querySql', internalVisor('query.VisorQueryTask'), internalVisor('query.VisorQueryArg'));
-                this.registerVisorTask('querySqlV2', internalVisor('query.VisorQueryTask'), internalVisor('query.VisorQueryArgV2'));
-                this.registerVisorTask('querySqlV3', internalVisor('query.VisorQueryTask'), internalVisor('query.VisorQueryArgV3'));
-                this.registerVisorTask('querySqlX2', internalVisor('query.VisorQueryTask'), internalVisor('query.VisorQueryTaskArg'));
-
-                this.registerVisorTask('queryScanX2', internalVisor('query.VisorScanQueryTask'), internalVisor('query.VisorScanQueryTaskArg'));
-
-                this.registerVisorTask('queryFetch', internalVisor('query.VisorQueryNextPageTask'), 'org.apache.ignite.lang.IgniteBiTuple', 'java.lang.String', 'java.lang.Integer');
-                this.registerVisorTask('queryFetchX2', internalVisor('query.VisorQueryNextPageTask'), internalVisor('query.VisorQueryNextPageTaskArg'));
-
-                this.registerVisorTask('queryFetchFirstPage', internalVisor('query.VisorQueryFetchFirstPageTask'), internalVisor('query.VisorQueryNextPageTaskArg'));
-                this.registerVisorTask('queryPing', internalVisor('query.VisorQueryPingTask'), internalVisor('query.VisorQueryNextPageTaskArg'));
-
-                this.registerVisorTask('queryClose', internalVisor('query.VisorQueryCleanupTask'), 'java.util.Map', 'java.util.UUID', 'java.util.Set');
-                this.registerVisorTask('queryCloseX2', internalVisor('query.VisorQueryCleanupTask'), internalVisor('query.VisorQueryCleanupTaskArg'));
-
-                this.registerVisorTask('toggleClusterState', internalVisor('misc.VisorChangeGridActiveStateTask'), internalVisor('misc.VisorChangeGridActiveStateTaskArg'));
-
-                this.registerVisorTask('cacheNamesCollectorTask', internalVisor('cache.VisorCacheNamesCollectorTask'), 'java.lang.Void');
-
-                this.registerVisorTask('cacheNodesTask', internalVisor('cache.VisorCacheNodesTask'), 'java.lang.String');
-                this.registerVisorTask('cacheNodesTaskX2', internalVisor('cache.VisorCacheNodesTask'), internalVisor('cache.VisorCacheNodesTaskArg'));
-
-                // Return command result from grid to browser.
-                sock.on('node:visor', (arg, cb) => {
-                    const {clusterId, params, credentials} = arg || {};
-
-                    if (!_.isFunction(cb))
-                        cb = console.log;
-
-                    const demo = _.get(sock, 'request._query.IgniteDemoMode') === 'true';
-
-                    if ((_.isNil(clusterId) && !demo) || _.isNil(params)) {
-                        console.log('Received invalid message: "node:visor" on socket:', JSON.stringify(sock.handshake));
-
-                        return cb('Invalid format of message: "node:visor"');
-                    }
-
-                    const {taskId, nids, args = []} = params;
-
-                    const desc = this._visorTasks.get(taskId);
-
-                    if (_.isNil(desc))
-                        return cb(this.errorTransformer(new errors.IllegalArgumentException(`Failed to find Visor task for id: ${taskId}`)));
-
-                    const exeParams = {
-                        cmd: 'exe',
-                        name: 'org.apache.ignite.internal.visor.compute.VisorGatewayTask',
-                        p1: nids,
-                        p2: desc.taskCls
-                    };
-
-                    _.forEach(_.concat(desc.argCls, args), (param, idx) => { exeParams[`p${idx + 3}`] = param; });
-
-                    const agent = this._agentHnd.agent(sock.request.user, demo, clusterId);
-
-                    const token = sock.request.user.token;
-
-                    this.executeOnNode(agent, token, demo, credentials, exeParams)
-                        .then((data) => {
-                            if (data.finished && !data.zipped)
-                                return cb(null, data.result);
-
-                            return cb(null, data);
-                        })
-                        .catch((err) => cb(this.errorTransformer(err)));
-                });
-            }
-
-            /**
-             *
-             * @param server
-             * @param {AgentsHandler} agentHnd
-             */
-            attach(server, agentHnd) {
-                this._agentHnd = agentHnd;
-
-                if (this.io)
-                    throw 'Browser server already started!';
-
-                mongo.Notifications.findOne().sort('-date').exec()
-                    .then((notification) => {
-                        this.notification = notification;
-                    })
-                    .then(() => {
-                        const io = socketio(server);
-
-                        configure.socketio(io);
-
-                        // Handle browser connect event.
-                        io.sockets.on('connection', (sock) => {
-                            this._browserSockets.add(sock);
-
-                            // Handle browser disconnect event.
-                            sock.on('disconnect', () => {
-                                this._browserSockets.remove(sock);
-                            });
-
-                            this.agentListeners(sock);
-                            this.nodeListeners(sock);
-
-                            this.pushInitialData(sock);
-                            this.agentStats(sock.request.user, [sock]);
-                            this.emitNotification(sock);
-                        });
-                    });
-            }
-        }
-
-        return new BrowsersHandler();
-    }
-};
diff --git a/modules/web-console/backend/app/configure.js b/modules/web-console/backend/app/configure.js
deleted file mode 100644
index b907a1e..0000000
--- a/modules/web-console/backend/app/configure.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const _ = require('lodash');
-const logger = require('morgan');
-const cookieParser = require('cookie-parser');
-const bodyParser = require('body-parser');
-const session = require('express-session');
-const MongoDBStore = require('connect-mongodb-session');
-const passport = require('passport');
-const passportSocketIo = require('passport.socketio');
-const mongoSanitize = require('express-mongo-sanitize');
-
-// Fire me up!
-
-/**
- * Module for configuration express and websocket server.
- */
-module.exports = {
-    implements: 'configure',
-    inject: ['settings', 'mongo', 'middlewares:*']
-};
-
-module.exports.factory = function(settings, mongo, apis) {
-    const _sessionStore = new (MongoDBStore(session))({uri: settings.mongoUrl});
-
-    return {
-        express: (app) => {
-            app.use(logger('dev', {
-                skip: (req, res) => res.statusCode < 400
-            }));
-
-            _.forEach(apis, (api) => app.use(api));
-
-            app.use(bodyParser.json({limit: '50mb'}));
-            app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
-
-
-            app.use(mongoSanitize({replaceWith: '_'}));
-
-            app.use(session({
-                secret: settings.sessionSecret,
-                resave: false,
-                saveUninitialized: true,
-                unset: 'destroy',
-                cookie: {
-                    expires: new Date(Date.now() + settings.cookieTTL),
-                    maxAge: settings.cookieTTL
-                },
-                store: _sessionStore
-            }));
-
-            app.use(passport.initialize());
-            app.use(passport.session());
-
-            passport.serializeUser((user, done) => done(null, user._id));
-
-            passport.deserializeUser((id, done) => {
-                if (mongo.ObjectId.isValid(id))
-                    return mongo.Account.findById(id, done);
-
-                // Invalidates the existing login session.
-                done(null, false);
-            });
-
-            passport.use(mongo.Account.createStrategy());
-        },
-        socketio: (io) => {
-            const _onAuthorizeSuccess = (data, accept) => accept();
-
-            const _onAuthorizeFail = (data, message, error, accept) => {
-                if (error)
-                    accept(new Error(message));
-
-                return accept(new Error(message));
-            };
-
-            io.use(passportSocketIo.authorize({
-                cookieParser,
-                key: 'connect.sid', // the name of the cookie where express/connect stores its session_id
-                secret: settings.sessionSecret, // the session_secret to parse the cookie
-                store: _sessionStore, // we NEED to use a sessionstore. no memorystore please
-                success: _onAuthorizeSuccess, // *optional* callback on success - read more below
-                fail: _onAuthorizeFail // *optional* callback on fail/error - read more below
-            }));
-        }
-    };
-};
diff --git a/modules/web-console/backend/app/mongo.js b/modules/web-console/backend/app/mongo.js
deleted file mode 100644
index b9ee9de..0000000
--- a/modules/web-console/backend/app/mongo.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const fs = require('fs');
-const _ = require('lodash');
-const mongoose = require('mongoose');
-
-// Fire me up!
-
-/**
- * Module mongo schema.
- */
-module.exports = {
-    implements: 'mongo',
-    inject: ['settings', 'schemas']
-};
-
-const defineSchema = (schemas) => {
-    const result = { connection: mongoose.connection };
-
-    result.ObjectId = mongoose.Types.ObjectId;
-
-    result.errCodes = {
-        DUPLICATE_KEY_ERROR: 11000,
-        DUPLICATE_KEY_UPDATE_ERROR: 11001
-    };
-
-    // Define models.
-    _.forEach(schemas, (schema, name) => {
-        result[name] = mongoose.model(name, schema);
-    });
-
-    result.handleError = function(res, err) {
-        // TODO IGNITE-843 Send error to admin
-        res.status(err.code || 500).send(err.message);
-    };
-
-    return result;
-};
-
-const upgradeAccounts = (mongo, activation) => {
-    if (activation) {
-        return mongo.Account.find({
-            $or: [{activated: false}, {activated: {$exists: false}}],
-            activationToken: {$exists: false}
-        }, '_id').lean().exec()
-            .then((accounts) => {
-                const conditions = _.map(accounts, (account) => ({session: {$regex: `"${account._id}"`}}));
-
-                return mongoose.connection.db.collection('sessions').deleteMany({$or: conditions});
-            });
-    }
-
-    return mongo.Account.updateMany({activated: false}, {$unset: {activationSentAt: '', activationToken: ''}}).exec();
-};
-
-module.exports.factory = function(settings, schemas) {
-    // Use native promises
-    mongoose.Promise = global.Promise;
-
-    console.log(settings.mongoUrl, 'Trying to connect to local MongoDB...');
-
-    // Connect to mongoDB database.
-    return mongoose.connect(settings.mongoUrl, {useNewUrlParser: true, useCreateIndex: true})
-        .then(() => defineSchema(schemas))
-        .catch(() => {
-            console.log(`Failed to connect to MongoDB with connection string: "${settings.mongoUrl}", will try to download and start embedded MongoDB`);
-
-            const dbDir = `${process.cwd()}/user_data`;
-
-            if (!fs.existsSync(dbDir))
-                fs.mkdirSync(dbDir);
-
-            const {MongodHelper} = require('mongodb-prebuilt');
-            const {MongoDBDownload} = require('mongodb-download');
-
-            const helper = new MongodHelper(['--port', '27017', '--dbpath', dbDir]);
-
-            helper.mongoBin.mongoDBPrebuilt.mongoDBDownload = new MongoDBDownload({
-                downloadDir: `${process.cwd()}/libs/mongodb`,
-                version: '4.0.9'
-            });
-
-            let mongodRun;
-
-            if (settings.packaged) {
-                mongodRun = new Promise((resolve, reject) => {
-                    helper.resolveLink = resolve;
-                    helper.rejectLink = reject;
-
-                    helper.mongoBin.runCommand()
-                        .then(() => {
-                            helper.mongoBin.childProcess.removeAllListeners('close');
-
-                            helper.mongoBin.childProcess.stderr.on('data', (data) => helper.stderrHandler(data));
-                            helper.mongoBin.childProcess.stdout.on('data', (data) => helper.stdoutHandler(data));
-                            helper.mongoBin.childProcess.on('close', (code) => helper.closeHandler(code));
-                        });
-                });
-            }
-            else
-                mongodRun = helper.run();
-
-            return mongodRun
-                .catch((err) => {
-                    console.log('Failed to start embedded MongoDB', err);
-
-                    return Promise.reject(err);
-                })
-                .then(() => {
-                    console.log('Embedded MongoDB successfully started');
-
-                    return mongoose.connect(settings.mongoUrl, {useNewUrlParser: true, useCreateIndex: true})
-                        .catch((err) => {
-                            console.log('Failed to connect to embedded MongoDB', err);
-
-                            return Promise.reject(err);
-                        });
-                })
-                .then(() => defineSchema(schemas))
-                .then((mongo) => {
-                    if (settings.packaged) {
-                        return mongo.Account.count()
-                            .then((count) => {
-                                if (count === 0) {
-                                    return Promise.all([
-                                        mongo.Account.create({
-                                            _id: '59fc0c25e145c32be0f83b33',
-                                            salt: '7b4ccb9e375508a8f87c8f347083ce98cb8785d857dd18208f9a480e992a26bb',
-                                            hash: '909d5ed6e0b0a656ef542e2e8e851e9eb00cfb77984e0a6b4597c335d1436a577b3b289601eb8d1f3646e488cd5ea2bbb3e97fcc131cd6a9571407a45b1817bf1af1dd0ccdd070f07733da19e636ff9787369c5f38f86075f78c60809fe4a52288a68ca38aae0ad2bd0cc77b4cae310abf260e9523d361fd9be60e823a7d8e73954ddb18091e668acd3f57baf9fa7db4267e198d829761997a4741734335589ab62793ceb089e8fffe6e5b0e86f332b33a3011ba44e6efd29736f31cbd2b2023e5173baf517f337eb7a4321ea2b67ec827cffa271d26d3f2def93b5ef [...]
-                                            email: 'admin@admin',
-                                            firstName: 'admin',
-                                            lastName: 'admin',
-                                            company: 'admin',
-                                            country: 'United States',
-                                            admin: true,
-                                            token: 'ruQvlWff09zqoVYyh6WJ',
-                                            attempts: 0,
-                                            resetPasswordToken: 'O2GWgOkKkhqpDcxjYnSP',
-                                            activated: true
-                                        }),
-                                        mongo.Space.create({
-                                            _id: '59fc0c26e145c32be0f83b34',
-                                            name: 'Personal space',
-                                            owner: '59fc0c25e145c32be0f83b33',
-                                            usedBy: [],
-                                            demo: false
-                                        })
-                                    ]);
-                                }
-                            })
-                            .then(() => mongo)
-                            .catch(() => mongo);
-                    }
-
-                    return mongo;
-                });
-        })
-        .then((mongo) => {
-            return upgradeAccounts(mongo, settings.activation.enabled)
-                .then(() => mongo)
-                .catch(() => mongo);
-        });
-};
diff --git a/modules/web-console/backend/app/nconf.js b/modules/web-console/backend/app/nconf.js
deleted file mode 100644
index 3f5d7d1..0000000
--- a/modules/web-console/backend/app/nconf.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const fs = require('fs');
-const nconf = require('nconf');
-
-// Fire me up!
-
-/**
- * Module with server-side configuration.
- */
-module.exports = {
-    implements: 'nconf',
-    factory() {
-        nconf.env({separator: '_'}).argv();
-
-        const dfltFile = 'config/settings.json';
-        const customFile = nconf.get('settings') || dfltFile;
-
-        try {
-            fs.accessSync(customFile, fs.F_OK);
-
-            nconf.file({file: customFile});
-        }
-        catch (ignored) {
-            try {
-                fs.accessSync(dfltFile, fs.F_OK);
-
-                nconf.file({file: dfltFile});
-            }
-            catch (ignored2) {
-                // No-op.
-            }
-        }
-
-        return nconf;
-    }
-};
diff --git a/modules/web-console/backend/app/routes.js b/modules/web-console/backend/app/routes.js
deleted file mode 100644
index ce7b5d8..0000000
--- a/modules/web-console/backend/app/routes.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-module.exports = {
-    implements: 'routes',
-    inject: ['routes/public', 'routes/admin', 'routes/profiles', 'routes/demo', 'routes/clusters', 'routes/domains',
-        'routes/caches', 'routes/igfss', 'routes/notebooks', 'routes/downloads', 'routes/configurations', 'routes/activities']
-};
-
-module.exports.factory = function(publicRoute, adminRoute, profilesRoute, demoRoute,
-    clustersRoute, domainsRoute, cachesRoute, igfssRoute, notebooksRoute, downloadsRoute, configurationsRoute, activitiesRoute) {
-    return {
-        register: (app) => {
-            const _mustAuthenticated = (req, res, next) => {
-                if (req.isAuthenticated())
-                    return next();
-
-                res.status(401).send('Access denied. You are not authorized to access this page.');
-            };
-
-            const _adminOnly = (req, res, next) => {
-                if (req.isAuthenticated() && req.user.admin)
-                    return next();
-
-                res.status(401).send('Access denied. You are not authorized to access this page.');
-            };
-
-            // Registering the standard routes.
-            // NOTE: Order is important!
-            app.use('/api/v1/', publicRoute);
-            app.use('/api/v1/admin', _mustAuthenticated, _adminOnly, adminRoute);
-            app.use('/api/v1/profile', _mustAuthenticated, profilesRoute);
-            app.use('/api/v1/demo', _mustAuthenticated, demoRoute);
-
-            app.all('/api/v1/configuration/*', _mustAuthenticated);
-
-            app.use('/api/v1/configuration/clusters', clustersRoute);
-            app.use('/api/v1/configuration/domains', domainsRoute);
-            app.use('/api/v1/configuration/caches', cachesRoute);
-            app.use('/api/v1/configuration/igfs', igfssRoute);
-            app.use('/api/v1/configuration', configurationsRoute);
-
-            app.use('/api/v1/notebooks', _mustAuthenticated, notebooksRoute);
-            app.use('/api/v1/downloads', _mustAuthenticated, downloadsRoute);
-            app.use('/api/v1/activities', _mustAuthenticated, activitiesRoute);
-        }
-    };
-};
diff --git a/modules/web-console/backend/app/schemas.js b/modules/web-console/backend/app/schemas.js
deleted file mode 100644
index 21c8120..0000000
--- a/modules/web-console/backend/app/schemas.js
+++ /dev/null
@@ -1,1323 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const mongoose = require('mongoose');
-const passportMongo = require('passport-local-mongoose');
-
-// Fire me up!
-
-/**
- * Module mongo schema.
- */
-module.exports = {
-    implements: 'schemas',
-    inject: []
-};
-
-module.exports.factory = function() {
-    const Schema = mongoose.Schema;
-    const ObjectId = mongoose.Schema.Types.ObjectId;
-
-    // Define Account schema.
-    const Account = new Schema({
-        firstName: String,
-        lastName: String,
-        email: {type: String, unique: true},
-        phone: String,
-        company: String,
-        country: String,
-        registered: Date,
-        lastLogin: Date,
-        lastActivity: Date,
-        admin: Boolean,
-        token: String,
-        resetPasswordToken: String,
-        activated: {type: Boolean, default: false},
-        activationSentAt: Date,
-        activationToken: String
-    });
-
-    // Install passport plugin.
-    Account.plugin(passportMongo, {
-        usernameField: 'email', limitAttempts: true, lastLoginField: 'lastLogin',
-        usernameLowerCase: true,
-        errorMessages: {
-            UserExistsError: 'A user with the given email is already registered'
-        }
-    });
-
-    const transform = (doc, ret) => {
-        return {
-            _id: ret._id,
-            email: ret.email,
-            phone: ret.phone,
-            firstName: ret.firstName,
-            lastName: ret.lastName,
-            company: ret.company,
-            country: ret.country,
-            admin: ret.admin,
-            token: ret.token,
-            registered: ret.registered,
-            lastLogin: ret.lastLogin,
-            lastActivity: ret.lastActivity
-        };
-    };
-
-    // Configure transformation to JSON.
-    Account.set('toJSON', {transform});
-
-    // Configure transformation to JSON.
-    Account.set('toObject', {transform});
-
-    // Define Space schema.
-    const Space = new Schema({
-        name: String,
-        owner: {type: ObjectId, ref: 'Account'},
-        demo: {type: Boolean, default: false},
-        usedBy: [{
-            permission: {type: String, enum: ['VIEW', 'FULL']},
-            account: {type: ObjectId, ref: 'Account'}
-        }]
-    });
-
-    // Define Domain model schema.
-    const DomainModel = new Schema({
-        space: {type: ObjectId, ref: 'Space', index: true, required: true},
-        clusters: [{type: ObjectId, ref: 'Cluster'}],
-        caches: [{type: ObjectId, ref: 'Cache'}],
-        queryMetadata: {type: String, enum: ['Annotations', 'Configuration']},
-        kind: {type: String, enum: ['query', 'store', 'both']},
-        tableName: String,
-        keyFieldName: String,
-        valueFieldName: String,
-        databaseSchema: String,
-        databaseTable: String,
-        keyType: String,
-        valueType: {type: String},
-        keyFields: [{
-            databaseFieldName: String,
-            databaseFieldType: String,
-            javaFieldName: String,
-            javaFieldType: String
-        }],
-        valueFields: [{
-            databaseFieldName: String,
-            databaseFieldType: String,
-            javaFieldName: String,
-            javaFieldType: String
-        }],
-        queryKeyFields: [String],
-        fields: [{
-            name: String,
-            className: String,
-            notNull: Boolean,
-            defaultValue: String,
-            precision: Number,
-            scale: Number
-        }],
-        aliases: [{field: String, alias: String}],
-        indexes: [{
-            name: String,
-            indexType: {type: String, enum: ['SORTED', 'FULLTEXT', 'GEOSPATIAL']},
-            fields: [{name: String, direction: Boolean}],
-            inlineSizeType: Number,
-            inlineSize: Number
-        }],
-        generatePojo: Boolean
-    });
-
-    DomainModel.index({valueType: 1, space: 1, clusters: 1}, {unique: true});
-
-    // Define Cache schema.
-    const Cache = new Schema({
-        space: {type: ObjectId, ref: 'Space', index: true, required: true},
-        name: {type: String},
-        groupName: {type: String},
-        clusters: [{type: ObjectId, ref: 'Cluster'}],
-        domains: [{type: ObjectId, ref: 'DomainModel'}],
-        cacheMode: {type: String, enum: ['PARTITIONED', 'REPLICATED', 'LOCAL']},
-        atomicityMode: {type: String, enum: ['ATOMIC', 'TRANSACTIONAL', 'TRANSACTIONAL_SNAPSHOT']},
-        partitionLossPolicy: {
-            type: String,
-            enum: ['READ_ONLY_SAFE', 'READ_ONLY_ALL', 'READ_WRITE_SAFE', 'READ_WRITE_ALL', 'IGNORE']
-        },
-
-        affinity: {
-            kind: {type: String, enum: ['Default', 'Rendezvous', 'Fair', 'Custom']},
-            Rendezvous: {
-                affinityBackupFilter: String,
-                partitions: Number,
-                excludeNeighbors: Boolean
-            },
-            Fair: {
-                affinityBackupFilter: String,
-                partitions: Number,
-                excludeNeighbors: Boolean
-            },
-            Custom: {
-                className: String
-            }
-        },
-
-        affinityMapper: String,
-
-        nodeFilter: {
-            kind: {type: String, enum: ['Default', 'Exclude', 'IGFS', 'OnNodes', 'Custom']},
-            Exclude: {
-                nodeId: String
-            },
-            IGFS: {
-                igfs: {type: ObjectId, ref: 'Igfs'}
-            },
-            Custom: {
-                className: String
-            }
-        },
-
-        backups: Number,
-        memoryMode: {type: String, enum: ['ONHEAP_TIERED', 'OFFHEAP_TIERED', 'OFFHEAP_VALUES']},
-        offHeapMode: Number,
-        offHeapMaxMemory: Number,
-        startSize: Number,
-        swapEnabled: Boolean,
-        cacheWriterFactory: String,
-        cacheLoaderFactory: String,
-        expiryPolicyFactory: String,
-        interceptor: String,
-        storeByValue: Boolean,
-        eagerTtl: {type: Boolean, default: true},
-        encryptionEnabled: Boolean,
-        eventsDisabled: Boolean,
-
-        keyConfiguration: [{
-            typeName: String,
-            affinityKeyFieldName: String
-        }],
-
-        cacheStoreSessionListenerFactories: [String],
-
-        onheapCacheEnabled: Boolean,
-
-        evictionPolicy: {
-            kind: {type: String, enum: ['LRU', 'FIFO', 'SORTED']},
-            LRU: {
-                batchSize: Number,
-                maxMemorySize: Number,
-                maxSize: Number
-            },
-            FIFO: {
-                batchSize: Number,
-                maxMemorySize: Number,
-                maxSize: Number
-            },
-            SORTED: {
-                batchSize: Number,
-                maxMemorySize: Number,
-                maxSize: Number
-            }
-        },
-
-        rebalanceMode: {type: String, enum: ['SYNC', 'ASYNC', 'NONE']},
-        rebalanceBatchSize: Number,
-        rebalanceBatchesPrefetchCount: Number,
-        rebalanceOrder: Number,
-        rebalanceDelay: Number,
-        rebalanceTimeout: Number,
-        rebalanceThrottle: Number,
-
-        cacheStoreFactory: {
-            kind: {
-                type: String,
-                enum: ['CacheJdbcPojoStoreFactory', 'CacheJdbcBlobStoreFactory', 'CacheHibernateBlobStoreFactory']
-            },
-            CacheJdbcPojoStoreFactory: {
-                dataSourceBean: String,
-                dialect: {
-                    type: String,
-                    enum: ['Generic', 'Oracle', 'DB2', 'SQLServer', 'MySQL', 'PostgreSQL', 'H2']
-                },
-                implementationVersion: String,
-                batchSize: Number,
-                maximumPoolSize: Number,
-                maximumWriteAttempts: Number,
-                parallelLoadCacheMinimumThreshold: Number,
-                hasher: String,
-                transformer: String,
-                sqlEscapeAll: Boolean
-            },
-            CacheJdbcBlobStoreFactory: {
-                connectVia: {type: String, enum: ['URL', 'DataSource']},
-                connectionUrl: String,
-                user: String,
-                dataSourceBean: String,
-                dialect: {
-                    type: String,
-                    enum: ['Generic', 'Oracle', 'DB2', 'SQLServer', 'MySQL', 'PostgreSQL', 'H2']
-                },
-                initSchema: Boolean,
-                createTableQuery: String,
-                loadQuery: String,
-                insertQuery: String,
-                updateQuery: String,
-                deleteQuery: String
-            },
-            CacheHibernateBlobStoreFactory: {
-                hibernateProperties: [{name: String, value: String}]
-            }
-        },
-        storeConcurrentLoadAllThreshold: Number,
-        maxQueryIteratorsCount: Number,
-        storeKeepBinary: Boolean,
-        loadPreviousValue: Boolean,
-        readThrough: Boolean,
-        writeThrough: Boolean,
-
-        writeBehindEnabled: Boolean,
-        writeBehindBatchSize: Number,
-        writeBehindFlushSize: Number,
-        writeBehindFlushFrequency: Number,
-        writeBehindFlushThreadCount: Number,
-        writeBehindCoalescing: {type: Boolean, default: true},
-
-        isInvalidate: Boolean,
-        defaultLockTimeout: Number,
-        atomicWriteOrderMode: {type: String, enum: ['CLOCK', 'PRIMARY']},
-        writeSynchronizationMode: {type: String, enum: ['FULL_SYNC', 'FULL_ASYNC', 'PRIMARY_SYNC']},
-
-        sqlEscapeAll: Boolean,
-        sqlSchema: String,
-        sqlOnheapRowCacheSize: Number,
-        longQueryWarningTimeout: Number,
-        sqlFunctionClasses: [String],
-        snapshotableIndex: Boolean,
-        queryDetailMetricsSize: Number,
-        queryParallelism: Number,
-        statisticsEnabled: Boolean,
-        managementEnabled: Boolean,
-        readFromBackup: Boolean,
-        copyOnRead: Boolean,
-        maxConcurrentAsyncOperations: Number,
-        nearConfiguration: {
-            enabled: Boolean,
-            nearStartSize: Number,
-            nearEvictionPolicy: {
-                kind: {type: String, enum: ['LRU', 'FIFO', 'SORTED']},
-                LRU: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                },
-                FIFO: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                },
-                SORTED: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                }
-            }
-        },
-        clientNearConfiguration: {
-            enabled: Boolean,
-            nearStartSize: Number,
-            nearEvictionPolicy: {
-                kind: {type: String, enum: ['LRU', 'FIFO', 'SORTED']},
-                LRU: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                },
-                FIFO: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                },
-                SORTED: {
-                    batchSize: Number,
-                    maxMemorySize: Number,
-                    maxSize: Number
-                }
-            }
-        },
-        evictionFilter: String,
-        memoryPolicyName: String,
-        dataRegionName: String,
-        sqlIndexMaxInlineSize: Number,
-        topologyValidator: String,
-        diskPageCompression: {type: String, enum: ['SKIP_GARBAGE', 'ZSTD', 'LZ4', 'SNAPPY']},
-        diskPageCompressionLevel: Number
-    });
-
-    Cache.index({name: 1, space: 1, clusters: 1}, {unique: true});
-
-    const Igfs = new Schema({
-        space: {type: ObjectId, ref: 'Space', index: true, required: true},
-        name: {type: String},
-        clusters: [{type: ObjectId, ref: 'Cluster'}],
-        affinnityGroupSize: Number,
-        blockSize: Number,
-        streamBufferSize: Number,
-        dataCacheName: String,
-        metaCacheName: String,
-        defaultMode: {type: String, enum: ['PRIMARY', 'PROXY', 'DUAL_SYNC', 'DUAL_ASYNC']},
-        dualModeMaxPendingPutsSize: Number,
-        dualModePutExecutorService: String,
-        dualModePutExecutorServiceShutdown: Boolean,
-        fragmentizerConcurrentFiles: Number,
-        fragmentizerEnabled: Boolean,
-        fragmentizerThrottlingBlockLength: Number,
-        fragmentizerThrottlingDelay: Number,
-        ipcEndpointConfiguration: {
-            type: {type: String, enum: ['SHMEM', 'TCP']},
-            host: String,
-            port: Number,
-            memorySize: Number,
-            tokenDirectoryPath: String,
-            threadCount: Number
-        },
-        ipcEndpointEnabled: Boolean,
-        maxSpaceSize: Number,
-        maximumTaskRangeLength: Number,
-        managementPort: Number,
-        pathModes: [{path: String, mode: {type: String, enum: ['PRIMARY', 'PROXY', 'DUAL_SYNC', 'DUAL_ASYNC']}}],
-        perNodeBatchSize: Number,
-        perNodeParallelBatchCount: Number,
-        prefetchBlocks: Number,
-        sequentialReadsBeforePrefetch: Number,
-        trashPurgeTimeout: Number,
-        secondaryFileSystemEnabled: Boolean,
-        secondaryFileSystem: {
-            userName: String,
-            kind: {type: String, enum: ['Caching', 'Kerberos', 'Custom'], default: 'Caching'},
-            uri: String,
-            cfgPath: String,
-            cfgPaths: [String],
-            userNameMapper: {
-                kind: {type: String, enum: ['Chained', 'Basic', 'Kerberos', 'Custom']},
-                Chained: {
-                    mappers: [{
-                        kind: {type: String, enum: ['Basic', 'Kerberos', 'Custom']},
-                        Basic: {
-                            defaultUserName: String,
-                            useDefaultUserName: Boolean,
-                            mappings: [{
-                                name: String,
-                                value: String
-                            }]
-                        },
-                        Kerberos: {
-                            instance: String,
-                            realm: String
-                        },
-                        Custom: {
-                            className: String,
-                        }
-                    }]
-                },
-                Basic: {
-                    defaultUserName: String,
-                    useDefaultUserName: Boolean,
-                    mappings: [{
-                        name: String,
-                        value: String
-                    }]
-                },
-                Kerberos: {
-                    instance: String,
-                    realm: String
-                },
-                Custom: {
-                    className: String,
-                }
-            },
-            Kerberos: {
-                keyTab: String,
-                keyTabPrincipal: String,
-                reloginInterval: Number
-            },
-            Custom: {
-                className: String
-            }
-        },
-        colocateMetadata: Boolean,
-        relaxedConsistency: Boolean,
-        updateFileLengthOnFlush: Boolean
-    });
-
-    Igfs.index({name: 1, space: 1, clusters: 1}, {unique: true});
-
-
-    // Define Cluster schema.
-    const Cluster = new Schema({
-        space: {type: ObjectId, ref: 'Space', index: true, required: true},
-        name: {type: String},
-        activeOnStart: {type: Boolean, default: true},
-        localHost: String,
-        discovery: {
-            localAddress: String,
-            localPort: Number,
-            localPortRange: Number,
-            addressResolver: String,
-            socketTimeout: Number,
-            ackTimeout: Number,
-            maxAckTimeout: Number,
-            networkTimeout: Number,
-            joinTimeout: Number,
-            threadPriority: Number,
-            heartbeatFrequency: Number,
-            maxMissedHeartbeats: Number,
-            maxMissedClientHeartbeats: Number,
-            topHistorySize: Number,
-            listener: String,
-            dataExchange: String,
-            metricsProvider: String,
-            reconnectCount: Number,
-            statisticsPrintFrequency: Number,
-            ipFinderCleanFrequency: Number,
-            authenticator: String,
-            forceServerMode: Boolean,
-            clientReconnectDisabled: Boolean,
-            connectionRecoveryTimeout: Number,
-            reconnectDelay: Number,
-            soLinger: Number,
-            kind: {
-                type: String,
-                enum: ['Vm', 'Multicast', 'S3', 'Cloud', 'GoogleStorage', 'Jdbc', 'SharedFs', 'ZooKeeper', 'Kubernetes']
-            },
-            Vm: {
-                addresses: [String]
-            },
-            Multicast: {
-                multicastGroup: String,
-                multicastPort: Number,
-                responseWaitTime: Number,
-                addressRequestAttempts: Number,
-                localAddress: String,
-                addresses: [String]
-            },
-            S3: {
-                bucketName: String,
-                bucketEndpoint: String,
-                SSEAlgorithm: String,
-                clientConfiguration: {
-                    protocol: {type: String, enum: ['HTTP', 'HTTPS']},
-                    maxConnections: Number,
-                    userAgentPrefix: String,
-                    userAgentSuffix: String,
-                    localAddress: String,
-                    proxyHost: String,
-                    proxyPort: Number,
-                    proxyUsername: String,
-                    proxyDomain: String,
-                    proxyWorkstation: String,
-                    retryPolicy: {
-                        kind: {
-                            type: String,
-                            enum: ['Default', 'DefaultMaxRetries', 'DynamoDB', 'DynamoDBMaxRetries', 'Custom', 'CustomClass']
-                        },
-                        DefaultMaxRetries: {
-                            maxErrorRetry: Number
-                        },
-                        DynamoDBMaxRetries: {
-                            maxErrorRetry: Number
-                        },
-                        Custom: {
-                            retryCondition: String,
-                            backoffStrategy: String,
-                            maxErrorRetry: Number,
-                            honorMaxErrorRetryInClientConfig: Boolean
-                        },
-                        CustomClass: {
-                            className: String
-                        }
-                    },
-                    maxErrorRetry: Number,
-                    socketTimeout: Number,
-                    connectionTimeout: Number,
-                    requestTimeout: Number,
-                    useReaper: Boolean,
-                    useGzip: Boolean,
-                    signerOverride: String,
-                    preemptiveBasicProxyAuth: Boolean,
-                    connectionTTL: Number,
-                    connectionMaxIdleMillis: Number,
-                    useTcpKeepAlive: Boolean,
-                    dnsResolver: String,
-                    responseMetadataCacheSize: Number,
-                    secureRandom: String,
-                    cacheResponseMetadata: {type: Boolean, default: true},
-                    clientExecutionTimeout: Number,
-                    nonProxyHosts: String,
-                    socketSendBufferSizeHint: Number,
-                    socketReceiveBufferSizeHint: Number,
-                    useExpectContinue: {type: Boolean, default: true},
-                    useThrottleRetries: {type: Boolean, default: true}
-                }
-            },
-            Cloud: {
-                credential: String,
-                credentialPath: String,
-                identity: String,
-                provider: String,
-                regions: [String],
-                zones: [String]
-            },
-            GoogleStorage: {
-                projectName: String,
-                bucketName: String,
-                serviceAccountP12FilePath: String,
-                serviceAccountId: String,
-                addrReqAttempts: String
-            },
-            Jdbc: {
-                initSchema: Boolean,
-                dataSourceBean: String,
-                dialect: {
-                    type: String,
-                    enum: ['Generic', 'Oracle', 'DB2', 'SQLServer', 'MySQL', 'PostgreSQL', 'H2']
-                }
-            },
-            SharedFs: {
-                path: String
-            },
-            ZooKeeper: {
-                curator: String,
-                zkConnectionString: String,
-                retryPolicy: {
-                    kind: {
-                        type: String, enum: ['ExponentialBackoff', 'BoundedExponentialBackoff', 'UntilElapsed',
-                            'NTimes', 'OneTime', 'Forever', 'Custom']
-                    },
-                    ExponentialBackoff: {
-                        baseSleepTimeMs: Number,
-                        maxRetries: Number,
-                        maxSleepMs: Number
-                    },
-                    BoundedExponentialBackoff: {
-                        baseSleepTimeMs: Number,
-                        maxSleepTimeMs: Number,
-                        maxRetries: Number
-                    },
-                    UntilElapsed: {
-                        maxElapsedTimeMs: Number,
-                        sleepMsBetweenRetries: Number
-                    },
-                    NTimes: {
-                        n: Number,
-                        sleepMsBetweenRetries: Number
-                    },
-                    OneTime: {
-                        sleepMsBetweenRetry: Number
-                    },
-                    Forever: {
-                        retryIntervalMs: Number
-                    },
-                    Custom: {
-                        className: String
-                    }
-                },
-                basePath: String,
-                serviceName: String,
-                allowDuplicateRegistrations: Boolean
-            },
-            Kubernetes: {
-                serviceName: String,
-                namespace: String,
-                masterUrl: String,
-                accountToken: String
-            }
-        },
-        atomicConfiguration: {
-            backups: Number,
-            cacheMode: {type: String, enum: ['LOCAL', 'REPLICATED', 'PARTITIONED']},
-            atomicSequenceReserveSize: Number,
-            affinity: {
-                kind: {type: String, enum: ['Default', 'Rendezvous', 'Custom']},
-                Rendezvous: {
-                    affinityBackupFilter: String,
-                    partitions: Number,
-                    excludeNeighbors: Boolean
-                },
-                Custom: {
-                    className: String
-                }
-            },
-            groupName: String
-        },
-        binaryConfiguration: {
-            idMapper: String,
-            nameMapper: String,
-            serializer: String,
-            typeConfigurations: [{
-                typeName: String,
-                idMapper: String,
-                nameMapper: String,
-                serializer: String,
-                enum: Boolean,
-                enumValues: [String]
-            }],
-            compactFooter: Boolean
-        },
-        caches: [{type: ObjectId, ref: 'Cache'}],
-        models: [{type: ObjectId, ref: 'DomainModel'}],
-        clockSyncSamples: Number,
-        clockSyncFrequency: Number,
-        deploymentMode: {type: String, enum: ['PRIVATE', 'ISOLATED', 'SHARED', 'CONTINUOUS']},
-        discoveryStartupDelay: Number,
-        igfsThreadPoolSize: Number,
-        igfss: [{type: ObjectId, ref: 'Igfs'}],
-        includeEventTypes: [String],
-        eventStorage: {
-            kind: {type: String, enum: ['Memory', 'Custom']},
-            Memory: {
-                expireAgeMs: Number,
-                expireCount: Number,
-                filter: String
-            },
-            Custom: {
-                className: String
-            }
-        },
-        managementThreadPoolSize: Number,
-        marshaller: {
-            kind: {type: String, enum: ['OptimizedMarshaller', 'JdkMarshaller']},
-            OptimizedMarshaller: {
-                poolSize: Number,
-                requireSerializable: Boolean
-            }
-        },
-        marshalLocalJobs: Boolean,
-        marshallerCacheKeepAliveTime: Number,
-        marshallerCacheThreadPoolSize: Number,
-        metricsExpireTime: Number,
-        metricsHistorySize: Number,
-        metricsLogFrequency: Number,
-        metricsUpdateFrequency: Number,
-        networkTimeout: Number,
-        networkSendRetryDelay: Number,
-        networkSendRetryCount: Number,
-        communication: {
-            listener: String,
-            localAddress: String,
-            localPort: Number,
-            localPortRange: Number,
-            sharedMemoryPort: Number,
-            directBuffer: Boolean,
-            directSendBuffer: Boolean,
-            idleConnectionTimeout: Number,
-            connectTimeout: Number,
-            maxConnectTimeout: Number,
-            reconnectCount: Number,
-            socketSendBuffer: Number,
-            socketReceiveBuffer: Number,
-            messageQueueLimit: Number,
-            slowClientQueueLimit: Number,
-            tcpNoDelay: Boolean,
-            ackSendThreshold: Number,
-            unacknowledgedMessagesBufferSize: Number,
-            socketWriteTimeout: Number,
-            selectorsCount: Number,
-            addressResolver: String,
-            selectorSpins: Number,
-            connectionsPerNode: Number,
-            usePairedConnections: Boolean,
-            filterReachableAddresses: Boolean
-        },
-        connector: {
-            enabled: Boolean,
-            jettyPath: String,
-            host: String,
-            port: Number,
-            portRange: Number,
-            idleTimeout: Number,
-            idleQueryCursorTimeout: Number,
-            idleQueryCursorCheckFrequency: Number,
-            receiveBufferSize: Number,
-            sendBufferSize: Number,
-            sendQueueLimit: Number,
-            directBuffer: Boolean,
-            noDelay: Boolean,
-            selectorCount: Number,
-            threadPoolSize: Number,
-            messageInterceptor: String,
-            secretKey: String,
-            sslEnabled: Boolean,
-            sslClientAuth: Boolean,
-            sslFactory: String
-        },
-        peerClassLoadingEnabled: Boolean,
-        peerClassLoadingLocalClassPathExclude: [String],
-        peerClassLoadingMissedResourcesCacheSize: Number,
-        peerClassLoadingThreadPoolSize: Number,
-        publicThreadPoolSize: Number,
-        swapSpaceSpi: {
-            kind: {type: String, enum: ['FileSwapSpaceSpi']},
-            FileSwapSpaceSpi: {
-                baseDirectory: String,
-                readStripesNumber: Number,
-                maximumSparsity: Number,
-                maxWriteQueueSize: Number,
-                writeBufferSize: Number
-            }
-        },
-        systemThreadPoolSize: Number,
-        timeServerPortBase: Number,
-        timeServerPortRange: Number,
-        transactionConfiguration: {
-            defaultTxConcurrency: {type: String, enum: ['OPTIMISTIC', 'PESSIMISTIC']},
-            defaultTxIsolation: {type: String, enum: ['READ_COMMITTED', 'REPEATABLE_READ', 'SERIALIZABLE']},
-            defaultTxTimeout: Number,
-            pessimisticTxLogLinger: Number,
-            pessimisticTxLogSize: Number,
-            txSerializableEnabled: Boolean,
-            txManagerFactory: String,
-            useJtaSynchronization: Boolean,
-            txTimeoutOnPartitionMapExchange: Number, // 2.5
-            deadlockTimeout: Number // 2.8
-        },
-        sslEnabled: Boolean,
-        sslContextFactory: {
-            keyAlgorithm: String,
-            keyStoreFilePath: String,
-            keyStoreType: String,
-            protocol: String,
-            trustStoreFilePath: String,
-            trustStoreType: String,
-            trustManagers: [String],
-            cipherSuites: [String],
-            protocols: [String]
-        },
-        rebalanceThreadPoolSize: Number,
-        odbc: {
-            odbcEnabled: Boolean,
-            endpointAddress: String,
-            socketSendBufferSize: Number,
-            socketReceiveBufferSize: Number,
-            maxOpenCursors: Number,
-            threadPoolSize: Number
-        },
-        attributes: [{name: String, value: String}],
-        collision: {
-            kind: {type: String, enum: ['Noop', 'PriorityQueue', 'FifoQueue', 'JobStealing', 'Custom']},
-            PriorityQueue: {
-                parallelJobsNumber: Number,
-                waitingJobsNumber: Number,
-                priorityAttributeKey: String,
-                jobPriorityAttributeKey: String,
-                defaultPriority: Number,
-                starvationIncrement: Number,
-                starvationPreventionEnabled: Boolean
-            },
-            FifoQueue: {
-                parallelJobsNumber: Number,
-                waitingJobsNumber: Number
-            },
-            JobStealing: {
-                activeJobsThreshold: Number,
-                waitJobsThreshold: Number,
-                messageExpireTime: Number,
-                maximumStealingAttempts: Number,
-                stealingEnabled: Boolean,
-                stealingAttributes: [{name: String, value: String}],
-                externalCollisionListener: String
-            },
-            Custom: {
-                class: String
-            }
-        },
-        failoverSpi: [{
-            kind: {type: String, enum: ['JobStealing', 'Never', 'Always', 'Custom']},
-            JobStealing: {
-                maximumFailoverAttempts: Number
-            },
-            Always: {
-                maximumFailoverAttempts: Number
-            },
-            Custom: {
-                class: String
-            }
-        }],
-        logger: {
-            kind: {type: 'String', enum: ['Log4j2', 'Null', 'Java', 'JCL', 'SLF4J', 'Log4j', 'Custom']},
-            Log4j2: {
-                level: {type: String, enum: ['OFF', 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL']},
-                path: String
-            },
-            Log4j: {
-                mode: {type: String, enum: ['Default', 'Path']},
-                level: {type: String, enum: ['OFF', 'FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL']},
-                path: String
-            },
-            Custom: {
-                class: String
-            }
-        },
-        cacheKeyConfiguration: [{
-            typeName: String,
-            affinityKeyFieldName: String
-        }],
-        checkpointSpi: [{
-            kind: {type: String, enum: ['FS', 'Cache', 'S3', 'JDBC', 'Custom']},
-            FS: {
-                directoryPaths: [String],
-                checkpointListener: String
-            },
-            Cache: {
-                cache: {type: ObjectId, ref: 'Cache'},
-                checkpointListener: String
-            },
-            S3: {
-                awsCredentials: {
-                    kind: {type: String, enum: ['Basic', 'Properties', 'Anonymous', 'BasicSession', 'Custom']},
-                    Properties: {
-                        path: String
-                    },
-                    Custom: {
-                        className: String
-                    }
-                },
-                bucketNameSuffix: String,
-                bucketEndpoint: String,
-                SSEAlgorithm: String,
-                clientConfiguration: {
-                    protocol: {type: String, enum: ['HTTP', 'HTTPS']},
-                    maxConnections: Number,
-                    userAgentPrefix: String,
-                    userAgentSuffix: String,
-                    localAddress: String,
-                    proxyHost: String,
-                    proxyPort: Number,
-                    proxyUsername: String,
-                    proxyDomain: String,
-                    proxyWorkstation: String,
-                    retryPolicy: {
-                        kind: {
-                            type: String,
-                            enum: ['Default', 'DefaultMaxRetries', 'DynamoDB', 'DynamoDBMaxRetries', 'Custom']
-                        },
-                        DefaultMaxRetries: {
-                            maxErrorRetry: Number
-                        },
-                        DynamoDBMaxRetries: {
-                            maxErrorRetry: Number
-                        },
-                        Custom: {
-                            retryCondition: String,
-                            backoffStrategy: String,
-                            maxErrorRetry: Number,
-                            honorMaxErrorRetryInClientConfig: Boolean
-                        }
-                    },
-                    maxErrorRetry: Number,
-                    socketTimeout: Number,
-                    connectionTimeout: Number,
-                    requestTimeout: Number,
-                    useReaper: Boolean,
-                    useGzip: Boolean,
-                    signerOverride: String,
-                    preemptiveBasicProxyAuth: Boolean,
-                    connectionTTL: Number,
-                    connectionMaxIdleMillis: Number,
-                    useTcpKeepAlive: Boolean,
-                    dnsResolver: String,
-                    responseMetadataCacheSize: Number,
-                    secureRandom: String,
-                    cacheResponseMetadata: {type: Boolean, default: true},
-                    clientExecutionTimeout: Number,
-                    nonProxyHosts: String,
-                    socketSendBufferSizeHint: Number,
-                    socketReceiveBufferSizeHint: Number,
-                    useExpectContinue: {type: Boolean, default: true},
-                    useThrottleRetries: {type: Boolean, default: true}
-                },
-                checkpointListener: String
-            },
-            JDBC: {
-                dataSourceBean: String,
-                dialect: {
-                    type: String,
-                    enum: ['Generic', 'Oracle', 'DB2', 'SQLServer', 'MySQL', 'PostgreSQL', 'H2']
-                },
-                user: String,
-                checkpointTableName: String,
-                keyFieldName: String,
-                keyFieldType: String,
-                valueFieldName: String,
-                valueFieldType: String,
-                expireDateFieldName: String,
-                expireDateFieldType: String,
-                numberOfRetries: Number,
-                checkpointListener: String
-            },
-            Custom: {
-                className: String
-            }
-        }],
-        clientConnectorConfiguration: {
-            enabled: Boolean,
-            host: String,
-            port: Number,
-            portRange: Number,
-            socketSendBufferSize: Number,
-            socketReceiveBufferSize: Number,
-            tcpNoDelay: {type: Boolean, default: true},
-            maxOpenCursorsPerConnection: Number,
-            threadPoolSize: Number,
-            idleTimeout: Number,
-            jdbcEnabled: {type: Boolean, default: true},
-            odbcEnabled: {type: Boolean, default: true},
-            thinClientEnabled: {type: Boolean, default: true},
-            sslEnabled: Boolean,
-            useIgniteSslContextFactory: {type: Boolean, default: true},
-            sslClientAuth: Boolean,
-            sslContextFactory: String
-        },
-        loadBalancingSpi: [{
-            kind: {type: String, enum: ['RoundRobin', 'Adaptive', 'WeightedRandom', 'Custom']},
-            RoundRobin: {
-                perTask: Boolean
-            },
-            Adaptive: {
-                loadProbe: {
-                    kind: {type: String, enum: ['Job', 'CPU', 'ProcessingTime', 'Custom']},
-                    Job: {
-                        useAverage: Boolean
-                    },
-                    CPU: {
-                        useAverage: Boolean,
-                        useProcessors: Boolean,
-                        processorCoefficient: Number
-                    },
-                    ProcessingTime: {
-                        useAverage: Boolean
-                    },
-                    Custom: {
-                        className: String
-                    }
-                }
-            },
-            WeightedRandom: {
-                nodeWeight: Number,
-                useWeights: Boolean
-            },
-            Custom: {
-                className: String
-            }
-        }],
-        deploymentSpi: {
-            kind: {type: String, enum: ['URI', 'Local', 'Custom']},
-            URI: {
-                uriList: [String],
-                temporaryDirectoryPath: String,
-                scanners: [String],
-                listener: String,
-                checkMd5: Boolean,
-                encodeUri: Boolean
-            },
-            Local: {
-                listener: String
-            },
-            Custom: {
-                className: String
-            }
-        },
-        warmupClosure: String,
-        hadoopConfiguration: {
-            mapReducePlanner: {
-                kind: {type: String, enum: ['Weighted', 'Custom']},
-                Weighted: {
-                    localMapperWeight: Number,
-                    remoteMapperWeight: Number,
-                    localReducerWeight: Number,
-                    remoteReducerWeight: Number,
-                    preferLocalReducerThresholdWeight: Number
-                },
-                Custom: {
-                    className: String
-                }
-            },
-            finishedJobInfoTtl: Number,
-            maxParallelTasks: Number,
-            maxTaskQueueSize: Number,
-            nativeLibraryNames: [String]
-        },
-        serviceConfigurations: [{
-            name: String,
-            service: String,
-            maxPerNodeCount: Number,
-            totalCount: Number,
-            nodeFilter: {
-                kind: {type: String, enum: ['Default', 'Exclude', 'IGFS', 'OnNodes', 'Custom']},
-                Exclude: {
-                    nodeId: String
-                },
-                IGFS: {
-                    igfs: {type: ObjectId, ref: 'Igfs'}
-                },
-                Custom: {
-                    className: String
-                }
-            },
-            cache: {type: ObjectId, ref: 'Cache'},
-            affinityKey: String
-        }],
-        cacheSanityCheckEnabled: {type: Boolean, default: true},
-        classLoader: String,
-        consistentId: String,
-        failureDetectionTimeout: Number,
-        clientFailureDetectionTimeout: Number,
-        systemWorkerBlockedTimeout: Number,
-        workDirectory: String,
-        igniteHome: String,
-        lateAffinityAssignment: Boolean,
-        utilityCacheKeepAliveTime: Number,
-        asyncCallbackPoolSize: Number,
-        dataStreamerThreadPoolSize: Number,
-        queryThreadPoolSize: Number,
-        stripedPoolSize: Number,
-        serviceThreadPoolSize: Number,
-        utilityCacheThreadPoolSize: Number,
-        executorConfiguration: [{
-            name: String,
-            size: Number
-        }],
-        dataStorageConfiguration: {
-            systemRegionInitialSize: Number,
-            systemRegionMaxSize: Number,
-            pageSize: Number,
-            concurrencyLevel: Number,
-            defaultDataRegionConfiguration: {
-                name: String,
-                initialSize: Number,
-                maxSize: Number,
-                swapPath: String,
-                pageEvictionMode: {type: String, enum: ['DISABLED', 'RANDOM_LRU', 'RANDOM_2_LRU']},
-                evictionThreshold: Number,
-                emptyPagesPoolSize: Number,
-                metricsEnabled: Boolean,
-                metricsSubIntervalCount: Number,
-                metricsRateTimeInterval: Number,
-                persistenceEnabled: Boolean,
-                checkpointPageBufferSize: Number
-            },
-            dataRegionConfigurations: [{
-                name: String,
-                initialSize: Number,
-                maxSize: Number,
-                swapPath: String,
-                pageEvictionMode: {type: String, enum: ['DISABLED', 'RANDOM_LRU', 'RANDOM_2_LRU']},
-                evictionThreshold: Number,
-                emptyPagesPoolSize: Number,
-                metricsEnabled: Boolean,
-                metricsSubIntervalCount: Number,
-                metricsRateTimeInterval: Number,
-                persistenceEnabled: Boolean,
-                checkpointPageBufferSize: Number
-            }],
-            storagePath: String,
-            metricsEnabled: Boolean,
-            alwaysWriteFullPages: Boolean,
-            checkpointFrequency: Number,
-            checkpointThreads: Number,
-            checkpointWriteOrder: {type: String, enum: ['RANDOM', 'SEQUENTIAL']},
-            walPath: String,
-            walArchivePath: String,
-            walMode: {type: String, enum: ['DEFAULT', 'LOG_ONLY', 'BACKGROUND', 'NONE']},
-            walSegments: Number,
-            walSegmentSize: Number,
-            walHistorySize: Number,
-            walFlushFrequency: Number,
-            walFsyncDelayNanos: Number,
-            walRecordIteratorBufferSize: Number,
-            lockWaitTime: Number,
-            walBufferSize: Number,
-            walThreadLocalBufferSize: Number,
-            metricsSubIntervalCount: Number,
-            metricsRateTimeInterval: Number,
-            fileIOFactory: {type: String, enum: ['RANDOM', 'ASYNC']},
-            walAutoArchiveAfterInactivity: Number,
-            writeThrottlingEnabled: Boolean,
-            walCompactionEnabled: Boolean,
-            checkpointReadLockTimeout: Number,
-            maxWalArchiveSize: Number,
-            walCompactionLevel: Number
-        },
-        memoryConfiguration: {
-            systemCacheInitialSize: Number,
-            systemCacheMaxSize: Number,
-            pageSize: Number,
-            concurrencyLevel: Number,
-            defaultMemoryPolicyName: String,
-            defaultMemoryPolicySize: Number,
-            memoryPolicies: [{
-                name: String,
-                initialSize: Number,
-                maxSize: Number,
-                swapFilePath: String,
-                pageEvictionMode: {type: String, enum: ['DISABLED', 'RANDOM_LRU', 'RANDOM_2_LRU']},
-                evictionThreshold: Number,
-                emptyPagesPoolSize: Number,
-                metricsEnabled: Boolean,
-                subIntervals: Number,
-                rateTimeInterval: Number
-            }]
-        },
-        longQueryWarningTimeout: Number,
-        sqlConnectorConfiguration: {
-            enabled: Boolean,
-            host: String,
-            port: Number,
-            portRange: Number,
-            socketSendBufferSize: Number,
-            socketReceiveBufferSize: Number,
-            tcpNoDelay: {type: Boolean, default: true},
-            maxOpenCursorsPerConnection: Number,
-            threadPoolSize: Number
-        },
-        persistenceStoreConfiguration: {
-            enabled: Boolean,
-            persistentStorePath: String,
-            metricsEnabled: Boolean,
-            alwaysWriteFullPages: Boolean,
-            checkpointingFrequency: Number,
-            checkpointingPageBufferSize: Number,
-            checkpointingThreads: Number,
-            walStorePath: String,
-            walArchivePath: String,
-            walMode: {type: String, enum: ['DEFAULT', 'LOG_ONLY', 'BACKGROUND', 'NONE']},
-            walSegments: Number,
-            walSegmentSize: Number,
-            walHistorySize: Number,
-            walFlushFrequency: Number,
-            walFsyncDelayNanos: Number,
-            walRecordIteratorBufferSize: Number,
-            lockWaitTime: Number,
-            rateTimeInterval: Number,
-            tlbSize: Number,
-            subIntervals: Number,
-            walAutoArchiveAfterInactivity: Number
-        },
-        encryptionSpi: {
-            kind: {type: String, enum: ['Noop', 'Keystore', 'Custom']},
-            Keystore: {
-                keySize: Number,
-                masterKeyName: String,
-                keyStorePath: String
-            },
-            Custom: {
-                className: String
-            }
-        },
-        failureHandler: {
-            kind: {type: String, enum: ['RestartProcess', 'StopNodeOnHalt', 'StopNode', 'Noop', 'Custom']},
-            ignoredFailureTypes: [{type: String, enum: ['SEGMENTATION', 'SYSTEM_WORKER_TERMINATION',
-                    'SYSTEM_WORKER_BLOCKED', 'CRITICAL_ERROR', 'SYSTEM_CRITICAL_OPERATION_TIMEOUT']}],
-            StopNodeOnHalt: {
-                tryStop: Boolean,
-                timeout: Number
-            },
-            Custom: {
-                className: String
-            }
-        },
-        localEventListeners: [{
-            className: String,
-            eventTypes: [String]
-        }],
-        mvccVacuumThreadCount: Number,
-        mvccVacuumFrequency: Number,
-        authenticationEnabled: Boolean,
-        sqlQueryHistorySize: Number,
-        lifecycleBeans: [String],
-        addressResolver: String,
-        mBeanServer: String,
-        networkCompressionLevel: Number,
-        includeProperties: [String],
-        cacheStoreSessionListenerFactories: [String],
-        autoActivationEnabled: {type: Boolean, default: true},
-        sqlSchemas: [String],
-        communicationFailureResolver: String
-    });
-
-    Cluster.index({name: 1, space: 1}, {unique: true});
-
-    // Define Notebook schema.
-    const Notebook = new Schema({
-        space: {type: ObjectId, ref: 'Space', index: true, required: true},
-        name: String,
-        expandedParagraphs: [Number],
-        paragraphs: [{
-            name: String,
-            query: String,
-            editor: Boolean,
-            result: {type: String, enum: ['none', 'table', 'bar', 'pie', 'line', 'area']},
-            pageSize: Number,
-            timeLineSpan: String,
-            maxPages: Number,
-            hideSystemColumns: Boolean,
-            cacheName: String,
-            useAsDefaultSchema: Boolean,
-            chartsOptions: {barChart: {stacked: Boolean}, areaChart: {style: String}},
-            rate: {
-                value: Number,
-                unit: Number
-            },
-            qryType: String,
-            nonCollocatedJoins: {type: Boolean, default: false},
-            enforceJoinOrder: {type: Boolean, default: false},
-            lazy: {type: Boolean, default: false},
-            collocated: Boolean
-        }]
-    });
-
-    Notebook.index({name: 1, space: 1}, {unique: true});
-
-    // Define Activities schema.
-    const Activities = new Schema({
-        owner: {type: ObjectId, ref: 'Account'},
-        date: Date,
-        group: String,
-        action: String,
-        amount: {type: Number, default: 0}
-    });
-
-    Activities.index({owner: 1, group: 1, action: 1, date: 1}, {unique: true});
-
-    // Define Notifications schema.
-    const Notifications = new Schema({
-        owner: {type: ObjectId, ref: 'Account'},
-        date: Date,
-        message: String,
-        isShown: Boolean
-    });
-
-    return {
-        Space,
-        Account,
-        DomainModel,
-        Cache,
-        Igfs,
-        Cluster,
-        Notebook,
-        Activities,
-        Notifications
-    };
-};
diff --git a/modules/web-console/backend/app/settings.js b/modules/web-console/backend/app/settings.js
deleted file mode 100644
index 0079788..0000000
--- a/modules/web-console/backend/app/settings.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const fs = require('fs');
-const _ = require('lodash');
-
-// Fire me up!
-
-/**
- * Module with server-side configuration.
- */
-module.exports = {
-    implements: 'settings',
-    inject: ['nconf'],
-    factory(nconf) {
-        /**
-         * Normalize a port into a number, string, or false.
-         */
-        const _normalizePort = function(val) {
-            const port = parseInt(val, 10);
-
-            // named pipe
-            if (isNaN(port))
-                return val;
-
-            // port number
-            if (port >= 0)
-                return port;
-
-            return false;
-        };
-
-        const mail = nconf.get('mail') || {};
-
-        const packaged = __dirname.startsWith('/snapshot/') || __dirname.startsWith('C:\\snapshot\\');
-
-        const dfltAgentDists = packaged ? 'libs/agent_dists' : 'agent_dists';
-        const dfltHost = packaged ? '0.0.0.0' : '127.0.0.1';
-        const dfltPort = packaged ? 80 : 3000;
-
-        // We need this function because nconf() can return String or Boolean.
-        // And in JS we cannot compare String with Boolean.
-        const _isTrue = (confParam) => {
-            const v = nconf.get(confParam);
-
-            return v === 'true' || v === true;
-        };
-
-        let activationEnabled = _isTrue('activation:enabled');
-
-        if (activationEnabled && _.isEmpty(mail)) {
-            activationEnabled = false;
-
-            console.warn('Mail server settings are required for account confirmation!');
-        }
-
-        const settings = {
-            agent: {
-                dists: nconf.get('agent:dists') || dfltAgentDists
-            },
-            packaged,
-            server: {
-                host: nconf.get('server:host') || dfltHost,
-                port: _normalizePort(nconf.get('server:port') || dfltPort),
-                disableSignup: _isTrue('server:disable:signup')
-            },
-            mail,
-            activation: {
-                enabled: activationEnabled,
-                timeout: nconf.get('activation:timeout') || 1800000,
-                sendTimeout: nconf.get('activation:sendTimeout') || 180000
-            },
-            mongoUrl: nconf.get('mongodb:url') || 'mongodb://127.0.0.1/console',
-            cookieTTL: 3600000 * 24 * 30,
-            sessionSecret: nconf.get('server:sessionSecret') || 'keyboard cat',
-            tokenLength: 20
-        };
-
-        // Configure SSL options.
-        if (_isTrue('server:ssl')) {
-            const sslOptions = {
-                enable301Redirects: true,
-                trustXFPHeader: true,
-                isServer: true
-            };
-
-            const setSslOption = (name, fromFile = false) => {
-                const v = nconf.get(`server:${name}`);
-
-                const hasOption = !!v;
-
-                if (hasOption)
-                    sslOptions[name] = fromFile ? fs.readFileSync(v) : v;
-
-                return hasOption;
-            };
-
-            const setSslOptionBoolean = (name) => {
-                const v = nconf.get(`server:${name}`);
-
-                if (v)
-                    sslOptions[name] = v === 'true' || v === true;
-            };
-
-            setSslOption('key', true);
-            setSslOption('cert', true);
-            setSslOption('ca', true);
-            setSslOption('passphrase');
-            setSslOption('ciphers');
-            setSslOption('secureProtocol');
-            setSslOption('clientCertEngine');
-            setSslOption('pfx', true);
-            setSslOption('crl');
-            setSslOption('dhparam');
-            setSslOption('ecdhCurve');
-            setSslOption('maxVersion');
-            setSslOption('minVersion');
-            setSslOption('secureOptions');
-            setSslOption('sessionIdContext');
-
-            setSslOptionBoolean('honorCipherOrder');
-            setSslOptionBoolean('requestCert');
-            setSslOptionBoolean('rejectUnauthorized');
-
-            // Special care for case, when user set password for something like "123456".
-            if (sslOptions.passphrase)
-                sslOptions.passphrase = sslOptions.passphrase.toString();
-
-            settings.server.SSLOptions = sslOptions;
-        }
-
-        return settings;
-    }
-};
diff --git a/modules/web-console/backend/config/settings.json.sample b/modules/web-console/backend/config/settings.json.sample
deleted file mode 100644
index 02bc327..0000000
--- a/modules/web-console/backend/config/settings.json.sample
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "server": {
-    "port": 3000,
-    "sessionSecret": "CHANGE ME",
-    "ssl": false,
-    "key": "path to file with server.key",
-    "cert": "path to file with server.crt",
-    "ca": "path to file with ca.crt",
-    "passphrase": "password",
-    "ciphers": "ECDHE-RSA-AES128-GCM-SHA256",
-    "secureProtocol": "TLSv1_2_method",
-    "requestCert": false,
-    "rejectUnauthorized": false,
-    "disable": {
-      "signup": false
-    }
-  },
-  "mongodb": {
-    "url": "mongodb://localhost/console"
-  },
-  "activation": {
-      "enabled": false,
-      "timeout": 1800000,
-      "sendTimeout": 180000
-  },
-  "mail": {
-    "service": "gmail",
-    "from": "Some Company Web Console <so...@some_company.com>",
-    "greeting": "Some Company Web Console",
-    "sign": "Kind regards,<br>Some Company Team",
-    "auth": {
-      "user": "some_username@some_company.com",
-      "pass": "CHANGE ME"
-    }
-  }
-}
diff --git a/modules/web-console/backend/errors/AppErrorException.js b/modules/web-console/backend/errors/AppErrorException.js
deleted file mode 100644
index 19a9b0d..0000000
--- a/modules/web-console/backend/errors/AppErrorException.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-class AppErrorException extends Error {
-    constructor(message) {
-        super(message);
-
-        this.name = this.constructor.name;
-        this.code = 400;
-
-        if (typeof Error.captureStackTrace === 'function')
-            Error.captureStackTrace(this, this.constructor);
-        else
-            this.stack = (new Error(message)).stack;
-    }
-}
-
-module.exports = AppErrorException;
diff --git a/modules/web-console/backend/errors/AuthFailedException.js b/modules/web-console/backend/errors/AuthFailedException.js
deleted file mode 100644
index 9cab6ac..0000000
--- a/modules/web-console/backend/errors/AuthFailedException.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const AppErrorException = require('./AppErrorException');
-
-class AuthFailedException extends AppErrorException {
-    constructor(message) {
-        super(message);
-
-        this.code = 401;
-    }
-}
-
-module.exports = AuthFailedException;
diff --git a/modules/web-console/backend/errors/DuplicateKeyException.js b/modules/web-console/backend/errors/DuplicateKeyException.js
deleted file mode 100644
index 536d53d..0000000
--- a/modules/web-console/backend/errors/DuplicateKeyException.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const AppErrorException = require('./AppErrorException');
-
-class DuplicateKeyException extends AppErrorException {
-    constructor(message) {
-        super(message);
-    }
-}
-
-module.exports = DuplicateKeyException;
diff --git a/modules/web-console/backend/errors/IllegalAccessError.js b/modules/web-console/backend/errors/IllegalAccessError.js
deleted file mode 100644
index 7de9bb1..0000000
--- a/modules/web-console/backend/errors/IllegalAccessError.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const AppErrorException = require('./AppErrorException');
-
-class IllegalAccessError extends AppErrorException {
-    constructor(message) {
-        super(message);
-
-        this.code = 403;
-    }
-}
-
-module.exports = IllegalAccessError;
diff --git a/modules/web-console/backend/errors/IllegalArgumentException.js b/modules/web-console/backend/errors/IllegalArgumentException.js
deleted file mode 100644
index aeb4187..0000000
--- a/modules/web-console/backend/errors/IllegalArgumentException.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const AppErrorException = require('./AppErrorException');
-
-class IllegalArgumentException extends AppErrorException {
-    constructor(message) {
-        super(message);
-    }
-}
-
-module.exports = IllegalArgumentException;
diff --git a/modules/web-console/backend/errors/MissingConfirmRegistrationException.js b/modules/web-console/backend/errors/MissingConfirmRegistrationException.js
deleted file mode 100644
index a094a67..0000000
--- a/modules/web-console/backend/errors/MissingConfirmRegistrationException.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const IllegalAccessError = require('./IllegalAccessError');
-
-class MissingConfirmRegistrationException extends IllegalAccessError {
-    constructor(email) {
-        super('User account email not activated');
-
-        this.data = {
-            errorCode: 10104,
-            message: this.message,
-            email
-        };
-    }
-}
-
-module.exports = MissingConfirmRegistrationException;
diff --git a/modules/web-console/backend/errors/MissingResourceException.js b/modules/web-console/backend/errors/MissingResourceException.js
deleted file mode 100644
index aeac70e..0000000
--- a/modules/web-console/backend/errors/MissingResourceException.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const AppErrorException = require('./AppErrorException');
-
-class MissingResourceException extends AppErrorException {
-    constructor(message) {
-        super(message);
-
-        this.code = 404;
-    }
-}
-
-module.exports = MissingResourceException;
diff --git a/modules/web-console/backend/errors/ServerErrorException.js b/modules/web-console/backend/errors/ServerErrorException.js
deleted file mode 100644
index c2edb7f..0000000
--- a/modules/web-console/backend/errors/ServerErrorException.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-class ServerErrorException extends Error {
-    constructor(message) {
-        super(message);
-
-        this.name = this.constructor.name;
-        this.code = 500;
-        this.message = message;
-
-        if (typeof Error.captureStackTrace === 'function')
-            Error.captureStackTrace(this, this.constructor);
-        else
-            this.stack = (new Error(message)).stack;
-    }
-}
-
-module.exports = ServerErrorException;
diff --git a/modules/web-console/backend/errors/index.js b/modules/web-console/backend/errors/index.js
deleted file mode 100644
index cb8f043..0000000
--- a/modules/web-console/backend/errors/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-const AppErrorException = require('./AppErrorException');
-const IllegalArgumentException = require('./IllegalArgumentException');
-const IllegalAccessError = require('./IllegalAccessError');
-const DuplicateKeyException = require('./DuplicateKeyException');
-const ServerErrorException = require('./ServerErrorException');
-const MissingConfirmRegistrationException = require('./MissingConfirmRegistrationException');
-const MissingResourceException = require('./MissingResourceException');
-const AuthFailedException = require('./AuthFailedException');
-
-module.exports = {
-    implements: 'errors',
-    factory: () => ({
-        AppErrorException,
-        IllegalAccessError,
-        IllegalArgumentException,
-        DuplicateKeyException,
-        ServerErrorException,
-        MissingConfirmRegistrationException,
-        MissingResourceException,
-        AuthFailedException
-    })
-};
diff --git a/modules/web-console/backend/index.js b/modules/web-console/backend/index.js
deleted file mode 100755
index 26584bc..0000000
--- a/modules/web-console/backend/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const path = require('path');
-
-const appPath = require('app-module-path');
-appPath.addPath(__dirname);
-appPath.addPath(path.join(__dirname, 'node_modules'));
-
-const { migrate, init } = require('./launch-tools');
-
-const injector = require('./injector');
-
-injector.log.info = () => {};
-injector.log.debug = () => {};
-
-injector('mongo')
-    .then((mongo) => migrate(mongo.connection, 'Ignite', path.join(__dirname, 'migrations')))
-    .then(() => Promise.all([injector('settings'), injector('api-server'), injector('agents-handler'), injector('browsers-handler')]))
-    .then(init)
-    .catch((err) => {
-        console.error(err);
-
-        process.exit(1);
-    });
diff --git a/modules/web-console/backend/injector.js b/modules/web-console/backend/injector.js
deleted file mode 100644
index c30609a..0000000
--- a/modules/web-console/backend/injector.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const fireUp = require('fire-up');
-
-module.exports = fireUp.newInjector({
-    basePath: __dirname,
-    modules: [
-        './app/**/*.js',
-        './errors/**/*.js',
-        './middlewares/**/*.js',
-        './routes/**/*.js',
-        './services/**/*.js'
-    ]
-});
diff --git a/modules/web-console/backend/launch-tools.js b/modules/web-console/backend/launch-tools.js
deleted file mode 100644
index 7b44aca..0000000
--- a/modules/web-console/backend/launch-tools.js
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-const _ = require('lodash');
-const http = require('http');
-const https = require('https');
-const MigrateMongoose = require('migrate-mongoose-typescript');
-
-/**
- * Event listener for HTTP server "error" event.
- */
-const _onError = (addr, error) => {
-    if (error.syscall !== 'listen')
-        throw error;
-
-    // Handle specific listen errors with friendly messages.
-    switch (error.code) {
-        case 'EACCES':
-            console.error(`Requires elevated privileges for bind to ${addr}`);
-            process.exit(1);
-
-            break;
-        case 'EADDRINUSE':
-            console.error(`${addr} is already in use`);
-            process.exit(1);
-
-            break;
-        default:
-            throw error;
-    }
-};
-
-/**
- * @param settings
- * @param {ApiServer} apiSrv
- * @param {AgentsHandler} agentsHnd
- * @param {BrowsersHandler} browsersHnd
- */
-const init = ([settings, apiSrv, agentsHnd, browsersHnd]) => {
-    // Start rest server.
-    const sslOptions = settings.server.SSLOptions;
-
-    console.log(`Starting ${sslOptions ? 'HTTPS' : 'HTTP'} server`);
-
-    const srv = sslOptions ? https.createServer(sslOptions) : http.createServer();
-
-    srv.listen(settings.server.port, settings.server.host);
-
-    const addr = `${settings.server.host}:${settings.server.port}`;
-
-    srv.on('error', _onError.bind(null, addr));
-    srv.on('listening', () => console.log(`Start listening on ${addr}`));
-
-    apiSrv.attach(srv);
-
-    agentsHnd.attach(srv, browsersHnd);
-    browsersHnd.attach(srv, agentsHnd);
-
-    // Used for automated test.
-    if (process.send)
-        process.send('running');
-};
-
-/**
- * Run mongo model migration.
- *
- * @param connection Mongo connection.
- * @param group Migrations group.
- * @param migrationsPath Migrations path.
- * @param collectionName Name of collection where migrations write info about applied scripts.
- */
-const migrate = (connection, group, migrationsPath, collectionName) => {
-    const migrator = new MigrateMongoose({
-        migrationsPath,
-        connection,
-        collectionName,
-        autosync: true
-    });
-
-    console.log(`Running ${group} migrations...`);
-
-    return migrator.run('up')
-        .then(() => console.log(`All ${group} migrations finished successfully.`))
-        .catch((err) => {
-            const msg = _.get(err, 'message');
-
-            if (_.startsWith(msg, 'There are no migrations to run') || _.startsWith(msg, 'There are no pending migrations.')) {
-                console.log(`There are no ${group} migrations to run.`);
-
-                return;
-            }
-
-            throw err;
-        });
-};
-
-module.exports = { migrate, init };
diff --git a/modules/web-console/backend/middlewares/api.js b/modules/web-console/backend/middlewares/api.js
deleted file mode 100644
index d4d832b..0000000
--- a/modules/web-console/backend/middlewares/api.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-const _ = require('lodash');
-
-module.exports = {
-    implements: 'middlewares:api'
-};
-
-module.exports.factory = () => {
-    return (req, res, next) => {
-        // Set headers to avoid API caching in browser (esp. IE)
-        res.header('Cache-Control', 'must-revalidate');
-        res.header('Expires', '-1');
-        res.header('Last-Modified', new Date().toUTCString());
-
-        res.api = {
-            error(err) {
-                if (_.includes(['MongoError', 'MongooseError'], err.name))
-                    return res.status(500).send(err.message);
-
-                if (_.isObject(err.data))
-                    return res.status(err.httpCode || err.code || 500).json(err.data);
-
-                res.status(err.httpCode || err.code || 500).send(err.message);
-            },
-
-            ok(data) {
-                if (_.isNil(data))
-                    return res.sendStatus(404);
-
-                res.status(200).json(data);
-            },
-
-            done() {
-                res.sendStatus(200);
-            }
-        };
-
-        next();
-    };
-};
diff --git a/modules/web-console/backend/middlewares/demo.js b/modules/web-console/backend/middlewares/demo.js
deleted file mode 100644
index 537ede1..0000000
--- a/modules/web-console/backend/middlewares/demo.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-module.exports = {
-    implements: 'middlewares:demo',
-    factory: () => {
-        return (req, res, next) => {
-            req.demo = () => req.header('IgniteDemoMode');
-
-            next();
-        };
-    }
-};
diff --git a/modules/web-console/backend/middlewares/host.js b/modules/web-console/backend/middlewares/host.js
deleted file mode 100644
index 4c21da2..0000000
--- a/modules/web-console/backend/middlewares/host.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-module.exports = {
-    implements: 'middlewares:host',
-    factory: () => {
-        return (req, res, next) => {
-            req.origin = function() {
-                if (req.headers.origin)
-                    return req.headers.origin;
-
-                const proto = req.headers['x-forwarded-proto'] || req.protocol;
-
-                const host = req.headers['x-forwarded-host'] || req.get('host');
-
-                return `${proto}://${host}`;
-            };
-
-            next();
-        };
-    }
-};
diff --git a/modules/web-console/backend/middlewares/user.js b/modules/web-console/backend/middlewares/user.js
deleted file mode 100644
index 8923211..0000000
--- a/modules/web-console/backend/middlewares/user.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-// Fire me up!
-
-module.exports = {
-    implements: 'middlewares:user',
-    factory: () => {
-        return (req, res, next) => {
-            req.currentUserId = function() {
-                if (req.session.viewedUser && req.user.admin)
-                    return req.session.viewedUser._id;
-
-                return req.user._id;
-            };
-
-            next();
-        };
-    }
-};
diff --git a/modules/web-console/backend/migrations/1502249492000-invalidate_rename.js b/modules/web-console/backend/migrations/1502249492000-invalidate_rename.js
deleted file mode 100644
index 50b1438..0000000
--- a/modules/web-console/backend/migrations/1502249492000-invalidate_rename.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-exports.up = function up(done) {
-    this('Cache').updateMany({}, { $rename: {invalidate: 'isInvalidate'}})
-        .then(() => done())
-        .catch(done);
-};
-
-exports.down = function down(done) {
-    this('Cache').updateMany({}, { $rename: {isInvalidate: 'invalidate'}})
-        .then(() => done())
-        .catch(done);
-};
diff --git a/modules/web-console/backend/migrations/1502432624000-cache-index.js b/modules/web-console/backend/migrations/1502432624000-cache-index.js
deleted file mode 100644
index 147e2ad..0000000
--- a/modules/web-console/backend/migrations/1502432624000-cache-index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const recreateIndex = require('./migration-utils').recreateIndex;
-
-exports.up = function up(done) {
-    recreateIndex(done, this('Cache').collection,
-        'name_1_space_1',
-        {name: 1, space: 1},
-        {name: 1, space: 1, clusters: 1});
-};
-
-exports.down = function down(done) {
-    recreateIndex(done, this('Cache').collection,
-        'name_1_space_1_clusters_1',
-        {name: 1, space: 1, clusters: 1},
-        {name: 1, space: 1});
-};
diff --git a/modules/web-console/backend/migrations/1504672035000-igfs-index.js b/modules/web-console/backend/migrations/1504672035000-igfs-index.js
deleted file mode 100644
index e802ca9..0000000
--- a/modules/web-console/backend/migrations/1504672035000-igfs-index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const recreateIndex = require('./migration-utils').recreateIndex;
-
-exports.up = function up(done) {
-    recreateIndex(done, this('Igfs').collection,
-        'name_1_space_1',
-        {name: 1, space: 1},
-        {name: 1, space: 1, clusters: 1});
-};
-
-exports.down = function down(done) {
-    recreateIndex(done, this('Igfs').collection,
-        'name_1_space_1_clusters_1',
-        {name: 1, space: 1, clusters: 1},
-        {name: 1, space: 1});
-};
diff --git a/modules/web-console/backend/migrations/1505114649000-models-index.js b/modules/web-console/backend/migrations/1505114649000-models-index.js
deleted file mode 100644
index c007b01..0000000
--- a/modules/web-console/backend/migrations/1505114649000-models-index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const recreateIndex = require('./migration-utils').recreateIndex;
-
-exports.up = function up(done) {
-    recreateIndex(done, this('DomainModel').collection,
-        'valueType_1_space_1',
-        {valueType: 1, space: 1},
-        {valueType: 1, space: 1, clusters: 1});
-};
-
-exports.down = function down(done) {
-    recreateIndex(done, this('DomainModel').collection,
-        'valueType_1_space_1_clusters_1',
-        {valueType: 1, space: 1, clusters: 1},
-        {valueType: 1, space: 1});
-};
diff --git a/modules/web-console/backend/migrations/1508395969410-init-registered-date.js b/modules/web-console/backend/migrations/1508395969410-init-registered-date.js
deleted file mode 100644
index 227d743..0000000
--- a/modules/web-console/backend/migrations/1508395969410-init-registered-date.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const _ = require('lodash');
-
-exports.up = function up(done) {
-    const accountsModel = this('Account');
-
-    accountsModel.find({}).lean().exec()
-        .then((accounts) => _.reduce(accounts, (start, account) => start
-            .then(() => accountsModel.updateOne({_id: account._id}, {$set: {registered: account.lastLogin}}).exec()), Promise.resolve()))
-        .then(() => done())
-        .catch(done);
-};
-
-exports.down = function down(done) {
-    this('Account').updateMany({}, {$unset: {registered: 1}}).exec()
-        .then(() => done())
-        .catch(done);
-};
diff --git a/modules/web-console/backend/migrations/1516948939797-migrate-configs.js b/modules/web-console/backend/migrations/1516948939797-migrate-configs.js
deleted file mode 100644
index c5bd619..0000000
--- a/modules/web-console/backend/migrations/1516948939797-migrate-configs.js
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const _ = require('lodash');
-
-const log = require('./migration-utils').log;
-const error = require('./migration-utils').error;
-
-const getClusterForMigration = require('./migration-utils').getClusterForMigration;
-const getCacheForMigration = require('./migration-utils').getCacheForMigration;
-
-const _debug = false;
-const DUPLICATE_KEY_ERROR = 11000;
-
-let dup = 1;
-
-function makeDup(name) {
-    return name + `_dup_${dup++}`;
-}
-
-function linkCacheToCluster(clustersModel, cluster, cachesModel, cache, domainsModel) {
-    return clustersModel.updateOne({_id: cluster._id}, {$addToSet: {caches: cache._id}}).exec()
-        .then(() => cachesModel.updateOne({_id: cache._id}, {clusters: [cluster._id]}).exec())
-        .then(() => {
-            if (_.isEmpty(cache.domains))
-                return Promise.resolve();
-
-            return _.reduce(cache.domains, (start, domain) => start.then(() => {
-                return domainsModel.updateOne({_id: domain}, {clusters: [cluster._id]}).exec()
-                    .then(() => clustersModel.updateOne({_id: cluster._id}, {$addToSet: {models: domain}}).exec());
-            }), Promise.resolve());
-        })
-        .catch((err) => error(`Failed link cache to cluster [cache=${cache.name}, cluster=${cluster.name}]`, err));
-}
-
-function cloneCache(clustersModel, cachesModel, domainsModel, cache) {
-    const cacheId = cache._id;
-    const clusters = cache.clusters;
-
-    cache.clusters = [];
-
-    if (cache.cacheStoreFactory && cache.cacheStoreFactory.kind === null)
-        delete cache.cacheStoreFactory.kind;
-
-    return _.reduce(clusters, (start, cluster, idx) => start.then(() => {
-        if (idx > 0) {
-            delete cache._id;
-
-            const newCache = _.clone(cache);
-            const domainIds = newCache.domains;
-
-            newCache.clusters = [cluster];
-            newCache.domains = [];
-
-            return clustersModel.updateMany({_id: {$in: newCache.clusters}}, {$pull: {caches: cacheId}}).exec()
-                .then(() => cachesModel.create(newCache))
-                .catch((err) => {
-                    if (err.code === DUPLICATE_KEY_ERROR) {
-                        const retryWith = makeDup(newCache.name);
-
-                        error(`Failed to clone cache, will change cache name and retry [cache=${newCache.name}, retryWith=${retryWith}]`);
-
-                        newCache.name = retryWith;
-
-                        return cachesModel.create(newCache);
-                    }
-
-                    return Promise.reject(err);
-                })
-                .then((clone) => clustersModel.updateMany({_id: {$in: newCache.clusters}}, {$addToSet: {caches: clone._id}}).exec()
-                    .then(() => clone))
-                .then((clone) => {
-                    if (_.isEmpty(domainIds))
-                        return Promise.resolve();
-
-                    return _.reduce(domainIds, (start, domainId) => start.then(() => {
-                        return domainsModel.findOne({_id: domainId}).lean().exec()
-                            .then((domain) => {
-                                delete domain._id;
-
-                                const newDomain = _.clone(domain);
-
-                                newDomain.caches = [clone._id];
-                                newDomain.clusters = [cluster];
-
-                                return domainsModel.create(newDomain)
-                                    .catch((err) => {
-                                        if (err.code === DUPLICATE_KEY_ERROR) {
-                                            const retryWith = makeDup(newDomain.valueType);
-
-                                            error(`Failed to clone domain, will change type name and retry [cache=${newCache.name}, valueType=${newDomain.valueType}, retryWith=${retryWith}]`);
-
-                                            newDomain.valueType = retryWith;
-
-                                            return domainsModel.create(newDomain);
-                                        }
-                                    })
-                                    .then((createdDomain) => {
-                                        return clustersModel.updateOne({_id: cluster}, {$addToSet: {models: createdDomain._id}}).exec()
-                                            .then(() => cachesModel.updateOne({_id: clone.id}, {$addToSet: {domains: createdDomain._id}}));
-                                    })
-                                    .catch((err) => error('Failed to clone domain during cache clone', err));
-                            })
-                            .catch((err) => error(`Failed to duplicate domain model[domain=${domainId}], cache=${clone.name}]`, err));
-                    }), Promise.resolve());
-                })
-                .catch((err) => error(`Failed to clone cache[id=${cacheId}, name=${cache.name}]`, err));
-        }
-
-        return cachesModel.updateOne({_id: cacheId}, {clusters: [cluster]}).exec()
-            .then(() => clustersModel.updateOne({_id: cluster}, {$addToSet: {models: {$each: cache.domains}}}).exec());
-    }), Promise.resolve());
-}
-
-function migrateCache(clustersModel, cachesModel, domainsModel, cache) {
-    const clustersCnt = _.size(cache.clusters);
-
-    if (clustersCnt < 1) {
-        if (_debug)
-            log(`Found cache not linked to cluster [cache=${cache.name}]`);
-
-        return getClusterForMigration(clustersModel, cache.space)
-            .then((clusterLostFound) => linkCacheToCluster(clustersModel, clusterLostFound, cachesModel, cache, domainsModel));
-    }
-
-    if (clustersCnt > 1) {
-        if (_debug)
-            log(`Found cache linked to many clusters [cache=${cache.name}, clustersCnt=${clustersCnt}]`);
-
-        return cloneCache(clustersModel, cachesModel, domainsModel, cache);
-    }
-
-    // Nothing to migrate, cache linked to cluster 1-to-1.
-    return Promise.resolve();
-}
-
-function migrateCaches(clustersModel, cachesModel, domainsModel) {
-    return cachesModel.find({}).lean().exec()
-        .then((caches) => {
-            const cachesCnt = _.size(caches);
-
-            if (cachesCnt > 0) {
-                log(`Caches to migrate: ${cachesCnt}`);
-
-                return _.reduce(caches, (start, cache) => start.then(() => migrateCache(clustersModel, cachesModel, domainsModel, cache)), Promise.resolve())
-                    .then(() => log('Caches migration finished.'));
-            }
-
-            return Promise.resolve();
-
-        })
-        .catch((err) => error('Caches migration failed', err));
-}
-
-function linkIgfsToCluster(clustersModel, cluster, igfsModel, igfs) {
-    return clustersModel.updateOne({_id: cluster._id}, {$addToSet: {igfss: igfs._id}}).exec()
-        .then(() => igfsModel.updateOne({_id: igfs._id}, {clusters: [cluster._id]}).exec())
-        .catch((err) => error(`Failed link IGFS to cluster [IGFS=${igfs.name}, cluster=${cluster.name}]`, err));
-}
-
-function cloneIgfs(clustersModel, igfsModel, igfs) {
-    const igfsId = igfs._id;
-    const clusters = igfs.clusters;
-
-    delete igfs._id;
-    igfs.clusters = [];
-
-    return _.reduce(clusters, (start, cluster, idx) => start.then(() => {
-        const newIgfs = _.clone(igfs);
-
-        newIgfs.clusters = [cluster];
-
-        if (idx > 0) {
-            return clustersModel.updateMany({_id: {$in: newIgfs.clusters}}, {$pull: {igfss: igfsId}}).exec()
-                .then(() => igfsModel.create(newIgfs))
-                .then((clone) => clustersModel.updateMany({_id: {$in: newIgfs.clusters}}, {$addToSet: {igfss: clone._id}}).exec())
-                .catch((err) => error(`Failed to clone IGFS: id=${igfsId}, name=${igfs.name}]`, err));
-        }
-
-        return igfsModel.updateOne({_id: igfsId}, {clusters: [cluster]}).exec();
-    }), Promise.resolve());
-}
-
-function migrateIgfs(clustersModel, igfsModel, igfs) {
-    const clustersCnt = _.size(igfs.clusters);
-
-    if (clustersCnt < 1) {
-        if (_debug)
-            log(`Found IGFS not linked to cluster [IGFS=${igfs.name}]`);
-
-        return getClusterForMigration(clustersModel, igfs.space)
-            .then((clusterLostFound) => linkIgfsToCluster(clustersModel, clusterLostFound, igfsModel, igfs));
-    }
-
-    if (clustersCnt > 1) {
-        if (_debug)
-            log(`Found IGFS linked to many clusters [IGFS=${igfs.name}, clustersCnt=${clustersCnt}]`);
-
-        return cloneIgfs(clustersModel, igfsModel, igfs);
-    }
-
-    // Nothing to migrate, IGFS linked to cluster 1-to-1.
-    return Promise.resolve();
-}
-
-function migrateIgfss(clustersModel, igfsModel) {
-    return igfsModel.find({}).lean().exec()
-        .then((igfss) => {
-            const igfsCnt = _.size(igfss);
-
-            if (igfsCnt > 0) {
-                log(`IGFS to migrate: ${igfsCnt}`);
-
-                return _.reduce(igfss, (start, igfs) => start.then(() => migrateIgfs(clustersModel, igfsModel, igfs)), Promise.resolve())
-                    .then(() => log('IGFS migration finished.'));
-            }
-
-            return Promise.resolve();
-        })
-        .catch((err) => error('IGFS migration failed', err));
-}
-
-function linkDomainToCluster(clustersModel, cluster, domainsModel, domain) {
-    return clustersModel.updateOne({_id: cluster._id}, {$addToSet: {models: domain._id}}).exec()
-        .then(() => domainsModel.updateOne({_id: domain._id}, {clusters: [cluster._id]}).exec())
-        .catch((err) => error(`Failed link domain model to cluster [domain=${domain._id}, cluster=${cluster.name}]`, err));
-}
-
-function linkDomainToCache(cachesModel, cache, domainsModel, domain) {
-    return cachesModel.updateOne({_id: cache._id}, {$addToSet: {domains: domain._id}}).exec()
-        .then(() => domainsModel.updateOne({_id: domain._id}, {caches: [cache._id]}).exec())
-        .catch((err) => error(`Failed link domain model to cache [cache=${cache.name}, domain=${domain._id}]`, err));
-}
-
-function migrateDomain(clustersModel, cachesModel, domainsModel, domain) {
-    const cachesCnt = _.size(domain.caches);
-
-    if (cachesCnt < 1) {
-        if (_debug)
-            log(`Found domain model not linked to cache [domain=${domain._id}]`);
-
-        return getClusterForMigration(clustersModel, domain.space)
-            .then((clusterLostFound) => linkDomainToCluster(clustersModel, clusterLostFound, domainsModel, domain))
-            .then(() => getCacheForMigration(clustersModel, cachesModel, domain.space))
-            .then((cacheLostFound) => linkDomainToCache(cachesModel, cacheLostFound, domainsModel, domain))
-            .catch((err) => error(`Failed to migrate not linked domain [domain=${domain._id}]`, err));
-    }
-
-    if (_.isEmpty(domain.clusters)) {
-        const cachesCnt = _.size(domain.caches);
-
-        if (_debug)
-            log(`Found domain model without cluster: [domain=${domain._id}, cachesCnt=${cachesCnt}]`);
-
-        const grpByClusters = {};
-
-        return cachesModel.find({_id: {$in: domain.caches}}).lean().exec()
-            .then((caches) => {
-                if (caches) {
-                    _.forEach(caches, (cache) => {
-                        const c = _.get(grpByClusters, cache.clusters[0]);
-
-                        if (c)
-                            c.push(cache._id);
-                        else
-                            grpByClusters[cache.clusters[0]] = [cache._id];
-                    });
-
-                    return _.reduce(_.keys(grpByClusters), (start, cluster, idx) => start.then(() => {
-                        const domainId = domain._id;
-
-                        const clusterCaches = grpByClusters[cluster];
-
-                        if (idx > 0) {
-                            delete domain._id;
-                            domain.caches = clusterCaches;
-
-                            return domainsModel.create(domain)
-                                .then((clonedDomain) => {
-                                    return cachesModel.updateOne({_id: {$in: clusterCaches}}, {$addToSet: {domains: clonedDomain._id}}).exec()
-                                        .then(() => clonedDomain);
-                                })
-                                .then((clonedDomain) => linkDomainToCluster(clustersModel, {_id: cluster, name: `stub${idx}`}, domainsModel, clonedDomain))
-                                .then(() => {
-                                    return cachesModel.updateMany({_id: {$in: clusterCaches}}, {$pull: {domains: domainId}}).exec();
-                                });
-                        }
-
-                        return domainsModel.updateOne({_id: domainId}, {caches: clusterCaches}).exec()
-                            .then(() => linkDomainToCluster(clustersModel, {_id: cluster, name: `stub${idx}`}, domainsModel, domain));
-                    }), Promise.resolve());
-                }
-
-                error(`Found domain with orphaned caches: [domain=${domain._id}, caches=${domain.caches}]`);
-
-                return Promise.resolve();
-            })
-            .catch((err) => error(`Failed to migrate domain [domain=${domain._id}]`, err));
-    }
-
-    // Nothing to migrate, other domains will be migrated with caches.
-    return Promise.resolve();
-}
-
-function migrateDomains(clustersModel, cachesModel, domainsModel) {
-    return domainsModel.find({}).lean().exec()
-        .then((domains) => {
-            const domainsCnt = _.size(domains);
-
-            if (domainsCnt > 0) {
-                log(`Domain models to migrate: ${domainsCnt}`);
-
-                return _.reduce(domains, (start, domain) => start.then(() => migrateDomain(clustersModel, cachesModel, domainsModel, domain)), Promise.resolve())
-                    .then(() => log('Domain models migration finished.'));
-            }
-
-            return Promise.resolve();
-        })
-        .catch((err) => error('Domain models migration failed', err));
-}
-
-function deduplicate(title, model, name) {
-    return model.find({}).lean().exec()
-        .then((items) => {
-            const sz = _.size(items);
-
-            if (sz > 0) {
-                log(`Deduplication of ${title} started...`);
-
-                let cnt = 0;
-
-                return _.reduce(items, (start, item) => start.then(() => {
-                    const data = item[name];
-
-                    const dataSz = _.size(data);
-
-                    if (dataSz < 2)
-                        return Promise.resolve();
-
-                    const deduped = _.uniqWith(data, _.isEqual);
-
-                    if (dataSz !== _.size(deduped)) {
-                        return model.updateOne({_id: item._id}, {$set: {[name]: deduped}})
-                            .then(() => cnt++);
-                    }
-
-                    return Promise.resolve();
-                }), Promise.resolve())
-                    .then(() => log(`Deduplication of ${title} finished: ${cnt}.`));
-            }
-
-            return Promise.resolve();
-        });
-}
-
-exports.up = function up(done) {
-    const clustersModel = this('Cluster');
-    const cachesModel = this('Cache');
-    const domainsModel = this('DomainModel');
-    const igfsModel = this('Igfs');
-
-    process.on('unhandledRejection', function(reason, p) {
-        console.log('Unhandled rejection at:', p, 'reason:', reason);
-    });
-
-    Promise.resolve()
-        .then(() => deduplicate('Cluster caches', clustersModel, 'caches'))
-        .then(() => deduplicate('Cluster IGFS', clustersModel, 'igfss'))
-        .then(() => deduplicate('Cache clusters', cachesModel, 'clusters'))
-        .then(() => deduplicate('Cache domains', cachesModel, 'domains'))
-        .then(() => deduplicate('IGFS clusters', igfsModel, 'clusters'))
-        .then(() => deduplicate('Domain model caches', domainsModel, 'caches'))
-        .then(() => migrateCaches(clustersModel, cachesModel, domainsModel))
-        .then(() => migrateIgfss(clustersModel, igfsModel))
-        .then(() => migrateDomains(clustersModel, cachesModel, domainsModel))
-        .then(() => log(`Duplicates counter: ${dup}`))
-        .then(() => done())
-        .catch(done);
-};
-
-exports.down = function down(done) {
-    log('Model migration can not be reverted');
-
-    done();
-};
diff --git a/modules/web-console/backend/migrations/1547440382485-account-make-email-unique.js b/modules/web-console/backend/migrations/1547440382485-account-make-email-unique.js
deleted file mode 100644
index 3a6e453..0000000
--- a/modules/web-console/backend/migrations/1547440382485-account-make-email-unique.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const _ = require('lodash');
-
-const log = require('./migration-utils').log;
-
-function deduplicateAccounts(model) {
-    const accountsModel = model('Account');
-    const spaceModel = model('Space');
-
-    return accountsModel.aggregate([
-        {$group: {_id: '$email', count: {$sum: 1}}},
-        {$match: {count: {$gt: 1}}}
-    ]).exec()
-        .then((accounts) => _.map(accounts, '_id'))
-        .then((emails) => Promise.all(
-            _.map(emails, (email) => accountsModel.find({email}, {_id: 1, email: 1, lastActivity: 1, lastLogin: 1}).lean().exec())
-        ))
-        .then((promises) => {
-            const duplicates = _.flatMap(promises, (accounts) => _.sortBy(accounts, [(a) => a.lastActivity || '', 'lastLogin']).slice(0, -1));
-
-            if (_.isEmpty(duplicates))
-                log('Duplicates not found!');
-            else {
-                log(`Duplicates found: ${_.size(duplicates)}`);
-
-                _.forEach(duplicates, (dup) => log(`  ID: ${dup._id}, e-mail: ${dup.email}`));
-            }
-
-            return _.map(duplicates, '_id');
-        })
-        .then((accountIds) => {
-            if (_.isEmpty(accountIds))
-                return Promise.resolve();
-
-            return spaceModel.find({owner: {$in: accountIds}}, {_id: 1}).lean().exec()
-                .then((spaces) => _.map(spaces, '_id'))
-                .then((spaceIds) =>
-                    Promise.all([
-                        model('Cluster').deleteMany({space: {$in: spaceIds}}).exec(),
-                        model('Cache').deleteMany({space: {$in: spaceIds}}).exec(),
-                        model('DomainModel').deleteMany({space: {$in: spaceIds}}).exec(),
-                        model('Igfs').deleteMany({space: {$in: spaceIds}}).exec(),
-                        model('Notebook').deleteMany({space: {$in: spaceIds}}).exec(),
-                        model('Activities').deleteMany({owner: accountIds}).exec(),
-                        model('Notifications').deleteMany({owner: accountIds}).exec(),
-                        spaceModel.deleteMany({owner: accountIds}).exec(),
-                        accountsModel.deleteMany({_id: accountIds}).exec()
-                    ])
-                )
-                .then(() => {
-                    const conditions = _.map(accountIds, (accountId) => ({session: {$regex: `"${accountId}"`}}));
-
-                    return accountsModel.db.collection('sessions').deleteMany({$or: conditions});
-                });
-        });
-}
-
-exports.up = function up(done) {
-    deduplicateAccounts((name) => this(name))
-        .then(() => this('Account').collection.createIndex({email: 1}, {unique: true, background: false}))
-        .then(() => done())
-        .catch(done);
-};
-
-exports.down = function down(done) {
-    log('Account migration can not be reverted');
-
-    done();
-};
diff --git a/modules/web-console/backend/migrations/README.txt b/modules/web-console/backend/migrations/README.txt
deleted file mode 100644
index e907fad..0000000
--- a/modules/web-console/backend/migrations/README.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Ignite Web Console
-======================================
-
-This folder contains scripts for model migration.
diff --git a/modules/web-console/backend/migrations/migration-utils.js b/modules/web-console/backend/migrations/migration-utils.js
deleted file mode 100644
index 81c9095..0000000
--- a/modules/web-console/backend/migrations/migration-utils.js
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-function log(msg) {
-    console.log(`[${new Date().toISOString()}] [INFO ] ${msg}`);
-}
-
-function error(msg, err) {
-    console.log(`[${new Date().toISOString()}] [ERROR] ${msg}.` + (err ? ` Error: ${err}` : ''));
-}
-
-function recreateIndex0(done, model, oldIdxName, oldIdx, newIdx) {
-    return model.indexExists(oldIdxName)
-        .then((exists) => {
-            if (exists) {
-                return model.dropIndex(oldIdx)
-                    .then(() => model.createIndex(newIdx, {unique: true, background: false}));
-            }
-        })
-        .then(() => done())
-        .catch((err) => {
-            if (err.code === 12587) {
-                log(`Background operation in progress for: ${oldIdxName}, will retry in 3 seconds.`);
-
-                setTimeout(() => recreateIndex0(done, model, oldIdxName, oldIdx, newIdx), 3000);
-            }
-            else {
-                log(`Failed to recreate index: ${err}`);
-
-                done();
-            }
-        });
-}
-
-function recreateIndex(done, model, oldIdxName, oldIdx, newIdx) {
-    setTimeout(() => recreateIndex0(done, model, oldIdxName, oldIdx, newIdx), 1000);
-}
-
-const LOST_AND_FOUND = 'LOST_AND_FOUND';
-
-function getClusterForMigration(clustersModel, space) {
-    return clustersModel.findOne({space, name: LOST_AND_FOUND}).lean().exec()
-        .then((cluster) => {
-            if (cluster)
-                return cluster;
-
-            return clustersModel.create({
-                space,
-                name: LOST_AND_FOUND,
-                connector: {noDelay: true},
-                communication: {tcpNoDelay: true},
-                igfss: [],
-                caches: [],
-                binaryConfiguration: {
-                    compactFooter: true,
-                    typeConfigurations: []
-                },
-                discovery: {
-                    kind: 'Multicast',
-                    Multicast: {addresses: ['127.0.0.1:47500..47510']},
-                    Vm: {addresses: ['127.0.0.1:47500..47510']}
-                }
-            });
-        });
-}
-
-function getCacheForMigration(clustersModel, cachesModel, space) {
-    return cachesModel.findOne({space, name: LOST_AND_FOUND})
-        .then((cache) => {
-            if (cache)
-                return cache;
-
-            return getClusterForMigration(clustersModel, space)
-                .then((cluster) => {
-                    return cachesModel.create({
-                        space,
-                        name: LOST_AND_FOUND,
-                        clusters: [cluster._id],
-                        domains: [],
-                        cacheMode: 'PARTITIONED',
-                        atomicityMode: 'ATOMIC',
-                        readFromBackup: true,
-                        copyOnRead: true,
-                        readThrough: false,
-                        writeThrough: false,
-                        sqlFunctionClasses: [],
-                        writeBehindCoalescing: true,
-                        cacheStoreFactory: {
-                            CacheHibernateBlobStoreFactory: {hibernateProperties: []},
-                            CacheJdbcBlobStoreFactory: {connectVia: 'DataSource'}
-                        },
-                        nearConfiguration: {},
-                        evictionPolicy: {}
-                    });
-                })
-                .then((cache) => {
-                    return clustersModel.updateOne({_id: cache.clusters[0]}, {$addToSet: {caches: cache._id}}).exec()
-                        .then(() => cache);
-                });
-        });
-}
-
-module.exports = {
-    log,
-    error,
-    recreateIndex,
-    getClusterForMigration,
-    getCacheForMigration
-};
-
-
-
-
diff --git a/modules/web-console/backend/package-lock.json b/modules/web-console/backend/package-lock.json
deleted file mode 100644
index 28051fa..0000000
--- a/modules/web-console/backend/package-lock.json
+++ /dev/null
@@ -1,8115 +0,0 @@
-{
-  "name": "ignite-web-console",
-  "version": "8.7.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@babel/code-frame": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
-      "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
-      "dev": true,
-      "requires": {
-        "@babel/highlight": "^7.0.0"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
-      "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.0.0",
-        "esutils": "^2.0.2",
-        "js-tokens": "^4.0.0"
-      },
-      "dependencies": {
-        "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"
-          }
-        },
-        "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"
-          }
-        },
-        "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
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "@babel/parser": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz",
-      "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA=="
-    },
-    "@mrmlnc/readdir-enhanced": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
-      "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
-      "requires": {
-        "call-me-maybe": "^1.0.1",
-        "glob-to-regexp": "^0.3.0"
-      }
-    },
-    "@nodelib/fs.stat": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
-      "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
-    },
-    "accepts": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
-      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
-      "requires": {
-        "mime-types": "~2.1.18",
-        "negotiator": "0.6.1"
-      }
-    },
-    "acorn": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
-      "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
-      "dev": true
-    },
-    "acorn-jsx": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
-      "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
-      "dev": true
-    },
-    "after": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
-    },
-    "agent-base": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
-      "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
-      "dev": true,
-      "requires": {
-        "es6-promisify": "^5.0.0"
-      }
-    },
-    "ajv": {
-      "version": "6.10.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
-      "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
-      "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"
-      }
-    },
-    "ansi-colors": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
-      "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
-      "dev": true
-    },
-    "ansi-escapes": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
-      "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4="
-    },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
-    },
-    "ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
-    },
-    "anymatch": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
-      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
-      "optional": true,
-      "requires": {
-        "micromatch": "^2.1.5",
-        "normalize-path": "^2.0.0"
-      }
-    },
-    "app-module-path": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz",
-      "integrity": "sha1-ZBqlXft9am8KgUHEucCqULbCTdU="
-    },
-    "archetype": {
-      "version": "0.8.8",
-      "resolved": "https://registry.npmjs.org/archetype/-/archetype-0.8.8.tgz",
-      "integrity": "sha512-isdIbFfT3zXVan34hmxIwI8A5/8lo9MaYmwXF1iYWCnJS1GvKKnZ4GrXoOUgKdUMCiB/wdguRXeStCUQhFjexg==",
-      "requires": {
-        "lodash.clonedeep": "4.x",
-        "lodash.set": "4.x",
-        "lodash.unset": "4.x",
-        "mpath": "0.5.1",
-        "standard-error": "1.1.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"
-      }
-    },
-    "arr-diff": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
-      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
-      "optional": true,
-      "requires": {
-        "arr-flatten": "^1.0.1"
-      }
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
-    },
-    "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "requires": {
-        "array-uniq": "^1.0.1"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
-    },
-    "array-unique": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
-      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
-      "optional": true
-    },
-    "arraybuffer.slice": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
-      "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
-    },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
-    },
-    "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "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="
-    },
-    "assertion-error": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
-      "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
-      "dev": true
-    },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
-    },
-    "astral-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
-      "dev": true
-    },
-    "async": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
-      "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
-      "requires": {
-        "lodash": "^4.17.10"
-      }
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "optional": true
-    },
-    "async-limiter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
-      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
-    },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
-    },
-    "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="
-    },
-    "aws4": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
-      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
-    },
-    "babel-cli": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
-      "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
-      "requires": {
-        "babel-core": "^6.26.0",
-        "babel-polyfill": "^6.26.0",
-        "babel-register": "^6.26.0",
-        "babel-runtime": "^6.26.0",
-        "chokidar": "^1.6.1",
-        "commander": "^2.11.0",
-        "convert-source-map": "^1.5.0",
-        "fs-readdir-recursive": "^1.0.0",
-        "glob": "^7.1.2",
-        "lodash": "^4.17.4",
-        "output-file-sync": "^1.1.2",
-        "path-is-absolute": "^1.0.1",
-        "slash": "^1.0.0",
-        "source-map": "^0.5.6",
-        "v8flags": "^2.1.1"
-      }
-    },
-    "babel-code-frame": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
-      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
-      "requires": {
-        "chalk": "^1.1.3",
-        "esutils": "^2.0.2",
-        "js-tokens": "^3.0.2"
-      }
-    },
-    "babel-core": {
-      "version": "6.26.3",
-      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
-      "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
-      "requires": {
-        "babel-code-frame": "^6.26.0",
-        "babel-generator": "^6.26.0",
-        "babel-helpers": "^6.24.1",
-        "babel-messages": "^6.23.0",
-        "babel-register": "^6.26.0",
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "convert-source-map": "^1.5.1",
-        "debug": "^2.6.9",
-        "json5": "^0.5.1",
-        "lodash": "^4.17.4",
-        "minimatch": "^3.0.4",
-        "path-is-absolute": "^1.0.1",
-        "private": "^0.1.8",
-        "slash": "^1.0.0",
-        "source-map": "^0.5.7"
-      },
-      "dependencies": {
-        "minimatch": {
-          "version": "3.0.4",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        }
-      }
-    },
-    "babel-generator": {
-      "version": "6.26.1",
-      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
-      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
-      "requires": {
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "detect-indent": "^4.0.0",
-        "jsesc": "^1.3.0",
-        "lodash": "^4.17.4",
-        "source-map": "^0.5.7",
-        "trim-right": "^1.0.1"
-      }
-    },
-    "babel-helper-builder-binary-assignment-operator-visitor": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
-      "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
-      "requires": {
-        "babel-helper-explode-assignable-expression": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-call-delegate": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
-      "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
-      "requires": {
-        "babel-helper-hoist-variables": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-define-map": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
-      "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
-      "requires": {
-        "babel-helper-function-name": "^6.24.1",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-helper-explode-assignable-expression": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
-      "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-function-name": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
-      "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
-      "requires": {
-        "babel-helper-get-function-arity": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-get-function-arity": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
-      "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-hoist-variables": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
-      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-optimise-call-expression": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
-      "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-regex": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
-      "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-helper-remap-async-to-generator": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
-      "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
-      "requires": {
-        "babel-helper-function-name": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helper-replace-supers": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
-      "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
-      "requires": {
-        "babel-helper-optimise-call-expression": "^6.24.1",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-helpers": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
-      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-messages": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
-      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-check-es2015-constants": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
-      "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-syntax-async-functions": {
-      "version": "6.13.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
-      "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU="
-    },
-    "babel-plugin-syntax-exponentiation-operator": {
-      "version": "6.13.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
-      "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4="
-    },
-    "babel-plugin-syntax-trailing-function-commas": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
-      "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM="
-    },
-    "babel-plugin-transform-async-to-generator": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
-      "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
-      "requires": {
-        "babel-helper-remap-async-to-generator": "^6.24.1",
-        "babel-plugin-syntax-async-functions": "^6.8.0",
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-arrow-functions": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
-      "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-block-scoped-functions": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
-      "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-block-scoping": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
-      "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-plugin-transform-es2015-classes": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
-      "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
-      "requires": {
-        "babel-helper-define-map": "^6.24.1",
-        "babel-helper-function-name": "^6.24.1",
-        "babel-helper-optimise-call-expression": "^6.24.1",
-        "babel-helper-replace-supers": "^6.24.1",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-computed-properties": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
-      "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-destructuring": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
-      "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-duplicate-keys": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
-      "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-for-of": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
-      "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-function-name": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
-      "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
-      "requires": {
-        "babel-helper-function-name": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-literals": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
-      "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-amd": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
-      "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
-      "requires": {
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-commonjs": {
-      "version": "6.26.2",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
-      "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
-      "requires": {
-        "babel-plugin-transform-strict-mode": "^6.24.1",
-        "babel-runtime": "^6.26.0",
-        "babel-template": "^6.26.0",
-        "babel-types": "^6.26.0"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-systemjs": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
-      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
-      "requires": {
-        "babel-helper-hoist-variables": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-modules-umd": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
-      "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
-      "requires": {
-        "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-object-super": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
-      "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
-      "requires": {
-        "babel-helper-replace-supers": "^6.24.1",
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-parameters": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
-      "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
-      "requires": {
-        "babel-helper-call-delegate": "^6.24.1",
-        "babel-helper-get-function-arity": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-template": "^6.24.1",
-        "babel-traverse": "^6.24.1",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-shorthand-properties": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
-      "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-spread": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
-      "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-sticky-regex": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
-      "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
-      "requires": {
-        "babel-helper-regex": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-plugin-transform-es2015-template-literals": {
-      "version": "6.22.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
-      "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-typeof-symbol": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
-      "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-es2015-unicode-regex": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
-      "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
-      "requires": {
-        "babel-helper-regex": "^6.24.1",
-        "babel-runtime": "^6.22.0",
-        "regexpu-core": "^2.0.0"
-      }
-    },
-    "babel-plugin-transform-exponentiation-operator": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
-      "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
-      "requires": {
-        "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
-        "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-regenerator": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
-      "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
-      "requires": {
-        "regenerator-transform": "^0.10.0"
-      }
-    },
-    "babel-plugin-transform-runtime": {
-      "version": "6.23.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz",
-      "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=",
-      "requires": {
-        "babel-runtime": "^6.22.0"
-      }
-    },
-    "babel-plugin-transform-strict-mode": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
-      "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
-      "requires": {
-        "babel-runtime": "^6.22.0",
-        "babel-types": "^6.24.1"
-      }
-    },
-    "babel-polyfill": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
-      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "core-js": "^2.5.0",
-        "regenerator-runtime": "^0.10.5"
-      },
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.10.5",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
-          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
-        }
-      }
-    },
-    "babel-preset-es2015": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
-      "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=",
-      "requires": {
-        "babel-plugin-check-es2015-constants": "^6.22.0",
-        "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
-        "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
-        "babel-plugin-transform-es2015-block-scoping": "^6.24.1",
-        "babel-plugin-transform-es2015-classes": "^6.24.1",
-        "babel-plugin-transform-es2015-computed-properties": "^6.24.1",
-        "babel-plugin-transform-es2015-destructuring": "^6.22.0",
-        "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1",
-        "babel-plugin-transform-es2015-for-of": "^6.22.0",
-        "babel-plugin-transform-es2015-function-name": "^6.24.1",
-        "babel-plugin-transform-es2015-literals": "^6.22.0",
-        "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
-        "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
-        "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
-        "babel-plugin-transform-es2015-modules-umd": "^6.24.1",
-        "babel-plugin-transform-es2015-object-super": "^6.24.1",
-        "babel-plugin-transform-es2015-parameters": "^6.24.1",
-        "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1",
-        "babel-plugin-transform-es2015-spread": "^6.22.0",
-        "babel-plugin-transform-es2015-sticky-regex": "^6.24.1",
-        "babel-plugin-transform-es2015-template-literals": "^6.22.0",
-        "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0",
-        "babel-plugin-transform-es2015-unicode-regex": "^6.24.1",
-        "babel-plugin-transform-regenerator": "^6.24.1"
-      }
-    },
-    "babel-preset-es2016": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz",
-      "integrity": "sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s=",
-      "requires": {
-        "babel-plugin-transform-exponentiation-operator": "^6.24.1"
-      }
-    },
-    "babel-preset-es2017": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz",
-      "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=",
-      "requires": {
-        "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
-        "babel-plugin-transform-async-to-generator": "^6.24.1"
-      }
-    },
-    "babel-preset-latest": {
-      "version": "6.24.1",
-      "resolved": "https://registry.npmjs.org/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz",
-      "integrity": "sha1-Z33gaRVKdIXC0lxXfAL2JLhbheg=",
-      "requires": {
-        "babel-preset-es2015": "^6.24.1",
-        "babel-preset-es2016": "^6.24.1",
-        "babel-preset-es2017": "^6.24.1"
-      }
-    },
-    "babel-register": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
-      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
-      "requires": {
-        "babel-core": "^6.26.0",
-        "babel-runtime": "^6.26.0",
-        "core-js": "^2.5.0",
-        "home-or-tmp": "^2.0.0",
-        "lodash": "^4.17.4",
-        "mkdirp": "^0.5.1",
-        "source-map-support": "^0.4.15"
-      }
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "requires": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      }
-    },
-    "babel-template": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
-      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "babel-traverse": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-traverse": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
-      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
-      "requires": {
-        "babel-code-frame": "^6.26.0",
-        "babel-messages": "^6.23.0",
-        "babel-runtime": "^6.26.0",
-        "babel-types": "^6.26.0",
-        "babylon": "^6.18.0",
-        "debug": "^2.6.8",
-        "globals": "^9.18.0",
-        "invariant": "^2.2.2",
-        "lodash": "^4.17.4"
-      }
-    },
-    "babel-types": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
-      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
-      "requires": {
-        "babel-runtime": "^6.26.0",
-        "esutils": "^2.0.2",
-        "lodash": "^4.17.4",
-        "to-fast-properties": "^1.0.3"
-      }
-    },
-    "babylon": {
-      "version": "6.18.0",
-      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-        }
-      }
-    },
-    "base64-arraybuffer": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
-      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
-    },
-    "base64-js": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
-      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
-    },
-    "base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
-    },
-    "basic-auth": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
-      "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "requires": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "better-assert": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
-      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
-      "requires": {
-        "callsite": "1.0.0"
-      }
-    },
-    "binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "optional": true
-    },
-    "bl": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
-      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
-      "requires": {
-        "readable-stream": "^2.3.5",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "blob": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
-      "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
-    },
-    "bluebird": {
-      "version": "3.5.4",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
-      "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw=="
-    },
-    "body-parser": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
-      "requires": {
-        "bytes": "3.1.0",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "on-finished": "~2.3.0",
-        "qs": "6.7.0",
-        "raw-body": "2.4.0",
-        "type-is": "~1.6.17"
-      }
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
-      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
-      "optional": true,
-      "requires": {
-        "expand-range": "^1.8.1",
-        "preserve": "^0.2.0",
-        "repeat-element": "^1.1.2"
-      }
-    },
-    "browser-stdout": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
-      "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
-      "dev": true
-    },
-    "bson": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
-      "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
-    },
-    "buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
-      "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==",
-      "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4"
-      }
-    },
-    "buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "requires": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
-    },
-    "buffer-crc32": {
-      "version": "0.2.13",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
-    },
-    "buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-    },
-    "byline": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
-      "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE="
-    },
-    "bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      },
-      "dependencies": {
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        }
-      }
-    },
-    "call-me-maybe": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
-      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
-    },
-    "callsite": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
-    },
-    "callsites": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true
-    },
-    "camelcase": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-      "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
-    },
-    "chai": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
-      "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
-      "dev": true,
-      "requires": {
-        "assertion-error": "^1.1.0",
-        "check-error": "^1.0.2",
-        "deep-eql": "^3.0.1",
-        "get-func-name": "^2.0.0",
-        "pathval": "^1.1.0",
-        "type-detect": "^4.0.5"
-      }
-    },
-    "chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-      "requires": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      }
-    },
-    "chardet": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
-      "dev": true
-    },
-    "check-error": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
-      "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
-      "dev": true
-    },
-    "chokidar": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
-      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
-      "optional": true,
-      "requires": {
-        "anymatch": "^1.3.0",
-        "async-each": "^1.0.0",
-        "fsevents": "^1.0.0",
-        "glob-parent": "^2.0.0",
-        "inherits": "^2.0.1",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^2.0.0",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.0.0"
-      }
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        }
-      }
-    },
-    "cli-cursor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
-      "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
-      "requires": {
-        "restore-cursor": "^1.0.1"
-      }
-    },
-    "cli-width": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
-    },
-    "cliui": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wrap-ansi": "^2.0.0"
-      }
-    },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "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==",
-      "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="
-    },
-    "colors": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
-      "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg=="
-    },
-    "combined-stream": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
-      "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "2.20.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-      "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
-    },
-    "commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-      "dev": true
-    },
-    "component-bind": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
-    },
-    "component-inherit": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "connect-mongodb-session": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/connect-mongodb-session/-/connect-mongodb-session-2.1.1.tgz",
-      "integrity": "sha512-k8NF+C32tJZuR3sSFfdz56e1NKzxejWlD/X5PVYBIZQ8/dzqkMGTKxcdGXsBreU5M48WZ+vYGrJSruSRTzFu4Q==",
-      "requires": {
-        "archetype": "0.8.x",
-        "mongodb": "~3.1.8"
-      }
-    },
-    "content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "convert-source-map": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
-      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
-      "requires": {
-        "safe-buffer": "~5.1.1"
-      }
-    },
-    "cookie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
-    },
-    "cookie-parser": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz",
-      "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==",
-      "requires": {
-        "cookie": "0.3.1",
-        "cookie-signature": "1.0.6"
-      }
-    },
-    "cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
-    },
-    "cookiejar": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
-      "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
-      "dev": true
-    },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
-    },
-    "core-js": {
-      "version": "2.6.5",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz",
-      "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A=="
-    },
-    "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="
-    },
-    "cross-env": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
-      "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.5",
-        "is-windows": "^1.0.0"
-      }
-    },
-    "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=",
-      "requires": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
-    },
-    "decode-uri-component": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
-    },
-    "decompress": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz",
-      "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=",
-      "requires": {
-        "decompress-tar": "^4.0.0",
-        "decompress-tarbz2": "^4.0.0",
-        "decompress-targz": "^4.0.0",
-        "decompress-unzip": "^4.0.1",
-        "graceful-fs": "^4.1.10",
-        "make-dir": "^1.0.0",
-        "pify": "^2.3.0",
-        "strip-dirs": "^2.0.0"
-      }
-    },
-    "decompress-tar": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
-      "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
-      "requires": {
-        "file-type": "^5.2.0",
-        "is-stream": "^1.1.0",
-        "tar-stream": "^1.5.2"
-      }
-    },
-    "decompress-tarbz2": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
-      "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
-      "requires": {
-        "decompress-tar": "^4.1.0",
-        "file-type": "^6.1.0",
-        "is-stream": "^1.1.0",
-        "seek-bzip": "^1.0.5",
-        "unbzip2-stream": "^1.0.9"
-      },
-      "dependencies": {
-        "file-type": {
-          "version": "6.2.0",
-          "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
-          "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg=="
-        }
-      }
-    },
-    "decompress-targz": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
-      "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
-      "requires": {
-        "decompress-tar": "^4.1.1",
-        "file-type": "^5.2.0",
-        "is-stream": "^1.1.0"
-      }
-    },
-    "decompress-unzip": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
-      "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
-      "requires": {
-        "file-type": "^3.8.0",
-        "get-stream": "^2.2.0",
-        "pify": "^2.3.0",
-        "yauzl": "^2.4.2"
-      },
-      "dependencies": {
-        "file-type": {
-          "version": "3.9.0",
-          "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
-          "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek="
-        }
-      }
-    },
-    "dedent": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
-      "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
-      "dev": true
-    },
-    "deep-eql": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
-      "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
-      "dev": true,
-      "requires": {
-        "type-detect": "^4.0.0"
-      }
-    },
-    "deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
-    },
-    "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.0.12"
-      }
-    },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-        }
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "detect-indent": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
-      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
-      "requires": {
-        "repeating": "^2.0.0"
-      }
-    },
-    "diff": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
-    },
-    "dir-glob": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
-      "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
-      "requires": {
-        "arrify": "^1.0.1",
-        "path-type": "^3.0.0"
-      },
-      "dependencies": {
-        "path-type": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-          "requires": {
-            "pify": "^3.0.0"
-          }
-        },
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
-        }
-      }
-    },
-    "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"
-      }
-    },
-    "dotenv": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
-      "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow=="
-    },
-    "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-      "requires": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "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
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-    },
-    "end-of-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
-      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "engine.io": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
-      "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==",
-      "requires": {
-        "accepts": "~1.3.4",
-        "base64id": "1.0.0",
-        "cookie": "0.3.1",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.0",
-        "ws": "~3.3.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "engine.io-client": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
-      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
-      "requires": {
-        "component-emitter": "1.2.1",
-        "component-inherit": "0.0.3",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.1",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "ws": "~3.3.1",
-        "xmlhttprequest-ssl": "~1.5.4",
-        "yeast": "0.1.2"
-      },
-      "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
-        },
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "engine.io-parser": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
-      "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
-      "requires": {
-        "after": "0.8.2",
-        "arraybuffer.slice": "~0.0.7",
-        "base64-arraybuffer": "0.1.5",
-        "blob": "0.0.5",
-        "has-binary2": "~1.0.2"
-      }
-    },
-    "error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "requires": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "es-abstract": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
-      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
-      "dev": true,
-      "requires": {
-        "es-to-primitive": "^1.2.0",
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "is-callable": "^1.1.4",
-        "is-regex": "^1.0.4",
-        "object-keys": "^1.0.12"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
-      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "es6-promise": {
-      "version": "4.2.6",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
-      "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
-      "dev": true
-    },
-    "es6-promisify": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
-      "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
-      "dev": true,
-      "requires": {
-        "es6-promise": "^4.0.3"
-      }
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "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="
-    },
-    "escodegen": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
-      "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
-      "requires": {
-        "esprima": "^3.1.3",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "optional": true
-        }
-      }
-    },
-    "eslint": {
-      "version": "5.16.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
-      "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "ajv": "^6.9.1",
-        "chalk": "^2.1.0",
-        "cross-spawn": "^6.0.5",
-        "debug": "^4.0.1",
-        "doctrine": "^3.0.0",
-        "eslint-scope": "^4.0.3",
-        "eslint-utils": "^1.3.1",
-        "eslint-visitor-keys": "^1.0.0",
-        "espree": "^5.0.1",
-        "esquery": "^1.0.1",
-        "esutils": "^2.0.2",
-        "file-entry-cache": "^5.0.1",
-        "functional-red-black-tree": "^1.0.1",
-        "glob": "^7.1.2",
-        "globals": "^11.7.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "inquirer": "^6.2.2",
-        "js-yaml": "^3.13.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.3.0",
-        "lodash": "^4.17.11",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.8.2",
-        "path-is-inside": "^1.0.2",
-        "progress": "^2.0.0",
-        "regexpp": "^2.0.1",
-        "semver": "^5.5.1",
-        "strip-ansi": "^4.0.0",
-        "strip-json-comments": "^2.0.1",
-        "table": "^5.2.3",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-escapes": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-          "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-          "dev": true
-        },
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "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"
-          }
-        },
-        "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"
-          }
-        },
-        "cli-cursor": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-          "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-          "dev": true,
-          "requires": {
-            "restore-cursor": "^2.0.0"
-          }
-        },
-        "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"
-          }
-        },
-        "figures": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-          "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-          "dev": true,
-          "requires": {
-            "escape-string-regexp": "^1.0.5"
-          }
-        },
-        "globals": {
-          "version": "11.11.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
-          "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
-          "dev": true
-        },
-        "ignore": {
-          "version": "4.0.6",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
-          "dev": true
-        },
-        "inquirer": {
-          "version": "6.3.1",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz",
-          "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==",
-          "dev": true,
-          "requires": {
-            "ansi-escapes": "^3.2.0",
-            "chalk": "^2.4.2",
-            "cli-cursor": "^2.1.0",
-            "cli-width": "^2.0.0",
-            "external-editor": "^3.0.3",
-            "figures": "^2.0.0",
-            "lodash": "^4.17.11",
-            "mute-stream": "0.0.7",
-            "run-async": "^2.2.0",
-            "rxjs": "^6.4.0",
-            "string-width": "^2.1.0",
-            "strip-ansi": "^5.1.0",
-            "through": "^2.3.6"
-          },
-          "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-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"
-              }
-            }
-          }
-        },
-        "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
-        },
-        "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"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "dev": true
-        },
-        "mute-stream": {
-          "version": "0.0.7",
-          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-          "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-          "dev": true
-        },
-        "onetime": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-          "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^1.0.0"
-          }
-        },
-        "restore-cursor": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-          "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-          "dev": true,
-          "requires": {
-            "onetime": "^2.0.0",
-            "signal-exit": "^3.0.2"
-          }
-        },
-        "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"
-          }
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-          "dev": true,
-          "requires": {
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^4.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^3.0.0"
-          }
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "eslint-formatter-friendly": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-formatter-friendly/-/eslint-formatter-friendly-6.0.0.tgz",
-      "integrity": "sha512-fOBwGn2r8BPQ1KSKyVzjXP8VFxJ2tWKxxn2lIF+k1ezN/pFB44HDlrn5kBm1vxbyyRa/LC+1vHJwc7WETUAZ2Q==",
-      "dev": true,
-      "requires": {
-        "babel-code-frame": "6.26.0",
-        "chalk": "^2.0.1",
-        "extend": "^3.0.0",
-        "strip-ansi": "^4.0.0",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "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"
-          }
-        },
-        "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"
-          }
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^3.0.0"
-          }
-        },
-        "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"
-          }
-        }
-      }
-    },
-    "eslint-scope": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "eslint-utils": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
-      "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
-      "dev": true
-    },
-    "eslint-visitor-keys": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
-      "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
-      "dev": true
-    },
-    "espree": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
-      "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
-      "dev": true,
-      "requires": {
-        "acorn": "^6.0.7",
-        "acorn-jsx": "^5.0.0",
-        "eslint-visitor-keys": "^1.0.0"
-      }
-    },
-    "esprima": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
-      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
-    },
-    "esquery": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
-      "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
-      "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.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
-    },
-    "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-    },
-    "execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^4.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
-      },
-      "dependencies": {
-        "get-stream": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        }
-      }
-    },
-    "exit-hook": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
-      "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g="
-    },
-    "expand-brackets": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
-      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
-      "optional": true,
-      "requires": {
-        "is-posix-bracket": "^0.1.0"
-      }
-    },
-    "expand-range": {
-      "version": "1.8.2",
-      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
-      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
-      "optional": true,
-      "requires": {
-        "fill-range": "^2.1.0"
-      }
-    },
-    "expand-template": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
-      "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg=="
-    },
-    "express": {
-      "version": "4.16.4",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
-      "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
-      "requires": {
-        "accepts": "~1.3.5",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.18.3",
-        "content-disposition": "0.5.2",
-        "content-type": "~1.0.4",
-        "cookie": "0.3.1",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "1.1.1",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.4",
-        "qs": "6.5.2",
-        "range-parser": "~1.2.0",
-        "safe-buffer": "5.1.2",
-        "send": "0.16.2",
-        "serve-static": "1.13.2",
-        "setprototypeof": "1.1.0",
-        "statuses": "~1.4.0",
-        "type-is": "~1.6.16",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "dependencies": {
-        "body-parser": {
-          "version": "1.18.3",
-          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
-          "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
-          "requires": {
-            "bytes": "3.0.0",
-            "content-type": "~1.0.4",
-            "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "http-errors": "~1.6.3",
-            "iconv-lite": "0.4.23",
-            "on-finished": "~2.3.0",
-            "qs": "6.5.2",
-            "raw-body": "2.3.3",
-            "type-is": "~1.6.16"
-          }
-        },
-        "bytes": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-          "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "iconv-lite": {
-          "version": "0.4.23",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-          "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "qs": {
-          "version": "6.5.2",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
-        },
-        "raw-body": {
-          "version": "2.3.3",
-          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
-          "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
-          "requires": {
-            "bytes": "3.0.0",
-            "http-errors": "1.6.3",
-            "iconv-lite": "0.4.23",
-            "unpipe": "1.0.0"
-          }
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
-        },
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-        }
-      }
-    },
-    "express-mongo-sanitize": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/express-mongo-sanitize/-/express-mongo-sanitize-1.3.2.tgz",
-      "integrity": "sha1-+6QE9sBBV3y+7sTdkFfO+7Q53lo="
-    },
-    "express-session": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.16.1.tgz",
-      "integrity": "sha512-pWvUL8Tl5jUy1MLH7DhgUlpoKeVPUTe+y6WQD9YhcN0C5qAhsh4a8feVjiUXo3TFhIy191YGZ4tewW9edbl2xQ==",
-      "requires": {
-        "cookie": "0.3.1",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~2.0.0",
-        "on-headers": "~1.0.2",
-        "parseurl": "~1.3.2",
-        "safe-buffer": "5.1.2",
-        "uid-safe": "~2.1.5"
-      },
-      "dependencies": {
-        "depd": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
-        }
-      }
-    },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "external-editor": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
-      "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
-      "dev": true,
-      "requires": {
-        "chardet": "^0.7.0",
-        "iconv-lite": "^0.4.24",
-        "tmp": "^0.0.33"
-      }
-    },
-    "extglob": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
-      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
-      "optional": true,
-      "requires": {
-        "is-extglob": "^1.0.0"
-      }
-    },
-    "extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
-    },
-    "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="
-    },
-    "fast-glob": {
-      "version": "2.2.6",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
-      "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
-      "requires": {
-        "@mrmlnc/readdir-enhanced": "^2.2.1",
-        "@nodelib/fs.stat": "^1.1.2",
-        "glob-parent": "^3.1.0",
-        "is-glob": "^4.0.0",
-        "merge2": "^1.2.3",
-        "micromatch": "^3.1.10"
-      },
-      "dependencies": {
-        "arr-diff": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
-        },
-        "array-unique": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "expand-brackets": {
-          "version": "2.1.4",
-          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-          "requires": {
-            "debug": "^2.3.3",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "posix-character-classes": "^0.1.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "0.2.5",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-              "requires": {
-                "is-descriptor": "^0.1.0"
-              }
-            },
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-data-descriptor": {
-              "version": "0.1.4",
-              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-              "requires": {
-                "is-accessor-descriptor": "^0.1.6",
-                "is-data-descriptor": "^0.1.4",
-                "kind-of": "^5.0.0"
-              }
-            },
-            "kind-of": {
-              "version": "5.1.0",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
-            }
-          }
-        },
-        "extglob": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-          "requires": {
-            "array-unique": "^0.3.2",
-            "define-property": "^1.0.0",
-            "expand-brackets": "^2.1.4",
-            "extend-shallow": "^2.0.1",
-            "fragment-cache": "^0.2.1",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-extglob": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
-        },
-        "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==",
-          "requires": {
-            "is-extglob": "^2.1.1"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          }
-        }
-      }
-    },
-    "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="
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
-    },
-    "fd-slicer": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
-      "requires": {
-        "pend": "~1.2.0"
-      }
-    },
-    "figures": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-      "requires": {
-        "escape-string-regexp": "^1.0.5",
-        "object-assign": "^4.1.0"
-      }
-    },
-    "file-entry-cache": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
-      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^2.0.1"
-      }
-    },
-    "file-type": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
-      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY="
-    },
-    "filename-regex": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
-      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
-      "optional": true
-    },
-    "fill-range": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
-      "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
-      "optional": true,
-      "requires": {
-        "is-number": "^2.1.0",
-        "isobject": "^2.0.0",
-        "randomatic": "^3.0.0",
-        "repeat-element": "^1.1.2",
-        "repeat-string": "^1.5.2"
-      }
-    },
-    "finalhandler": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
-      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "statuses": "~1.4.0",
-        "unpipe": "~1.0.0"
-      },
-      "dependencies": {
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-        }
-      }
-    },
-    "find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "requires": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-          "dev": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "pify": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-          "dev": true
-        }
-      }
-    },
-    "find-package-json": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/find-package-json/-/find-package-json-1.2.0.tgz",
-      "integrity": "sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==",
-      "dev": true
-    },
-    "find-up": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-      "requires": {
-        "path-exists": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
-      }
-    },
-    "fire-up": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fire-up/-/fire-up-1.0.0.tgz",
-      "integrity": "sha1-cyXaXgqCyH77X39wM6uil1EB/0I=",
-      "requires": {
-        "bluebird": "^3.3.4",
-        "lodash": "^4.7.0",
-        "simple-glob": "0.1.1"
-      }
-    },
-    "flat": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
-      "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
-      "dev": true,
-      "requires": {
-        "is-buffer": "~2.0.3"
-      },
-      "dependencies": {
-        "is-buffer": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
-          "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
-          "dev": true
-        }
-      }
-    },
-    "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.0",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz",
-      "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==",
-      "dev": true
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
-    },
-    "for-own": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
-      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
-      "optional": true,
-      "requires": {
-        "for-in": "^1.0.1"
-      }
-    },
-    "forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
-    },
-    "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==",
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "formidable": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
-      "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
-      "dev": true
-    },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
-    },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-    },
-    "from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "fs-constants": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
-    },
-    "fs-extra": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
-      "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^2.1.0"
-      }
-    },
-    "fs-readdir-recursive": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
-      "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "fsevents": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz",
-      "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==",
-      "optional": true,
-      "requires": {
-        "nan": "^2.12.1",
-        "node-pre-gyp": "^0.12.0"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "aproba": {
-          "version": "1.2.0",
-          "bundled": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^2.0.6"
-          }
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "bundled": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "chownr": {
-          "version": "1.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "debug": {
-          "version": "4.1.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "deep-extend": {
-          "version": "0.6.0",
-          "bundled": true,
-          "optional": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "detect-libc": {
-          "version": "1.0.3",
-          "bundled": true,
-          "optional": true
-        },
-        "fs-minipass": {
-          "version": "1.2.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "aproba": "^1.0.3",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.0",
-            "object-assign": "^4.1.0",
-            "signal-exit": "^3.0.0",
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wide-align": "^1.1.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.3",
-          "bundled": true,
-          "optional": 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"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ignore-walk": {
-          "version": "3.0.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minimatch": "^3.0.4"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "bundled": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true
-        },
-        "minipass": {
-          "version": "2.3.5",
-          "bundled": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "1.2.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "bundled": true,
-          "optional": true
... 116671 lines suppressed ...


[ignite] 02/02: IGNITE-12930 Fix DistributedProcess if unable to send single message to coordinator (#7714)

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alexpl pushed a commit to branch ignite-2.9
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit 68165b4afe24d4088c87bd4eb6a4ed007ecbc378
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Thu Jul 23 20:57:08 2020 +0500

    IGNITE-12930 Fix DistributedProcess if unable to send single message to coordinator (#7714)
    
    (cherry picked from commit 45e525865c6c93b999ab5030d7568add0bde96a2)
---
 .../util/distributed/DistributedProcess.java       |  19 ++-
 .../DistributedProcessCoordinatorLeftTest.java     | 160 +++++++++++++++++++++
 .../ignite/testsuites/IgniteUtilSelfTestSuite.java |   5 +-
 3 files changed, 180 insertions(+), 4 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
index 93f4725..fe0fee5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
@@ -32,6 +32,7 @@ import org.apache.ignite.failure.FailureContext;
 import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.GridTopic;
 import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.managers.encryption.GridEncryptionManager;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager;
@@ -281,11 +282,20 @@ public class DistributedProcess<I extends Serializable, R extends Serializable>
         SingleNodeMessage<R> singleMsg = new SingleNodeMessage<>(p.id, type, p.resFut.result(),
             (Exception)p.resFut.error());
 
-        if (F.eq(ctx.localNodeId(), p.crdId))
-            onSingleNodeMessageReceived(singleMsg, p.crdId);
+        UUID crdId = p.crdId;
+
+        if (F.eq(ctx.localNodeId(), crdId))
+            onSingleNodeMessageReceived(singleMsg, crdId);
         else {
             try {
-                ctx.io().sendToGridTopic(p.crdId, GridTopic.TOPIC_DISTRIBUTED_PROCESS, singleMsg, SYSTEM_POOL);
+                ctx.io().sendToGridTopic(crdId, GridTopic.TOPIC_DISTRIBUTED_PROCESS, singleMsg, SYSTEM_POOL);
+            }
+            catch (ClusterTopologyCheckedException e) {
+                // The coordinator has failed. The single message will be sent when a new coordinator initialized.
+                if (log.isDebugEnabled()) {
+                    log.debug("Failed to send a single message to coordinator: [crdId=" + crdId +
+                        ", processId=" + p.id + ", error=" + e.getMessage() + ']');
+                }
             }
             catch (IgniteCheckedException e) {
                 log.error("Unable to send message to coordinator.", e);
@@ -391,6 +401,9 @@ public class DistributedProcess<I extends Serializable, R extends Serializable>
 
     /** Defines distributed processes. */
     public enum DistributedProcessType {
+        /** For test purposes only. */
+        TEST_PROCESS,
+
         /**
          * Master key change prepare process.
          *
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/DistributedProcessCoordinatorLeftTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/DistributedProcessCoordinatorLeftTest.java
new file mode 100644
index 0000000..4342859
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/DistributedProcessCoordinatorLeftTest.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.util;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.failure.FailureContext;
+import org.apache.ignite.failure.FailureHandler;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.distributed.DistributedProcess;
+import org.apache.ignite.internal.util.typedef.G;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
+import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
+import static org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType.TEST_PROCESS;
+import static org.apache.ignite.testframework.GridTestUtils.runAsync;
+
+/**
+ * Tests {@link DistributedProcess} in case of coordinator node left.
+ */
+public class DistributedProcessCoordinatorLeftTest extends GridCommonAbstractTest {
+    /** Timeout to wait latches. */
+    public static final long TIMEOUT = 20_000L;
+
+    /** Nodes count. */
+    public static final int NODES_CNT = 3;
+
+    /** Stop node index. */
+    public static final int STOP_NODE_IDX = 0;
+
+    /** Latch to send single message on node left. */
+    private final CountDownLatch nodeLeftLatch = new CountDownLatch(NODES_CNT - 1);
+
+    /** Latch to await sending single messages to a failed coordinator. */
+    private final CountDownLatch msgSendLatch = new CountDownLatch(NODES_CNT - 1);
+
+    /** Failure handler invocation flag. */
+    private final AtomicBoolean failure = new AtomicBoolean();
+
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+        cfg.setLocalEventListeners(Collections.singletonMap(event -> {
+            nodeLeftLatch.countDown();
+
+            try {
+                msgSendLatch.await();
+            }
+            catch (InterruptedException e) {
+                fail("Unexpected interrupt.");
+            }
+
+            return false;
+        }, new int[] {EVT_NODE_LEFT, EVT_NODE_FAILED}));
+
+        cfg.setFailureHandler(new FailureHandler() {
+            @Override public boolean onFailure(Ignite ignite, FailureContext failureCtx) {
+                failure.set(true);
+
+                return false;
+            }
+        });
+
+        return cfg;
+    }
+
+    /**
+     * Tests that coordinator failing during sending single result not cause node failure and the process finishes.
+     *
+     * <ol>
+     *  <li>Start new process of {@link DistributedProcess}.</li>
+     *  <li>The coordinator fails.</li>
+     *  <li>Nodes try to send a single message to the not-alive coordinator.</li>
+     *  <li>{@link DistributedProcess} process a node left event and reinitialize a new coordinator.</li>
+     *  <li>Process finishes.</li>
+     * </ol>
+     *
+     * @throws Exception If failed.
+     */
+    @Test
+    public void testCoordinatorFailed() throws Exception {
+        startGrids(NODES_CNT);
+
+        CountDownLatch startLatch = new CountDownLatch(NODES_CNT);
+        CountDownLatch finishLatch = new CountDownLatch(NODES_CNT - 1);
+
+        HashMap<String, DistributedProcess<Integer, Integer>> processes = new HashMap<>();
+
+        int processRes = 1;
+
+        for (Ignite grid : G.allGrids()) {
+            DistributedProcess<Integer, Integer> dp = new DistributedProcess<>(((IgniteEx)grid).context(), TEST_PROCESS,
+                req -> {
+                    IgniteInternalFuture<Integer> fut = runAsync(() -> {
+                        try {
+                            nodeLeftLatch.await();
+                        }
+                        catch (InterruptedException ignored) {
+                            fail("Unexpected interrupt.");
+                        }
+
+                        return req;
+                    });
+
+                    // A single message will be sent before this latch released.
+                    // It is guaranteed by the LIFO order of future listeners notifying.
+                    if (!grid.name().equals(getTestIgniteInstanceName(STOP_NODE_IDX)))
+                        fut.listen(f -> msgSendLatch.countDown());
+
+                    startLatch.countDown();
+
+                    return fut;
+                },
+                (uuid, res, err) -> {
+                    if (res.values().size() == NODES_CNT - 1 && res.values().stream().allMatch(i -> i == processRes))
+                        finishLatch.countDown();
+                    else
+                        fail("Unexpected process result [res=" + res + ", err=" + err + ']');
+                }
+            );
+
+            processes.put(grid.name(), dp);
+        }
+
+        processes.get(grid(STOP_NODE_IDX).name()).start(UUID.randomUUID(), processRes);
+
+        assertTrue(startLatch.await(TIMEOUT, MILLISECONDS));
+
+        stopGrid(STOP_NODE_IDX);
+
+        assertTrue(finishLatch.await(TIMEOUT, MILLISECONDS));
+
+        assertFalse(failure.get());
+    }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
index 6aabb35..5844868 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteUtilSelfTestSuite.java
@@ -21,6 +21,7 @@ import org.apache.ignite.internal.IgniteVersionUtilsSelfTest;
 import org.apache.ignite.internal.commandline.CommandHandlerParsingTest;
 import org.apache.ignite.internal.pagemem.impl.PageIdUtilsSelfTest;
 import org.apache.ignite.internal.processors.cache.GridCacheUtilsSelfTest;
+import org.apache.ignite.internal.util.DistributedProcessCoordinatorLeftTest;
 import org.apache.ignite.internal.util.GridArraysSelfTest;
 import org.apache.ignite.internal.util.GridConcurrentMultiPairQueueTest;
 import org.apache.ignite.internal.util.GridCountDownCallbackTest;
@@ -138,7 +139,9 @@ import org.junit.runners.Suite;
     // control.sh
     CommandHandlerParsingTest.class,
 
-    GridCountDownCallbackTest.class
+    GridCountDownCallbackTest.class,
+
+    DistributedProcessCoordinatorLeftTest.class
 })
 public class IgniteUtilSelfTestSuite {
 }