From 3d1e060ed85190062cbc98fbf35c4ad33693c717 Mon Sep 17 00:00:00 2001 From: Mario Scrocca Date: Tue, 1 Feb 2022 15:16:10 +0100 Subject: [PATCH] Remove submodules --- .gitmodules | 12 - README.md | 13 +- coney-api | 1 - coney-api/.dockerignore | 27 + coney-api/.gitignore | 27 + coney-api/Dockerfile | 12 + coney-api/Dockerfile-deploy | 6 + coney-api/LICENSE | 201 + coney-api/README.md | 26 + coney-api/pom.xml | 184 + .../cefriel/coneyapi/ConeyApiApplication.java | 21 + .../coneyapi/config/ApplicationConfig.java | 63 + .../coneyapi/config/WebSecurityConfig.java | 45 + .../coneyapi/controller/AdminController.java | 279 + .../coneyapi/controller/ChatController.java | 202 + .../controller/ConversationController.java | 551 + .../coneyapi/controller/DataController.java | 138 + .../ExceptionHandlerController.java | 73 + .../coneyapi/exception/ConflictException.java | 18 + .../cefriel/coneyapi/exception/ErrorView.java | 24 + .../exception/MethodNotAllowedException.java | 18 + .../coneyapi/exception/ParsingException.java | 18 + .../exception/ResourceNotFoundException.java | 18 + .../exception/UserNotAuthorizedException.java | 17 + .../coneyapi/jwt/JwtRequestFilter.java | 68 + .../cefriel/coneyapi/jwt/JwtTokenUtil.java | 77 + .../model/authentication/Customer.java | 38 + .../coneyapi/model/db/custom/AnswerBlock.java | 93 + .../model/db/custom/AnswersResponse.java | 266 + .../db/custom/BeginConversationResponse.java | 50 + .../model/db/custom/ConversationResponse.java | 57 + .../model/db/custom/QuestionBlock.java | 118 + .../coneyapi/model/db/custom/UserProject.java | 28 + .../coneyapi/model/db/entities/Block.java | 184 + .../model/db/entities/Conversation.java | 90 + .../coneyapi/model/db/entities/Edge.java | 17 + .../coneyapi/model/db/entities/Project.java | 23 + .../coneyapi/model/db/entities/Tag.java | 47 + .../coneyapi/repository/AdminRepository.java | 140 + .../coneyapi/repository/ChatRepository.java | 136 + .../repository/ConversationRepository.java | 219 + .../coneyapi/repository/DataRepository.java | 63 + .../coneyapi/service/AdminService.java | 200 + .../cefriel/coneyapi/service/ChatService.java | 393 + .../coneyapi/service/ConversationService.java | 786 + .../cefriel/coneyapi/service/DataService.java | 642 + .../com/cefriel/coneyapi/utils/RDFUtils.java | 103 + .../com/cefriel/coneyapi/utils/Utils.java | 148 + coney-api/src/main/resources/log4j.xml | 40 + .../coneyapi/ConeyApiApplicationTests.java | 14 + coney-chat | 1 - coney-chat/.dockerignore | 5 + coney-chat/.editorconfig | 13 + coney-chat/.gitignore | 47 + coney-chat/Dockerfile | 32 + coney-chat/LICENSE | 201 + coney-chat/README.md | 19 + coney-chat/angular.json | 194 + coney-chat/e2e/protractor.conf.js | 28 + coney-chat/e2e/src/app.e2e-spec.ts | 23 + coney-chat/e2e/src/app.po.ts | 11 + coney-chat/e2e/tsconfig.e2e.json | 13 + coney-chat/package-lock.json | 10276 ++++++++++++ coney-chat/package.json | 62 + .../answer-checkbox.component.css | 25 + .../answer-checkbox.component.html | 18 + .../answer-checkbox.component.spec.ts | 25 + .../answer-checkbox.component.ts | 71 + .../answer-emoji/answer-emoji.component.css | 24 + .../answer-emoji/answer-emoji.component.html | 71 + .../answer-emoji.component.spec.ts | 25 + .../answer-emoji/answer-emoji.component.ts | 57 + .../answer-option/answer-option.component.css | 19 + .../answer-option.component.html | 8 + .../answer-option.component.spec.ts | 25 + .../answer-option/answer-option.component.ts | 34 + .../answer-scale/answer-scale.component.css | 23 + .../answer-scale/answer-scale.component.html | 21 + .../answer-scale.component.spec.ts | 25 + .../answer-scale/answer-scale.component.ts | 49 + .../answer-select/answer-select.component.css | 11 + .../answer-select.component.html | 18 + .../answer-select.component.spec.ts | 25 + .../answer-select/answer-select.component.ts | 29 + .../answer-slide/answer-slide.component.css | 7 + .../answer-slide/answer-slide.component.html | 28 + .../answer-slide.component.spec.ts | 25 + .../answer-slide/answer-slide.component.ts | 64 + .../app/answer-text/answer-text.component.css | 12 + .../answer-text/answer-text.component.html | 40 + .../answer-text/answer-text.component.spec.ts | 25 + .../app/answer-text/answer-text.component.ts | 43 + coney-chat/src/app/chat.component.css | 195 + coney-chat/src/app/chat.component.html | 179 + coney-chat/src/app/chat.component.spec.ts | 35 + coney-chat/src/app/chat.component.ts | 804 + coney-chat/src/app/chat.module.ts | 67 + .../cookie-consent.component.html | 67 + .../cookie-consent.component.ts | 27 + coney-chat/src/app/models/block.ts | 10 + coney-chat/src/app/models/strings.model.ts | 45 + .../src/app/services/backend.service.ts | 25 + coney-chat/src/assets/.gitkeep | 0 coney-chat/src/assets/chat-ui.png | Bin 0 -> 230196 bytes coney-chat/src/assets/circle.svg | 4 + coney-chat/src/assets/end_check.svg | 6 + coney-chat/src/assets/messages.svg | 5 + coney-chat/src/assets/pattern.png | Bin 0 -> 41534 bytes coney-chat/src/assets/redo.svg | 4 + coney-chat/src/assets/send.svg | 5 + coney-chat/src/assets/star_empty.svg | 7 + coney-chat/src/assets/star_full.svg | 5 + coney-chat/src/assets/star_half.svg | 8 + coney-chat/src/browserslist | 11 + coney-chat/src/coney-theme.css | 3856 +++++ .../environments/environment.docker.prod.ts | 19 + .../src/environments/environment.prod.ts | 4 + coney-chat/src/environments/environment.ts | 5 + coney-chat/src/favicon.ico | Bin 0 -> 8120 bytes coney-chat/src/index.html | 18 + coney-chat/src/karma.conf.js | 32 + coney-chat/src/main.ts | 12 + coney-chat/src/polyfills.ts | 63 + coney-chat/src/star_empty.svg | 158 + coney-chat/src/star_full.svg | 202 + coney-chat/src/styles.css | 202 + coney-chat/src/test.ts | 20 + coney-chat/src/tsconfig.app.json | 11 + coney-chat/src/tsconfig.spec.json | 18 + coney-chat/src/tslint.json | 17 + coney-chat/tsconfig.json | 30 + coney-chat/tslint.json | 75 + coney-create | 1 - coney-create/.dockerignore | 5 + coney-create/.editorconfig | 13 + coney-create/.gitignore | 47 + coney-create/Dockerfile | 32 + coney-create/LICENSE | 201 + coney-create/README.md | 19 + coney-create/angular.json | 212 + coney-create/e2e/protractor.conf.js | 28 + coney-create/e2e/src/app.e2e-spec.ts | 23 + coney-create/e2e/src/app.po.ts | 11 + coney-create/e2e/tsconfig.e2e.json | 13 + coney-create/package-lock.json | 13406 ++++++++++++++++ coney-create/package.json | 77 + coney-create/src/app/app.component.html | 1 + coney-create/src/app/app.component.spec.ts | 31 + coney-create/src/app/app.component.ts | 9 + coney-create/src/app/app.module.ts | 102 + .../src/app/auth/login/login.component.css | 0 .../src/app/auth/login/login.component.html | 42 + .../app/auth/login/login.component.spec.ts | 25 + .../src/app/auth/login/login.component.ts | 45 + .../src/app/auth/logout/logout.component.css | 0 .../src/app/auth/logout/logout.component.html | 1 + .../app/auth/logout/logout.component.spec.ts | 25 + .../src/app/auth/logout/logout.component.ts | 23 + .../add-quick-question-dialog.component.html | 32 + .../add-quick-question-dialog.component.ts | 49 + .../app/dialogs/confirm-dialog.component.html | 12 + .../app/dialogs/confirm-dialog.component.ts | 26 + .../app/dialogs/delete-dialog.component.html | 13 + .../app/dialogs/delete-dialog.component.ts | 32 + .../app/dialogs/print-dialog.component.html | 68 + .../src/app/dialogs/print-dialog.component.ts | 80 + .../app/dialogs/publish-dialog.component.html | 17 + .../app/dialogs/publish-dialog.component.ts | 38 + .../app/dialogs/save-as-dialog.component.html | 44 + .../app/dialogs/save-as-dialog.component.ts | 108 + .../dialogs/search-conv-dialog.component.html | 83 + .../dialogs/search-conv-dialog.component.ts | 95 + .../dialogs/search-tag-dialog.component.html | 44 + .../dialogs/search-tag-dialog.component.ts | 122 + .../share-survey-dialog.component.html | 18 + .../dialogs/share-survey-dialog.component.ts | 46 + .../dialogs/translation-dialog.component.html | 40 + .../dialogs/translation-dialog.component.ts | 197 + coney-create/src/app/home.component.css | 259 + coney-create/src/app/home.component.html | 231 + coney-create/src/app/home.component.spec.ts | 25 + coney-create/src/app/home.component.ts | 1015 ++ coney-create/src/app/model/chat.ts | 8 + .../src/app/model/conversational.model.ts | 104 + .../components/answer-checkbox.component.ts | 59 + .../components/answer-multiple.component.ts | 62 + .../rete/components/answer-open.component.ts | 56 + .../app/rete/components/question.component.ts | 60 + .../rete/components/talk-link.component.ts | 56 + .../rete/components/talk-text.component.ts | 57 + .../app/rete/components/talk-url.component.ts | 56 + .../src/app/rete/controls/checkbox.control.ts | 165 + .../src/app/rete/controls/number.control.ts | 52 + .../app/rete/controls/points-field.control.ts | 52 + .../app/rete/controls/tag-field.control.ts | 81 + .../controls/text-area-limited.control.ts | 45 + .../app/rete/controls/text-area.control.ts | 46 + .../app/rete/controls/text-field.control.ts | 45 + .../app/rete/controls/text-type.control.ts | 57 + .../app/rete/controls/url-field.control.ts | 44 + .../src/app/rete/controls/value.control.ts | 52 + .../rete/controls/visualization.control.ts | 99 + coney-create/src/app/rete/rete.component.css | 0 coney-create/src/app/rete/rete.component.html | 14 + coney-create/src/app/rete/rete.component.ts | 876 + coney-create/src/app/rete/sockets.ts | 5 + coney-create/src/app/routing.module.ts | 21 + .../src/app/services/auth-guard.service.ts | 23 + .../services/auth-http-interceptor.service.ts | 26 + .../app/services/authentication.service.ts | 46 + .../src/app/services/backend.service.ts | 34 + .../src/app/services/routing.service.ts | 11 + coney-create/src/assets/.gitkeep | 0 coney-create/src/assets/ErrorSound.mp3 | Bin 0 -> 7941 bytes coney-create/src/assets/InfoSound.mp3 | Bin 0 -> 29257 bytes coney-create/src/assets/SuccessSound.mp3 | Bin 0 -> 24241 bytes coney-create/src/assets/WarningSound.mp3 | Bin 0 -> 15882 bytes coney-create/src/assets/clipboard_copy.svg | 3 + coney-create/src/assets/create-ui.PNG | Bin 0 -> 315085 bytes coney-create/src/assets/navbar/check.svg | 4 + .../src/assets/navbar/coney_create.png | Bin 0 -> 29536 bytes coney-create/src/assets/navbar/create.png | Bin 0 -> 6948 bytes coney-create/src/assets/navbar/delete.svg | 4 + coney-create/src/assets/navbar/file.svg | 4 + .../src/assets/navbar/information.svg | 4 + .../src/assets/navbar/inspect_pie.svg | 4 + coney-create/src/assets/navbar/link.svg | 4 + coney-create/src/assets/navbar/list.svg | 4 + coney-create/src/assets/navbar/logout.svg | 3 + coney-create/src/assets/navbar/map.svg | 4 + coney-create/src/assets/navbar/open.svg | 3 + coney-create/src/assets/navbar/plus.svg | 4 + coney-create/src/assets/navbar/preview.svg | 5 + coney-create/src/assets/navbar/print.svg | 3 + coney-create/src/assets/navbar/save.svg | 3 + coney-create/src/assets/navbar/save_as.svg | 3 + coney-create/src/assets/navbar/statistics.svg | 5 + coney-create/src/assets/navbar/tag.svg | 4 + coney-create/src/assets/navbar/template.svg | 1 + .../src/assets/navbar/translation.svg | 4 + coney-create/src/assets/pattern.png | Bin 0 -> 41534 bytes coney-create/src/assets/shrink.svg | 3 + coney-create/src/assets/zoom-in.svg | 5 + coney-create/src/assets/zoom-out.svg | 5 + coney-create/src/browserslist | 11 + coney-create/src/coney-theme.css | 3856 +++++ .../environments/environment.docker.prod.ts | 6 + .../src/environments/environment.docker.ts | 5 + .../src/environments/environment.prod.ts | 5 + coney-create/src/environments/environment.ts | 19 + coney-create/src/favicon.ico | Bin 0 -> 8120 bytes coney-create/src/index.html | 15 + coney-create/src/karma.conf.js | 32 + coney-create/src/main.ts | 12 + coney-create/src/polyfills.ts | 44 + coney-create/src/styles-mobile.css | 43 + coney-create/src/styles-rete.css | 264 + coney-create/src/styles.css | 374 + coney-create/src/test.ts | 20 + coney-create/src/theme.scss | 18 + coney-create/src/tsconfig.app.json | 11 + coney-create/src/tsconfig.spec.json | 18 + coney-create/src/tslint.json | 17 + coney-create/tsconfig.json | 24 + coney-create/tslint.json | 131 + coney-inspect | 1 - coney-inspect/.dockerignore | 5 + coney-inspect/.editorconfig | 13 + coney-inspect/.gitignore | 46 + coney-inspect/Dockerfile | 32 + coney-inspect/LICENSE | 201 + coney-inspect/README.md | 19 + coney-inspect/angular.json | 190 + coney-inspect/e2e/protractor.conf.js | 28 + coney-inspect/e2e/src/app.e2e-spec.ts | 23 + coney-inspect/e2e/src/app.po.ts | 11 + coney-inspect/e2e/tsconfig.e2e.json | 13 + coney-inspect/package-lock.json | 10810 +++++++++++++ coney-inspect/package.json | 60 + coney-inspect/src/app/app-routing.module.ts | 21 + coney-inspect/src/app/app.component.css | 0 coney-inspect/src/app/app.component.html | 1 + coney-inspect/src/app/app.component.spec.ts | 35 + coney-inspect/src/app/app.component.ts | 12 + coney-inspect/src/app/app.module.ts | 75 + .../src/app/auth/login/login.component.css | 0 .../src/app/auth/login/login.component.html | 31 + .../app/auth/login/login.component.spec.ts | 25 + .../src/app/auth/login/login.component.ts | 46 + .../src/app/auth/logout/logout.component.css | 0 .../src/app/auth/logout/logout.component.html | 1 + .../app/auth/logout/logout.component.spec.ts | 25 + .../src/app/auth/logout/logout.component.ts | 23 + .../checkbox-bar-chart.component.css | 0 .../checkbox-bar-chart.component.html | 47 + .../checkbox-bar-chart.component.spec.ts | 25 + .../checkbox-bar-chart.component.ts | 175 + .../duration-bar-chart.component.css | 0 .../duration-bar-chart.component.html | 6 + .../duration-bar-chart.component.spec.ts | 25 + .../duration-bar-chart.component.ts | 118 + .../generic-data-chart.component.css | 0 .../generic-data-chart.component.html | 16 + .../generic-data-chart.component.spec.ts | 25 + .../generic-data-chart.component.ts | 25 + .../mean-distr-tag-chart.component.css | 0 .../mean-distr-tag-chart.component.html | 11 + .../mean-distr-tag-chart.component.spec.ts | 25 + .../mean-distr-tag-chart.component.ts | 226 + .../mean-per-tag/mean-per-tag.component.css | 0 .../mean-per-tag/mean-per-tag.component.html | 23 + .../mean-per-tag.component.spec.ts | 25 + .../mean-per-tag/mean-per-tag.component.ts | 42 + .../multiple-choice-pie-chart.component.css | 0 .../multiple-choice-pie-chart.component.html | 73 + ...ultiple-choice-pie-chart.component.spec.ts | 25 + .../multiple-choice-pie-chart.component.ts | 231 + .../open-ended-questions.component.css | 0 .../open-ended-questions.component.html | 47 + .../open-ended-questions.component.spec.ts | 25 + .../open-ended-questions.component.ts | 53 + .../questions-checkbox.component.css | 0 .../questions-checkbox.component.html | 13 + .../questions-checkbox.component.spec.ts | 25 + .../questions-checkbox.component.ts | 69 + .../cards/user-view/user-view.component.css | 0 .../cards/user-view/user-view.component.html | 74 + .../user-view/user-view.component.spec.ts | 25 + .../cards/user-view/user-view.component.ts | 90 + .../value-distr-bar-chart.component.css | 0 .../value-distr-bar-chart.component.html | 26 + .../value-distr-bar-chart.component.spec.ts | 25 + .../value-distr-bar-chart.component.ts | 202 + coney-inspect/src/app/home/home.component.css | 0 .../src/app/home/home.component.html | 193 + .../src/app/home/home.component.spec.ts | 25 + coney-inspect/src/app/home/home.component.ts | 557 + coney-inspect/src/app/models/CSVModel.ts | 20 + .../src/app/services/auth-guard.service.ts | 24 + .../services/auth-http-interceptor.service.ts | 26 + .../app/services/authentication.service.ts | 48 + .../src/app/services/backend.service.ts | 26 + coney-inspect/src/assets/.gitkeep | 0 coney-inspect/src/assets/csv.svg | 3 + coney-inspect/src/assets/inspect.png | Bin 0 -> 7325 bytes coney-inspect/src/assets/logout.svg | 3 + coney-inspect/src/assets/pattern.png | Bin 0 -> 41534 bytes coney-inspect/src/assets/pie.svg | 4 + coney-inspect/src/assets/refresh.svg | 3 + coney-inspect/src/assets/sections.svg | 5 + coney-inspect/src/assets/users.svg | 3 + coney-inspect/src/browserslist | 11 + coney-inspect/src/coney-theme.css | 3856 +++++ .../environments/environment.docker.prod.ts | 19 + .../src/environments/environment.prod.ts | 4 + coney-inspect/src/environments/environment.ts | 18 + coney-inspect/src/favicon.ico | Bin 0 -> 8120 bytes coney-inspect/src/index.html | 26 + coney-inspect/src/karma.conf.js | 32 + coney-inspect/src/main.ts | 12 + coney-inspect/src/polyfills.ts | 63 + coney-inspect/src/styles-mobile.css | 26 + coney-inspect/src/styles.css | 151 + coney-inspect/src/test.ts | 20 + coney-inspect/src/tsconfig.app.json | 11 + coney-inspect/src/tsconfig.spec.json | 18 + coney-inspect/src/tslint.json | 17 + coney-inspect/tsconfig.json | 22 + coney-inspect/tslint.json | 75 + 369 files changed, 67329 insertions(+), 22 deletions(-) delete mode 100644 .gitmodules delete mode 160000 coney-api create mode 100644 coney-api/.dockerignore create mode 100644 coney-api/.gitignore create mode 100644 coney-api/Dockerfile create mode 100644 coney-api/Dockerfile-deploy create mode 100644 coney-api/LICENSE create mode 100644 coney-api/README.md create mode 100644 coney-api/pom.xml create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/ConeyApiApplication.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/config/ApplicationConfig.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/config/WebSecurityConfig.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/controller/AdminController.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/controller/ChatController.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/controller/ConversationController.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/controller/DataController.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/controller/ExceptionHandlerController.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/ConflictException.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/ErrorView.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/MethodNotAllowedException.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/ParsingException.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/ResourceNotFoundException.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/exception/UserNotAuthorizedException.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtRequestFilter.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtTokenUtil.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/authentication/Customer.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswerBlock.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswersResponse.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/BeginConversationResponse.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/ConversationResponse.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/QuestionBlock.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/UserProject.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Block.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Conversation.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Edge.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Project.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Tag.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/repository/AdminRepository.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/repository/ChatRepository.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/repository/ConversationRepository.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/repository/DataRepository.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/service/AdminService.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/service/ChatService.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/service/ConversationService.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/service/DataService.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/utils/RDFUtils.java create mode 100644 coney-api/src/main/java/com/cefriel/coneyapi/utils/Utils.java create mode 100644 coney-api/src/main/resources/log4j.xml create mode 100644 coney-api/src/test/java/com/cefriel/coneyapi/ConeyApiApplicationTests.java delete mode 160000 coney-chat create mode 100644 coney-chat/.dockerignore create mode 100644 coney-chat/.editorconfig create mode 100644 coney-chat/.gitignore create mode 100644 coney-chat/Dockerfile create mode 100644 coney-chat/LICENSE create mode 100644 coney-chat/README.md create mode 100644 coney-chat/angular.json create mode 100644 coney-chat/e2e/protractor.conf.js create mode 100644 coney-chat/e2e/src/app.e2e-spec.ts create mode 100644 coney-chat/e2e/src/app.po.ts create mode 100644 coney-chat/e2e/tsconfig.e2e.json create mode 100644 coney-chat/package-lock.json create mode 100644 coney-chat/package.json create mode 100644 coney-chat/src/app/answer-checkbox/answer-checkbox.component.css create mode 100644 coney-chat/src/app/answer-checkbox/answer-checkbox.component.html create mode 100644 coney-chat/src/app/answer-checkbox/answer-checkbox.component.spec.ts create mode 100644 coney-chat/src/app/answer-checkbox/answer-checkbox.component.ts create mode 100644 coney-chat/src/app/answer-emoji/answer-emoji.component.css create mode 100644 coney-chat/src/app/answer-emoji/answer-emoji.component.html create mode 100644 coney-chat/src/app/answer-emoji/answer-emoji.component.spec.ts create mode 100644 coney-chat/src/app/answer-emoji/answer-emoji.component.ts create mode 100644 coney-chat/src/app/answer-option/answer-option.component.css create mode 100644 coney-chat/src/app/answer-option/answer-option.component.html create mode 100644 coney-chat/src/app/answer-option/answer-option.component.spec.ts create mode 100644 coney-chat/src/app/answer-option/answer-option.component.ts create mode 100644 coney-chat/src/app/answer-scale/answer-scale.component.css create mode 100644 coney-chat/src/app/answer-scale/answer-scale.component.html create mode 100644 coney-chat/src/app/answer-scale/answer-scale.component.spec.ts create mode 100644 coney-chat/src/app/answer-scale/answer-scale.component.ts create mode 100644 coney-chat/src/app/answer-select/answer-select.component.css create mode 100644 coney-chat/src/app/answer-select/answer-select.component.html create mode 100644 coney-chat/src/app/answer-select/answer-select.component.spec.ts create mode 100644 coney-chat/src/app/answer-select/answer-select.component.ts create mode 100644 coney-chat/src/app/answer-slide/answer-slide.component.css create mode 100644 coney-chat/src/app/answer-slide/answer-slide.component.html create mode 100644 coney-chat/src/app/answer-slide/answer-slide.component.spec.ts create mode 100644 coney-chat/src/app/answer-slide/answer-slide.component.ts create mode 100644 coney-chat/src/app/answer-text/answer-text.component.css create mode 100644 coney-chat/src/app/answer-text/answer-text.component.html create mode 100644 coney-chat/src/app/answer-text/answer-text.component.spec.ts create mode 100644 coney-chat/src/app/answer-text/answer-text.component.ts create mode 100644 coney-chat/src/app/chat.component.css create mode 100644 coney-chat/src/app/chat.component.html create mode 100644 coney-chat/src/app/chat.component.spec.ts create mode 100644 coney-chat/src/app/chat.component.ts create mode 100644 coney-chat/src/app/chat.module.ts create mode 100644 coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.html create mode 100644 coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.ts create mode 100644 coney-chat/src/app/models/block.ts create mode 100644 coney-chat/src/app/models/strings.model.ts create mode 100644 coney-chat/src/app/services/backend.service.ts create mode 100644 coney-chat/src/assets/.gitkeep create mode 100644 coney-chat/src/assets/chat-ui.png create mode 100644 coney-chat/src/assets/circle.svg create mode 100644 coney-chat/src/assets/end_check.svg create mode 100644 coney-chat/src/assets/messages.svg create mode 100644 coney-chat/src/assets/pattern.png create mode 100644 coney-chat/src/assets/redo.svg create mode 100644 coney-chat/src/assets/send.svg create mode 100644 coney-chat/src/assets/star_empty.svg create mode 100644 coney-chat/src/assets/star_full.svg create mode 100644 coney-chat/src/assets/star_half.svg create mode 100644 coney-chat/src/browserslist create mode 100644 coney-chat/src/coney-theme.css create mode 100644 coney-chat/src/environments/environment.docker.prod.ts create mode 100644 coney-chat/src/environments/environment.prod.ts create mode 100644 coney-chat/src/environments/environment.ts create mode 100644 coney-chat/src/favicon.ico create mode 100644 coney-chat/src/index.html create mode 100644 coney-chat/src/karma.conf.js create mode 100644 coney-chat/src/main.ts create mode 100644 coney-chat/src/polyfills.ts create mode 100644 coney-chat/src/star_empty.svg create mode 100644 coney-chat/src/star_full.svg create mode 100644 coney-chat/src/styles.css create mode 100644 coney-chat/src/test.ts create mode 100644 coney-chat/src/tsconfig.app.json create mode 100644 coney-chat/src/tsconfig.spec.json create mode 100644 coney-chat/src/tslint.json create mode 100644 coney-chat/tsconfig.json create mode 100644 coney-chat/tslint.json delete mode 160000 coney-create create mode 100644 coney-create/.dockerignore create mode 100644 coney-create/.editorconfig create mode 100644 coney-create/.gitignore create mode 100644 coney-create/Dockerfile create mode 100644 coney-create/LICENSE create mode 100644 coney-create/README.md create mode 100644 coney-create/angular.json create mode 100644 coney-create/e2e/protractor.conf.js create mode 100644 coney-create/e2e/src/app.e2e-spec.ts create mode 100644 coney-create/e2e/src/app.po.ts create mode 100644 coney-create/e2e/tsconfig.e2e.json create mode 100644 coney-create/package-lock.json create mode 100644 coney-create/package.json create mode 100644 coney-create/src/app/app.component.html create mode 100644 coney-create/src/app/app.component.spec.ts create mode 100644 coney-create/src/app/app.component.ts create mode 100644 coney-create/src/app/app.module.ts create mode 100644 coney-create/src/app/auth/login/login.component.css create mode 100644 coney-create/src/app/auth/login/login.component.html create mode 100644 coney-create/src/app/auth/login/login.component.spec.ts create mode 100644 coney-create/src/app/auth/login/login.component.ts create mode 100644 coney-create/src/app/auth/logout/logout.component.css create mode 100644 coney-create/src/app/auth/logout/logout.component.html create mode 100644 coney-create/src/app/auth/logout/logout.component.spec.ts create mode 100644 coney-create/src/app/auth/logout/logout.component.ts create mode 100644 coney-create/src/app/dialogs/add-quick-question-dialog.component.html create mode 100644 coney-create/src/app/dialogs/add-quick-question-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/confirm-dialog.component.html create mode 100644 coney-create/src/app/dialogs/confirm-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/delete-dialog.component.html create mode 100644 coney-create/src/app/dialogs/delete-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/print-dialog.component.html create mode 100644 coney-create/src/app/dialogs/print-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/publish-dialog.component.html create mode 100644 coney-create/src/app/dialogs/publish-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/save-as-dialog.component.html create mode 100644 coney-create/src/app/dialogs/save-as-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/search-conv-dialog.component.html create mode 100644 coney-create/src/app/dialogs/search-conv-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/search-tag-dialog.component.html create mode 100644 coney-create/src/app/dialogs/search-tag-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/share-survey-dialog.component.html create mode 100644 coney-create/src/app/dialogs/share-survey-dialog.component.ts create mode 100644 coney-create/src/app/dialogs/translation-dialog.component.html create mode 100644 coney-create/src/app/dialogs/translation-dialog.component.ts create mode 100644 coney-create/src/app/home.component.css create mode 100644 coney-create/src/app/home.component.html create mode 100644 coney-create/src/app/home.component.spec.ts create mode 100644 coney-create/src/app/home.component.ts create mode 100644 coney-create/src/app/model/chat.ts create mode 100644 coney-create/src/app/model/conversational.model.ts create mode 100644 coney-create/src/app/rete/components/answer-checkbox.component.ts create mode 100644 coney-create/src/app/rete/components/answer-multiple.component.ts create mode 100644 coney-create/src/app/rete/components/answer-open.component.ts create mode 100644 coney-create/src/app/rete/components/question.component.ts create mode 100644 coney-create/src/app/rete/components/talk-link.component.ts create mode 100644 coney-create/src/app/rete/components/talk-text.component.ts create mode 100644 coney-create/src/app/rete/components/talk-url.component.ts create mode 100644 coney-create/src/app/rete/controls/checkbox.control.ts create mode 100644 coney-create/src/app/rete/controls/number.control.ts create mode 100644 coney-create/src/app/rete/controls/points-field.control.ts create mode 100644 coney-create/src/app/rete/controls/tag-field.control.ts create mode 100644 coney-create/src/app/rete/controls/text-area-limited.control.ts create mode 100644 coney-create/src/app/rete/controls/text-area.control.ts create mode 100644 coney-create/src/app/rete/controls/text-field.control.ts create mode 100644 coney-create/src/app/rete/controls/text-type.control.ts create mode 100644 coney-create/src/app/rete/controls/url-field.control.ts create mode 100644 coney-create/src/app/rete/controls/value.control.ts create mode 100644 coney-create/src/app/rete/controls/visualization.control.ts create mode 100644 coney-create/src/app/rete/rete.component.css create mode 100644 coney-create/src/app/rete/rete.component.html create mode 100644 coney-create/src/app/rete/rete.component.ts create mode 100644 coney-create/src/app/rete/sockets.ts create mode 100644 coney-create/src/app/routing.module.ts create mode 100644 coney-create/src/app/services/auth-guard.service.ts create mode 100644 coney-create/src/app/services/auth-http-interceptor.service.ts create mode 100644 coney-create/src/app/services/authentication.service.ts create mode 100644 coney-create/src/app/services/backend.service.ts create mode 100644 coney-create/src/app/services/routing.service.ts create mode 100644 coney-create/src/assets/.gitkeep create mode 100644 coney-create/src/assets/ErrorSound.mp3 create mode 100644 coney-create/src/assets/InfoSound.mp3 create mode 100644 coney-create/src/assets/SuccessSound.mp3 create mode 100644 coney-create/src/assets/WarningSound.mp3 create mode 100644 coney-create/src/assets/clipboard_copy.svg create mode 100644 coney-create/src/assets/create-ui.PNG create mode 100644 coney-create/src/assets/navbar/check.svg create mode 100644 coney-create/src/assets/navbar/coney_create.png create mode 100644 coney-create/src/assets/navbar/create.png create mode 100644 coney-create/src/assets/navbar/delete.svg create mode 100644 coney-create/src/assets/navbar/file.svg create mode 100644 coney-create/src/assets/navbar/information.svg create mode 100644 coney-create/src/assets/navbar/inspect_pie.svg create mode 100644 coney-create/src/assets/navbar/link.svg create mode 100644 coney-create/src/assets/navbar/list.svg create mode 100644 coney-create/src/assets/navbar/logout.svg create mode 100644 coney-create/src/assets/navbar/map.svg create mode 100644 coney-create/src/assets/navbar/open.svg create mode 100644 coney-create/src/assets/navbar/plus.svg create mode 100644 coney-create/src/assets/navbar/preview.svg create mode 100644 coney-create/src/assets/navbar/print.svg create mode 100644 coney-create/src/assets/navbar/save.svg create mode 100644 coney-create/src/assets/navbar/save_as.svg create mode 100644 coney-create/src/assets/navbar/statistics.svg create mode 100644 coney-create/src/assets/navbar/tag.svg create mode 100644 coney-create/src/assets/navbar/template.svg create mode 100644 coney-create/src/assets/navbar/translation.svg create mode 100644 coney-create/src/assets/pattern.png create mode 100644 coney-create/src/assets/shrink.svg create mode 100644 coney-create/src/assets/zoom-in.svg create mode 100644 coney-create/src/assets/zoom-out.svg create mode 100644 coney-create/src/browserslist create mode 100644 coney-create/src/coney-theme.css create mode 100644 coney-create/src/environments/environment.docker.prod.ts create mode 100644 coney-create/src/environments/environment.docker.ts create mode 100644 coney-create/src/environments/environment.prod.ts create mode 100644 coney-create/src/environments/environment.ts create mode 100644 coney-create/src/favicon.ico create mode 100644 coney-create/src/index.html create mode 100644 coney-create/src/karma.conf.js create mode 100644 coney-create/src/main.ts create mode 100644 coney-create/src/polyfills.ts create mode 100644 coney-create/src/styles-mobile.css create mode 100644 coney-create/src/styles-rete.css create mode 100644 coney-create/src/styles.css create mode 100644 coney-create/src/test.ts create mode 100644 coney-create/src/theme.scss create mode 100644 coney-create/src/tsconfig.app.json create mode 100644 coney-create/src/tsconfig.spec.json create mode 100644 coney-create/src/tslint.json create mode 100644 coney-create/tsconfig.json create mode 100644 coney-create/tslint.json delete mode 160000 coney-inspect create mode 100644 coney-inspect/.dockerignore create mode 100644 coney-inspect/.editorconfig create mode 100644 coney-inspect/.gitignore create mode 100644 coney-inspect/Dockerfile create mode 100644 coney-inspect/LICENSE create mode 100644 coney-inspect/README.md create mode 100644 coney-inspect/angular.json create mode 100644 coney-inspect/e2e/protractor.conf.js create mode 100644 coney-inspect/e2e/src/app.e2e-spec.ts create mode 100644 coney-inspect/e2e/src/app.po.ts create mode 100644 coney-inspect/e2e/tsconfig.e2e.json create mode 100644 coney-inspect/package-lock.json create mode 100644 coney-inspect/package.json create mode 100644 coney-inspect/src/app/app-routing.module.ts create mode 100644 coney-inspect/src/app/app.component.css create mode 100644 coney-inspect/src/app/app.component.html create mode 100644 coney-inspect/src/app/app.component.spec.ts create mode 100644 coney-inspect/src/app/app.component.ts create mode 100644 coney-inspect/src/app/app.module.ts create mode 100644 coney-inspect/src/app/auth/login/login.component.css create mode 100644 coney-inspect/src/app/auth/login/login.component.html create mode 100644 coney-inspect/src/app/auth/login/login.component.spec.ts create mode 100644 coney-inspect/src/app/auth/login/login.component.ts create mode 100644 coney-inspect/src/app/auth/logout/logout.component.css create mode 100644 coney-inspect/src/app/auth/logout/logout.component.html create mode 100644 coney-inspect/src/app/auth/logout/logout.component.spec.ts create mode 100644 coney-inspect/src/app/auth/logout/logout.component.ts create mode 100644 coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.css create mode 100644 coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.html create mode 100644 coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.ts create mode 100644 coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.css create mode 100644 coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.html create mode 100644 coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.ts create mode 100644 coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.css create mode 100644 coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.html create mode 100644 coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.ts create mode 100644 coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.css create mode 100644 coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.html create mode 100644 coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.ts create mode 100644 coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.css create mode 100644 coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.html create mode 100644 coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.spec.ts create mode 100644 coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.ts create mode 100644 coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.css create mode 100644 coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.html create mode 100644 coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.ts create mode 100644 coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.css create mode 100644 coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.html create mode 100644 coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.spec.ts create mode 100644 coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.ts create mode 100644 coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.css create mode 100644 coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.html create mode 100644 coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.spec.ts create mode 100644 coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.ts create mode 100644 coney-inspect/src/app/cards/user-view/user-view.component.css create mode 100644 coney-inspect/src/app/cards/user-view/user-view.component.html create mode 100644 coney-inspect/src/app/cards/user-view/user-view.component.spec.ts create mode 100644 coney-inspect/src/app/cards/user-view/user-view.component.ts create mode 100644 coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.css create mode 100644 coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.html create mode 100644 coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.spec.ts create mode 100644 coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.ts create mode 100644 coney-inspect/src/app/home/home.component.css create mode 100644 coney-inspect/src/app/home/home.component.html create mode 100644 coney-inspect/src/app/home/home.component.spec.ts create mode 100644 coney-inspect/src/app/home/home.component.ts create mode 100644 coney-inspect/src/app/models/CSVModel.ts create mode 100644 coney-inspect/src/app/services/auth-guard.service.ts create mode 100644 coney-inspect/src/app/services/auth-http-interceptor.service.ts create mode 100644 coney-inspect/src/app/services/authentication.service.ts create mode 100644 coney-inspect/src/app/services/backend.service.ts create mode 100644 coney-inspect/src/assets/.gitkeep create mode 100644 coney-inspect/src/assets/csv.svg create mode 100644 coney-inspect/src/assets/inspect.png create mode 100644 coney-inspect/src/assets/logout.svg create mode 100644 coney-inspect/src/assets/pattern.png create mode 100644 coney-inspect/src/assets/pie.svg create mode 100644 coney-inspect/src/assets/refresh.svg create mode 100644 coney-inspect/src/assets/sections.svg create mode 100644 coney-inspect/src/assets/users.svg create mode 100644 coney-inspect/src/browserslist create mode 100644 coney-inspect/src/coney-theme.css create mode 100644 coney-inspect/src/environments/environment.docker.prod.ts create mode 100644 coney-inspect/src/environments/environment.prod.ts create mode 100644 coney-inspect/src/environments/environment.ts create mode 100644 coney-inspect/src/favicon.ico create mode 100644 coney-inspect/src/index.html create mode 100644 coney-inspect/src/karma.conf.js create mode 100644 coney-inspect/src/main.ts create mode 100644 coney-inspect/src/polyfills.ts create mode 100644 coney-inspect/src/styles-mobile.css create mode 100644 coney-inspect/src/styles.css create mode 100644 coney-inspect/src/test.ts create mode 100644 coney-inspect/src/tsconfig.app.json create mode 100644 coney-inspect/src/tsconfig.spec.json create mode 100644 coney-inspect/src/tslint.json create mode 100644 coney-inspect/tsconfig.json create mode 100644 coney-inspect/tslint.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 609ff5c..0000000 --- a/.gitmodules +++ /dev/null @@ -1,12 +0,0 @@ -[submodule "coney-api"] - path = coney-api - url = https://github.com/cefriel/coney-api.git -[submodule "coney-inspect"] - path = coney-inspect - url = https://github.com/cefriel/coney-inspect.git -[submodule "coney-chat"] - path = coney-chat - url = https://github.com/cefriel/coney-chat.git -[submodule "coney-create"] - path = coney-create - url = https://github.com/cefriel/coney-create.git diff --git a/README.md b/README.md index 104b49c..e93f246 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,16 @@ You can try Coney at [bit.ly/try-coney](https://bit.ly/try-coney)! ### Clone the repository -To clone the repository and all submodules you should run the following command: +To clone the repository you can run the following command: ``` -git clone --recurse-submodules https://github.com/cefriel/coney.git +git clone https://github.com/cefriel/coney.git ``` -Ongoing developments are committed to the repositories of the different components, therefore, it is important to consider the specific commit pointed by this repository for each component. Downloading submodules using the provided command guarantees that all the components are synched to the latest stable version. +The development is no longer handled using submodules. ### Toolkit Usage -The repository contains a docker-compose file to build and deploy the entire project. Each submodule contains its own Dockerfile to build the related Docker image. +The repository contains a docker-compose file to build and deploy the entire project. Each Coney component contains its own Dockerfile to build the related Docker image. A utility script is added to the repository to handle common commands. Check line endings before running it on Windows. @@ -100,12 +100,13 @@ The Coney Enterprise Edition is mainly based on the open source components, but - Link personalization for survey delivery (users, metadata, limit to number completions) - Chat interface personalization (colors, logo, etc.) -If you are interested, or if you simply want to know more, contact us visiting [coney.cefriel.com](https://coney.cefriel.com). + +If you are interested, if you simply want to know more, and/or if you need help in the survey design process contact us visiting [coney.cefriel.com](https://coney.cefriel.com). ### Coney In-Use Published studies using Coney: -- TESS Network Motivation Survey Dataset [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3739058 +- Survey Study about Motivation for Participants in Citizen Science Projects [Data set]. Zenodo. https://doi.org/10.5281/zenodo.5753091 - Ride2Rail Choice Criteria Survey Dataset [Data set]. Zenodo. http://doi.org/10.5281/zenodo.4593471 To add something to the list please either submit a pull request or open an issue. diff --git a/coney-api b/coney-api deleted file mode 160000 index ae740a1..0000000 --- a/coney-api +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae740a1bcd18689c598b10dd627f86a5428d8a58 diff --git a/coney-api/.dockerignore b/coney-api/.dockerignore new file mode 100644 index 0000000..01575ed --- /dev/null +++ b/coney-api/.dockerignore @@ -0,0 +1,27 @@ +HELP.md +/target/ +!.mvn/wrapper/maven-wrapper.jar +!/target/coney-api-0.1.war + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/coney-api/.gitignore b/coney-api/.gitignore new file mode 100644 index 0000000..f53ea4b --- /dev/null +++ b/coney-api/.gitignore @@ -0,0 +1,27 @@ +HELP.md +/target/ +!.mvn/wrapper/maven-wrapper.jar +/src/main/resources/application.properties + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/coney-api/Dockerfile b/coney-api/Dockerfile new file mode 100644 index 0000000..34b8e44 --- /dev/null +++ b/coney-api/Dockerfile @@ -0,0 +1,12 @@ +FROM maven:3.3-jdk-8 as builder +COPY . /usr/src/coney +WORKDIR /usr/src/coney +RUN mvn clean install -f /usr/src/coney && mkdir /usr/src/wars/ +RUN find /usr/src/coney/ -iname '*.war' -exec cp {} /usr/src/wars/ \; + +FROM tomcat:8.5.43 +COPY --from=builder /usr/src/wars/coney-api-0.1.war /usr/local/tomcat/webapps/coney-api.war +ENV NEO4J_URL http://neo4j:coney@coney-neo4j:7474 +ENV RETE_PATH /opt/coney-data/ +ENV SWAGGER_ENABLE true +EXPOSE 8080 \ No newline at end of file diff --git a/coney-api/Dockerfile-deploy b/coney-api/Dockerfile-deploy new file mode 100644 index 0000000..7ba2182 --- /dev/null +++ b/coney-api/Dockerfile-deploy @@ -0,0 +1,6 @@ +FROM tomcat:8.5.43 +COPY ./target/coney-api-0.1.war /usr/local/tomcat/webapps/coney-api.war +ENV NEO4J_URL http://neo4j:coney@coney-neo4j:7474 +ENV RETE_PATH /opt/coney-data/ +ENV SWAGGER_ENABLE true +EXPOSE 8080 \ No newline at end of file diff --git a/coney-api/LICENSE b/coney-api/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/coney-api/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/coney-api/README.md b/coney-api/README.md new file mode 100644 index 0000000..e9ecce7 --- /dev/null +++ b/coney-api/README.md @@ -0,0 +1,26 @@ +# Coney Api + +Coney API: backend of the Coney toolkit. Coney API is one of the components of the [Coney](https://github.com/cefriel/coney) toolkit for conversational surveys. + +## Customize build configuration + +The following parameter can be modified for a specific build: +- Log directory path: in file `src\main\resources\log4j.xml` modify the attribute `value` for the element `param` with attribute `name` equal to FileNamePattern. +- Unpublished surveys directory path: in class `src\main\java\com\cefriel\coneyapi\utils\Utils.java` in the `saveJsonToFile` method modify the variable `absolutePath`. +- Swagger documentation enable/disable: in class `src\main\java\com\cefriel\coneyapi\config\ApplicationConfig.java` modify the boolean in the `api` method when calling `enable`. + +### License + +_Copyright 2020 Cefriel._ + +Licensed 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. diff --git a/coney-api/pom.xml b/coney-api/pom.xml new file mode 100644 index 0000000..e829ef6 --- /dev/null +++ b/coney-api/pom.xml @@ -0,0 +1,184 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + com.cefriel + coney-api + 0.1 + coney-api + war + Spring API for Neo4j + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-data-neo4j + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-web-services + + + + + org.eclipse.rdf4j + rdf4j-runtime + 2.5.3 + + + ch.qos.logback + logback-classic + + + + + org.eclipse.rdf4j + rdf4j-repository-sail + 2.5.3 + + + org.eclipse.rdf4j + rdf4j-sail-memory + 2.5.3 + + + + + org.springframework.boot + spring-boot-starter-security + + + io.jsonwebtoken + jjwt + 0.9.1 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + + + + io.springfox + springfox-swagger2 + 2.1.2 + + + + + io.springfox + springfox-swagger-ui + 2.1.2 + + + + + + org.slf4j + slf4j-log4j12 + runtime + + + log4j + apache-log4j-extras + 1.2.17 + + + + + org.bitbucket.b_c + jose4j + 0.6.5 + + + + + org.apache.commons + commons-lang3 + + + + + org.apache.commons + commons-collections4 + 4.2 + + + + + com.google.code.gson + gson + + + + javax.el + javax.el-api + 3.0.0 + + + + + org.neo4j + neo4j-ogm-http-driver + + + + + + + + + + src/main/resources + + **/*.properties + log4j.xml + + + + + + + diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/ConeyApiApplication.java b/coney-api/src/main/java/com/cefriel/coneyapi/ConeyApiApplication.java new file mode 100644 index 0000000..b0fa236 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/ConeyApiApplication.java @@ -0,0 +1,21 @@ +package com.cefriel.coneyapi; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.boot.builder.SpringApplicationBuilder; + +@SpringBootApplication +@EnableNeo4jRepositories("com.cefriel.neo4j.repository") +public class ConeyApiApplication extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(ConeyApiApplication.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(ConeyApiApplication.class); + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/config/ApplicationConfig.java b/coney-api/src/main/java/com/cefriel/coneyapi/config/ApplicationConfig.java new file mode 100644 index 0000000..cc759d7 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/config/ApplicationConfig.java @@ -0,0 +1,63 @@ +package com.cefriel.coneyapi.config; + +import org.neo4j.ogm.config.Configuration.Builder; +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.transaction.Neo4jTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + + +@ComponentScan(basePackages = { "com.cefriel.coneyapi.service" }) +@Configuration +@EnableTransactionManagement +@EnableSwagger2 +@EnableNeo4jRepositories(basePackages = "com.cefriel.coneyapi.repository") +public class ApplicationConfig { + + public static final String NEO4J_URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:neo4j@localhost:7474"; + public static final String RETE_PATH = System.getenv("RETE_PATH") != null ? System.getenv("RETE_PATH") : "/var/lib/tomcat/webapps/coney-retejs-files/"; + public static final boolean SWAGGER_ENABLE = System.getenv("SWAGGER_ENABLE") != null && Boolean.parseBoolean(System.getenv("SWAGGER_ENABLE"));; + + @Bean + public org.neo4j.ogm.config.Configuration getConfiguration() { + org.neo4j.ogm.config.Configuration config = new Builder().uri(NEO4J_URL).build(); + return config; + } + + + @Bean(name = "sessionFactory") + public SessionFactory getSessionFactory() { + return new SessionFactory(getConfiguration(), "com.cefriel.coneyapi.model.db"); + } + + @Bean(name = "transactionManager") + public Neo4jTransactionManager transactionManager() { + return new Neo4jTransactionManager(getSessionFactory()); + } + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2).select() + .apis(RequestHandlerSelectors.basePackage("com.cefriel.coneyapi.controller")) + .paths(PathSelectors.ant("/*")) + .build() + .apiInfo(apiInfo()) + .enable(SWAGGER_ENABLE); + } + + private ApiInfo apiInfo() { + ApiInfo apiInfo = new ApiInfo("Coney API", "Coney API", + "1.0.0", "https://github.com/cefriel/coney/blob/master/LICENSE.md","coney@cefriel.com", "Apache License, Version 2.0", + "http://www.apache.org/licenses/LICENSE-2.0"); + return apiInfo; + } +} \ No newline at end of file diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/config/WebSecurityConfig.java b/coney-api/src/main/java/com/cefriel/coneyapi/config/WebSecurityConfig.java new file mode 100644 index 0000000..ce35305 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/config/WebSecurityConfig.java @@ -0,0 +1,45 @@ +package com.cefriel.coneyapi.config; + +import com.cefriel.coneyapi.jwt.JwtRequestFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.security" }) +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + + @Autowired + private JwtRequestFilter jwtRequestFilter; + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Override + protected void configure(HttpSecurity httpSecurity) throws Exception { + + // We don't need CSRF for this example + httpSecurity.csrf().disable() + .authorizeRequests() + .anyRequest().permitAll() + .and().sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS); + + // Add a filter to validate the tokens with every request + httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/controller/AdminController.java b/coney-api/src/main/java/com/cefriel/coneyapi/controller/AdminController.java new file mode 100644 index 0000000..0530f46 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/controller/AdminController.java @@ -0,0 +1,279 @@ +package com.cefriel.coneyapi.controller; + + +import com.cefriel.coneyapi.exception.MethodNotAllowedException; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import com.cefriel.coneyapi.service.AdminService; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import io.swagger.annotations.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/adm/") +public class AdminController { + + private static final Logger logger = LoggerFactory.getLogger(AdminController.class); + private AdminService adminService; + + public AdminController(AdminService adminService){ + this.adminService = adminService; + } + + @ApiOperation(value = "Returns filterd customers") + @RequestMapping(value = "/getCustomers", method = RequestMethod.POST) + public List getCustomers(@RequestBody String data) { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + + + logger.info("[CONTROL] Getting customers with "+filterType+" filter"); + String filter = ""; + String filter2 = ""; + if(filterType.equals("project")){ + filter = json.get("projectName").getAsString(); + } else if(filterType.equals("conversation")){ + filter = json.get("conversationId").getAsString(); + } else if(filterType.equals("both")){ + filter = json.get("conversationId").getAsString(); + filter2 = json.get("projectName").getAsString(); + } + + return adminService.getCustomers(filterType, filter, filter2); + } + + @ApiOperation(value = "Returns filterd conversations") + @RequestMapping(value = "/getConversations", method = RequestMethod.POST) + public List getConversations(@RequestBody String data) { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + + logger.info("[CONTROL] Getting conversations with "+filterType+" filter"); + String filter = ""; + String filter2 = ""; + + if(filterType.equals("project")){ + filter = json.get("projectName").getAsString(); + } else if(filterType.equals("customer")){ + filter = json.get("username").getAsString(); + } else if(filterType.equals("both")){ + filter = json.get("username").getAsString(); + filter2 = json.get("projectName").getAsString(); + } + + return adminService.getConversations(filterType, filter, filter2); + } + + @ApiOperation(value = "Returns filterd projects") + @RequestMapping(value = "/getProjects", method = RequestMethod.POST) + public List getProjects(@RequestBody String data) { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + + logger.info("[CONTROL] Getting customers with "+filterType+" filter"); + String filter = ""; + String filter2 = ""; + if(filterType.equals("customer")){ + filter = json.get("username").getAsString(); + } else if(filterType.equals("conversation")){ + filter = json.get("conversationId").getAsString(); + } else if(filterType.equals("both")){ + filter2 = json.get("conversationId").getAsString(); + filter = json.get("username").getAsString(); + } + + return adminService.getProjects(filterType, filter, filter2); + } + + + @ApiOperation(value = "Inserts data in DB") + @RequestMapping(value = "/insertData", method = RequestMethod.POST) + public boolean insertData(@RequestBody String data) throws MethodNotAllowedException { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + boolean res; + logger.info("[CONTROL] Inserting "+filterType+" data in db"); + + switch (filterType) { + case "customer": { + logger.info("[CONTROL] Inserting Customer"); + String username = json.get("username").getAsString(); + String password = json.get("password").getAsString(); + String qry = adminService.createCustomer(username, password); + + if(qry.equals("auth")){ + logger.error("[CONTROL] Not authorized"); + return false; + } else if (qry.equals("taken")){ + logger.error("[CONTROL] The username is already taken"); + throw new MethodNotAllowedException("The username is already taken"); + } else { + res = qry.equals(username); + } + break; + } + case "project": { + logger.info("[CONTROL] Inserting Project"); + String projectName = json.get("projectName").getAsString(); + res = adminService.createProject(projectName); + break; + } + case "linkCoP": { + logger.info("[CONTROL] Inserting Conversation-Project Link"); + String conversationId = json.get("conversationId").getAsString(); + String projectName = json.get("projectName").getAsString(); + res = adminService.linkConversationToProject(conversationId, projectName); + break; + } + case "linkCuP": { + logger.info("[CONTROL] Inserting Customer-Project Link"); + String username = json.get("username").getAsString(); + String projectName = json.get("projectName").getAsString(); + int accessLevel = json.get("accessLevel").getAsInt(); + res = adminService.linkCustomerToProject(username, projectName, accessLevel); + break; + } + default: + res = false; + break; + } + + return res; + } + + @ApiOperation(value = "Edits data in DB") + @RequestMapping(value = "/editData", method = RequestMethod.POST) + public boolean editData(@RequestBody String data) { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + boolean res; + logger.info("[CONTROL] editing "+filterType+" data in db"); + + switch (filterType) { + case "convAL": { + logger.info("[CONTROL] Conversation Access Level edit"); + String conversationId = json.get("conversationId").getAsString(); + int accessLevel = json.get("accessLevel").getAsInt(); + res = adminService.changeConversationAccessLevel(conversationId, accessLevel); + break; + } + case "linkCPAL": { + logger.info("[CONTROL] Link Cust-Project Access Level edit"); + String username = json.get("username").getAsString(); + String projectName = json.get("projectName").getAsString(); + int accessLevel = json.get("accessLevel").getAsInt(); + res = adminService.changeCustomerProjectAccessLevel(username, projectName, accessLevel); + break; + } + case "password": { + logger.info("[CONTROL] Password change"); + String username = json.get("username").getAsString(); + String newPw = json.get("newPw").getAsString(); + res = adminService.changeCustomerPassword(username, newPw); + break; + } + case "projectName": { + logger.info("[CONTROL] Project name change"); + String oldName = json.get("oldName").getAsString(); + String newName = json.get("newName").getAsString(); + res = adminService.changeProjectName(oldName, newName); + break; + } + default: + res = false; + break; + } + + return res; + } + + @ApiOperation(value = "Deletes data in DB") + @RequestMapping(value = "/deleteData", method = RequestMethod.POST) + public boolean deleteData(@RequestBody String data) { + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + boolean res = true; + logger.info("[CONTROL] deleting "+filterType+" data in db"); + + switch (filterType) { + case "customer": { + logger.info("[CONTROL] user delete"); + String username = json.get("username").getAsString(); + adminService.deleteCustomer(username); + break; + } + case "project": { + logger.info("[CONTROL] project delete"); + String projectName = json.get("projectName").getAsString(); + adminService.deleteProject(projectName); + break; + } + case "linkCuP": { + logger.info("[CONTROL] CuP link delete"); + String username = json.get("username").getAsString(); + String projectName = json.get("projectName").getAsString(); + adminService.deleteCustomerProjectLink(username, projectName); + break; + } + case "linkCoP": { + logger.info("[CONTROL] CoP delete"); + String conversationId = json.get("conversationId").getAsString(); + String projectName = json.get("projectName").getAsString(); + adminService.deleteConversationProjectLink(conversationId, projectName); + break; + } + default: + res = false; + break; + } + + return res; + } + + @ApiOperation(value = "Checks if data exists in DB") + @RequestMapping(value = "/checkExistence", method = RequestMethod.POST) + public boolean checkExistence(@RequestBody String data){ + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(data); + String filterType = json.get("filter").getAsString(); + logger.info("[CONTROL] Contolling if "+filterType+" already exists"); + + switch (filterType) { + case "customer": { + logger.info("[CONTROL] is username taken check"); + String username = json.get("username").getAsString(); + return adminService.isUsernameTaken(username); + } + case "project": { + logger.info("[CONTROL] is project name taken check"); + String projectName = json.get("projectName").getAsString(); + return adminService.isProjectNameTaken(projectName); + } + default: + return false; + } + } + + @RequestMapping(value = "/isAdmin", method = RequestMethod.GET) + public boolean isAdmin(){ + return adminService.checkUserPermission(); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/controller/ChatController.java b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ChatController.java new file mode 100644 index 0000000..34aca24 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ChatController.java @@ -0,0 +1,202 @@ +package com.cefriel.coneyapi.controller; + +import com.cefriel.coneyapi.exception.MethodNotAllowedException; +import com.cefriel.coneyapi.exception.ParsingException; +import com.cefriel.coneyapi.exception.ResourceNotFoundException; +import com.cefriel.coneyapi.service.ChatService; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import io.swagger.annotations.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/chat/") +public class ChatController { + private static final Logger logger = LoggerFactory.getLogger(ChatController.class); + + private final ChatService chatService; + public ChatController(ChatService chatService){ + this.chatService = chatService; + } + + + @ApiOperation(value = "Returns conversation data, user ID, session and all the blocks up until the first question") + @RequestMapping(value = "/beginConversation", method = RequestMethod.GET) + public String beginConversation(@RequestParam(value = "userId", required = false) String userId, + @RequestParam(value = "projectName", required = false) String projectName, + @RequestParam(value = "projectId", required = false) String projectId, + @RequestParam(value = "noRepeat", required = false) String noRepeat, + @RequestParam(value = "restart") int restart, + @RequestParam(value = "session", required = false) String session, + @RequestParam(value = "lang",required = false) String lang, + @RequestParam(value = "titleOnly", required = false) String titleOnly, + @RequestParam(value = "conversationId", required = false) String conversationId) + throws Exception { + + String outcome; + String oldSession = ""; + + if(titleOnly!= null && titleOnly.equals("true")){ + return chatService.getConversationTitle(conversationId); + } + + if(projectId == null || projectName == null){ + logger.error("No project assigned"); + throw new MethodNotAllowedException("Can't start a chat without a project"); + } + + if(noRepeat == null){ + noRepeat = ""; + } + + if(restart == 0 && userId != null && !userId.equals("") && noRepeat.equals("noRepeat")){ + logger.info("[CHAT] No-repeat check, looking for previous compilation"); + String finishedSession = chatService.wasTheConversationFinished(userId, conversationId); + if(finishedSession != null){ + logger.error("[CHAT] ERROR: Customer has already completed this survey"); + throw new MethodNotAllowedException("You have already completed the survey for this project"); + } + } + + if(restart == 0 && userId != null && !userId.equals("")) { + logger.info("[CHAT] Looking for previous sessions"); + String sessionAlreadyStarted = chatService.wasTheConversationStarted(userId, conversationId); + if(sessionAlreadyStarted != null){ + logger.info("[CHAT] Conversation already started by the user"); + JsonObject resultJson = new JsonObject(); + resultJson.addProperty("re-session", sessionAlreadyStarted); + return resultJson.toString(); + } else { + if(userId.contains("u_")){ + userId = null; + } + } + } else if(restart == 1){ //=restart + + logger.info("[CHAT] Restarting the conversation, previous answers will be deleted with session " + session); + chatService.deletePreviousAnswers(userId, conversationId, session); + + } else if(restart == 2){ //=continue + + oldSession = session; + logger.info("[CHAT] Continue chosen, session: "+session); + } + + + outcome = (chatService.beginConversation(userId, conversationId, projectName, projectId, oldSession, lang)); + + switch (outcome) { + case "no_converstion": + logger.error("[CHAT] Failed to get conversation and add it to the JSON"); + throw new ResourceNotFoundException("Failed to get conversation and add it to the JSON"); + case "no_startend": + logger.error("[CHAT] ERROR: Failed to create Starting relationship"); + throw new ResourceNotFoundException("ERROR: Failed to create Starting relationship"); + case "no_firstblock": + logger.error("[CHAT] ERROR: Failed to get first block"); + throw new ResourceNotFoundException("ERROR: Failed to get first block"); + } + + return outcome; + } + + @ApiOperation(value = "Given an answer, returns the next conversation nodes up until a question or the last node") + @RequestMapping(value = "/continueConversation", method = RequestMethod.POST) + public String continueConversation(@RequestBody String json_answer) + throws ResourceNotFoundException, ParsingException + { + + if(json_answer.length()==0){ + logger.error("[CHAT] ERROR: no answer given, empty json"); + throw new ParsingException("No answer given"); + } + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(json_answer); + + + String convId = json.get("conversationId").getAsString(); + String userId = json.get("userId").getAsString(); + String lang = json.get("lang").getAsString(); + + int blockId = json.get("blockId").getAsInt(); + String type = json.get("answerType").getAsString(); + String sessionId = json.get("session").getAsString(); + + + String res = ""; + + String redo = json.get("redo").getAsString(); + + + if(redo.equals("true")){ + + res = chatService.redoQuestion(userId, blockId, convId, sessionId, lang); + + if(res.equals("no_answer")){ + logger.error("Unable to re-find answers"); + throw new ResourceNotFoundException("Unable to re-find answers"); + } + + } else { + if(type.equals("checkbox")){ + + JsonArray answers = json.get("answer").getAsJsonArray(); + for(int i = 0; i getLanguagesOfConversation(@RequestParam(value = "conversationId") String conversationId) + throws ResourceNotFoundException { + + List langList; + try{ + langList = chatService.getLanguagesOfConversation(conversationId); + } catch (Exception e){ + logger.error("[CHAT] No languages found"); + throw new ResourceNotFoundException("No languages found"); + } + + return langList; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/controller/ConversationController.java b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ConversationController.java new file mode 100644 index 0000000..6025b38 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ConversationController.java @@ -0,0 +1,551 @@ +package com.cefriel.coneyapi.controller; + +import com.cefriel.coneyapi.exception.*; +import com.cefriel.coneyapi.model.db.entities.Tag; +import com.cefriel.coneyapi.model.db.custom.ConversationResponse; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import com.cefriel.coneyapi.service.ConversationService; +import com.cefriel.coneyapi.utils.Utils; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import io.swagger.annotations.*; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +@RestController +@RequestMapping("/create/") +public class ConversationController { + + private static final Logger logger = LoggerFactory.getLogger(ConversationController.class); + private Utils utils = new Utils(); + + private final ConversationService conversationService; + + + public ConversationController(ConversationService conversationService){ + this.conversationService = conversationService; + } + + + @ApiOperation(value = "Returns a list of all the matching conversations") + @RequestMapping(value = "/searchConversation", method = RequestMethod.GET) + public List searchConversation() throws Exception { + + List convList; + + try { + convList = conversationService.searchConversation(); + } catch (Exception e) { + logger.error("[CONVERSATION] Failed to get conversation list"); + throw new ParsingException("Failed to get conversation list"); + } + + logger.info("[CONVERSATION] Search conversation: List of {} conversations correctly retrieved", convList.size()); + return convList; + } + + @ApiOperation(value = "Returns a the project of a conversation") + @RequestMapping(value = "/getConversationProject", method = RequestMethod.GET) + public String getConversationProject(@RequestParam(value = "conversationId") String conversationId) { + return conversationService.getConversationProject(conversationId); + } + + @ApiOperation(value = "Returns the ReteJS-ready JSON") + @RequestMapping(value = "/getConversationJson", method = RequestMethod.GET) + public String findJsonUrlByConversationId(@RequestParam(value = "conversationId") String conversationId) + throws ResourceNotFoundException, UserNotAuthorizedException { + + String res; + try { + res = conversationService.findJsonUrlByConversationId(conversationId); + + } catch (Exception e) { + logger.error("[CONVERSATION] Conversation with ID: "+conversationId+" not found"); + throw new ResourceNotFoundException("Conversation with ID: "+conversationId+" not found"); + } + + + if(res.equals("not_auth")){ + throw new UserNotAuthorizedException("[CONVERSATION] User not authorized to access conversation: "+conversationId); + } + return utils.openJsonFile(res); + } + + @ApiOperation(value="Returns a CSV with all the blocks for translation purposes") + @RequestMapping(value = "/getTranslationCSV", method = RequestMethod.GET) + public String getTranslationCSV(@RequestParam(value = "conversationId") String conversationId) + throws ResourceNotFoundException, UserNotAuthorizedException, MethodNotAllowedException { + + String res; + try { + res = conversationService.getLanguageTranslationCSV(conversationId); + + } catch (Exception e) { + logger.error("[CONVERSATION] Conversation with ID: "+conversationId+" not found"); + throw new ResourceNotFoundException("Conversation with ID: "+conversationId+" not found"); + } + + if(res.equals("not_auth")){ + throw new UserNotAuthorizedException("[CONVERSATION] User not authorized to access conversation: "+conversationId); + } else if(res.equals("not_published")){ + throw new MethodNotAllowedException("[CONVERSATION] The conversation has to be published"); + } + + return res; + } + + + @ApiOperation(value = "Uploads the translation in the database") + @RequestMapping(value = "/uploadTranslation", method = RequestMethod.POST) + public boolean uploadTranslation(@RequestBody String translation) throws Exception{ + + JsonParser parser = new JsonParser(); + JsonObject translationJson = (JsonObject) parser.parse(translation); + JsonArray translationBlocks = translationJson.get("blocks").getAsJsonArray(); + String language = translationJson.get("language").getAsString(); + String conversationId = translationJson.get("conversationId").getAsString(); + + String res = conversationService.uploadTranslation(conversationId, language, translationBlocks); + + return true; + } + + + @ApiOperation(value = "Returns all the available Tags") + @RequestMapping(value = "/searchTags", method = RequestMethod.GET) + public List searchTags(@RequestParam(value = "convId", required = false) String convId) throws Exception { + List tagList; + + if(convId==null){ + convId = ""; + } + try{ + tagList = conversationService.searchTags(convId); + } catch (Exception e){ + logger.error("[CONVERSATION] No tags found"); + throw new ResourceNotFoundException("No tags found"); + } + + logger.info("[CONVERSATION] Returning tag list"); + return tagList; + } + + + @ApiOperation(value = "Returns all the available Tags") + @RequestMapping(value = "/uploadTags", method = RequestMethod.POST) + public boolean uploadTags(@RequestBody String tags) throws Exception { + + logger.info("[CONVERSATION] Saving tags in db"); + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(tags); + JsonArray tag_list = json.get("tags").getAsJsonArray(); + + return conversationService.uploadTags(tag_list); + } + + // DELETE - unpublish conversation + @ApiOperation(value = "Sets conversation status to 'Unpublished'") + @RequestMapping(value = "/unpublishConversation", method = RequestMethod.GET) + public boolean unpublishConversationById( + @RequestParam(value = "conversationId") String conversationId) + throws ResourceNotFoundException, Exception { + + if(!conversationService.isPublished(conversationId)){ + logger.error("[CONVERSATION] ERROR: chat has to be published in order to be unpublished"); + throw new Exception("chat has to be published in order to be unpublished"); + } + + // set to unpublished the conversation status + boolean statusChange = conversationService.updateConversationStatus(conversationId, "unpublished"); + + if(!statusChange){ + logger.error("[CONVERSATION] Error, no conversation found with ID: "+conversationId); + throw new ResourceNotFoundException("No conversation found with ID: "+conversationId); + } + + String json_url = conversationService.findJsonUrlByConversationId(conversationId); + if(!utils.changeStatusInJson(json_url, "unpublished")){ + logger.error("[CONVERSATION] Error, unable to change status in json"); + throw new ResourceNotFoundException("Error, unable to change status in json"); + } + + logger.info("[CONVERSATION] Status successfully set to UNPUBLISHED"); + return true; + + } + + + // DELETE request + @ApiOperation(value = "Deletes a conversation") + @RequestMapping(value = "/deleteConversation", method = RequestMethod.DELETE) + public boolean deleteConversationById(@RequestParam(value = "conversationId") String conversationId, + @RequestParam(value = "status") String status) + throws ResourceNotFoundException, MethodNotAllowedException, ParsingException { + + if (status.equals("saved")) { + boolean convDeleted = conversationService.deleteConversation(conversationId); + if (convDeleted) { + logger.info("[CONVERSATION] Conversation with ID: "+conversationId+" correctly deleted"); + return true; + } else { + logger.error("[CONVERSATION] Conversation with ID: "+conversationId+" not found. Cannot delete the conversation."); + throw new ResourceNotFoundException( + "Cannot delete conversation; no conversations found with with ID: "+conversationId+""); + } + } else if (status.equals("published")) { + logger.error("[CONVERSATION] Operation not allowed. Published conversation cannot be deleted. First unpublish conversation, than delete it"); + throw new MethodNotAllowedException("Operation not allowed. Published conversation cannot be deleted. First unpublish conversation, than delete it"); + + } else if (status.equals("unpublished")){ + + boolean nodesDeleted= conversationService.deleteConversationNodes(conversationId); + if(nodesDeleted){ + logger.info("[CONVERSATION] Conversation nodes and relationships correctly deleted from DB"); + boolean convReteDeleted = conversationService.deleteConversation(conversationId); + if (convReteDeleted) { + logger.info("[CONVERSATION] Conversation correctly deleted from DB"); + + } else { + logger.info("[CONVERSATION] Failed to delete conversation from DB"); + } + + + } else { + logger.error("[CONVERSATION] Failed to delete conversation nodes and relationships, CANNOT delete conversation with ID: "+conversationId); + throw new ResourceNotFoundException( + "Failed to delete conversation nodes and relationships, CANNOT delete conversation with ID: "+conversationId); + } + } else { + logger.error("[CONVERSATION] ParsingError: Status parameter not valid. Only allowed \"saved\" and \"published\""); + throw new ParsingException("Status parameter not valid. Only allowed \"saved\" and \"published\""); + } + return false; + } + + + //create chat blocks regardless of status (to be deleted) + @ApiOperation(value = "Creates chat block regardless of status, but with negative id") + @RequestMapping(value = "/previewConversation", method = RequestMethod.POST) + public String previewConversation(@RequestBody String convRete) throws Exception { + + logger.info("[CONVERSATION] Conversation preview requested"); + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(convRete); + + JsonObject res = new JsonObject(); + String status = json.get("status").getAsString(); + + if(status.equals("published")){ + logger.info("Conversation already published, starting preview"); + res.addProperty("success", true); + return res.toString(); + } + + //creates the nodes (but mark them as part of 'preview' with id>10000) + String conversationId = json.get("conversationId").getAsString(); + JsonObject nodes = json.getAsJsonObject("nodes"); + if(nodes==null){ + logger.error("[CONVERSATION] ERROR: failed to get load nodes for preview"); + throw new ResourceNotFoundException("ERROR: failed to get load nodes for preview"); + } + + + boolean check = conversationService.uploadNodesAndEdged(nodes, conversationId, true); + + if(check){ + res.addProperty("success", true); + } else { + res.addProperty("success", false); + } + return res.toString(); + } + + @ApiOperation(value="Deletes all the nodes created for the preview") + @RequestMapping(value = "/deletePreview", method = RequestMethod.DELETE) + public boolean deletePreview(@RequestParam(value = "conversationId") String conversationId, + @RequestParam(value = "session") String session) + throws Exception { + logger.info("[CONVERSATION] Closing preview, deleting temp nodes of conv: "+conversationId); + return conversationService.deletePreview(conversationId, session); + } + + @ApiOperation(value="Gets all the projects linked to the user") + @RequestMapping(value = "/getCustomerProjects", method = RequestMethod.GET) + public List getCustomerProjects() + throws Exception { + logger.info("[CONVERSATION] Getting projects"); + return conversationService.getCustomerProjects(); + } + + // POST + @ApiOperation(value = "Saves the conversation in a node and locally (Body: ReteJS JSON file)") + @RequestMapping(value = "/saveConversation", method = RequestMethod.POST) + public String saveConversation(@RequestBody String convRete) + throws Exception { + + boolean convSaved = false; + logger.info("-"+SecurityContextHolder.getContext().getAuthentication().getName()+"-"); + boolean commercial = !SecurityContextHolder.getContext().getAuthentication().getName().equals("anonymousUser"); + Utils utils = new Utils(); + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(convRete); + String projectName = ""; String lang = ""; + String conversationId = json.get("conversationId").getAsString(); + String title = json.get("title").getAsString(); + String status = json.get("status").getAsString(); + int accessLevel = 0; + + // check conversationId field + // if null -> save as new node + // else -> check for the status (if published I can't overwrite) + if (conversationId.equals("")) { //SAVE AS NEW + //check for title existence + if (conversationService.titleNotExists(title, conversationId)) { + + //generate id, + conversationId = utils.generateId(); + + //get the established access level + try{ + + //only for commercial use + if(commercial){ + accessLevel = json.get("accessLevel").getAsInt(); + projectName = json.get("projectName").getAsString(); + } + + lang = json.get("lang").getAsString(); + } catch (Exception e){ + logger.error("[CONVERSATION] Some properties were not set, returning."); + throw new ConflictException("Some properties were not set"); + } + + + //try to update RETE JSON and save it locally + String jsonUrl; + try{ + json.addProperty("status", "saved"); + json.addProperty("conversationId", conversationId); + jsonUrl = utils.saveJsonToFile(json, title); + } catch (Exception e){ + e.printStackTrace(); + logger.error("[CONVERSATION] Unable to locally save the JSON file"); + throw new ConflictException("Unable to locally save the JSON file"); + } + + //if the file was saved then create the corresponding node in Neo4j + if(jsonUrl!=null && commercial){ + convSaved = conversationService.createOrUpdateNewConversation(conversationId, title, jsonUrl, projectName, accessLevel, lang); + } else if(jsonUrl != null){ + //open case + convSaved = conversationService.createOrUpdateNewOpenConversation(conversationId, title, jsonUrl, lang); + } + + } else { + logger.error("[CONVERSATION] Another document with this title already exists"); + throw new ConflictException("The title inserted already exists"); + } + + } else if (status.equals("saved")) { //SAVE OVERWRITE + // if it's already saved just doublecheck for the title (if if changed) + if (conversationService.titleNotExists(title, conversationId)) { + + String jsonUrl = utils.saveJsonToFile(json, title); + if(jsonUrl!=null){ + + convSaved = conversationService.createOrUpdateConversation(conversationId, title, jsonUrl); + + } else { + logger.error("[CONVERSATION] Errors saving the conversation's JSON file locally."); + throw new Exception("Errors saving the conversation's JSON file locally"); + } + logger.info("[CONVERSATION] Conversation correctly overwritten "); + } else { + logger.error("[CONVERSATION] Another document with this title already exists"); + throw new ConflictException("The title inserted already exists"); + } + } else if (status.equals("published")){ + logger.error("[CONVERSATION] Operation not allowed. Published conversation cannot be saved."); + throw new MethodNotAllowedException( + "You can't save an already published conversation. Publish it again or SaveAs with another name"); + } else if (status.equals("unpublished")){ + logger.error("[CONVERSATION] Operation not allowed. Unpublished conversation cannot be saved."); + throw new MethodNotAllowedException("You can't save an unpublished conversation. Publish it again or SaveAs with another name"); + } else { + logger.error("[CONVERSATION] Parsing error. The field status can be \"saved\" or \"published\". It can't be empty if the field conversationId is not empty."); + throw new ParsingException("Parsing error. The field status can be \"saved\" or \"published\". It can't be empty if the field conversationId is not empty."); + } + + if (!convSaved) { + logger.error("[CONVERSATION] Errors saving the conversation"); + throw new Exception("Errors saving the conversation"); + } + + logger.info("[CONVERSATION] Conversation correctly saved"); + + JsonObject res = new JsonObject(); + res.addProperty("conversationId", conversationId); + res.addProperty("title", title); + res.addProperty("status", "saved"); + + if(projectName!=null && !projectName.equals("")){res.addProperty("projectName", projectName);} + if(!lang.equals("")){ res.addProperty("lang", lang); } + if(accessLevel!=0){ res.addProperty("accessLevel", accessLevel);} + + return res.toString(); + } + + //updates the conversation node and creates chat blocks + @ApiOperation(value = "Publish the conversation and creates chat blocks (Body: ReteJS JSON file)") + @RequestMapping(value = "/publishConversation", method = RequestMethod.POST) + public String publishConversation(@RequestBody String convRete) throws Exception { + + + boolean commercial = !SecurityContextHolder.getContext().getAuthentication().getName().equals("anonymousUser"); + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(convRete); + + String conversationId = json.get("conversationId").getAsString(); + logger.info("Publish requested for conversation "+conversationId); + String status = json.get("status").getAsString(); + String title = json.get("title").getAsString(); + + String project = ""; + if(commercial){ + project = json.get("projectName").getAsString(); + } + + + if (conversationId.equals("")) { + //Not allowed to publish an unsaved conversation + logger.error("[CONVERSATION] Operation not allowed. You can't publish a conversation without having saved it before."); + throw new ConflictException("You can't publish a conversation without having saved it before."); + + } else { + //Not allowed to publish an already published conversation + if (status.equals("published")) { + logger.error("[CONVERSATION] Operation not allowed. A published conversation cannot be re-published."); + throw new ConflictException("You can't publish a published conversation."); + + } else if (status.equals("saved")) { // se il campo è valorizzato publish di una conversazione già salvata (saveRewrite + Update) + + if(saveConversation(convRete)!=null){ + //save the conversation again + logger.info("Conversation saved"); + JsonObject nodes = (JsonObject) json.get("nodes"); + boolean check = conversationService.uploadNodesAndEdged(nodes, conversationId, false); + if(check){ + json.addProperty("status", "published"); + utils.saveJsonToFile(json, title); + logger.info("[CONVERSATION] Status successfully set to PUBLISHED"); + } else { + json.addProperty("status", "saved"); + } + } + + } else if (status.equals("unpublished")) { + //just changes the status + + // set to unpublished the conversation status + boolean statusChange = conversationService.updateConversationStatus(conversationId, "published"); + + if(!statusChange){ + logger.error("[CONVERSATION] Error, no conversation found with ID: "+conversationId); + throw new ResourceNotFoundException("Error, no conversation found with ID: "+conversationId); + } else { + json.addProperty("status", "published"); + utils.saveJsonToFile(json, title); + logger.info("[CONVERSATION] Status successfully set to PUBLISHED"); + } + + } else { + + logger.error("[CONVERSATION] Parsing error. The field status can be empty, \"saved\" or \"published\" or \"unpublished\""); + throw new ParsingException("Parsing error. The field status can be empty, \"saved\" or \"published\""); + } + } + + JsonObject res = new JsonObject(); + res.addProperty("conversationId", conversationId); + res.addProperty("title", title); + if(project!=""){res.addProperty("projectName", project);} + res.addProperty("status", "published"); + return res.toString(); + } + + @ApiOperation(value = "Gets questions, answers and tags") + @RequestMapping(value = "/getOrderedConversation", method = RequestMethod.GET) + public String getOrderedConversation(@RequestParam(value="conversationId") String conversationId) + throws ParsingException, ResourceNotFoundException { + + String res = conversationService.getOrderedConversation(conversationId); + + if(res == null){ + throw new ParsingException("Parsing Exception"); + } else if(res.equals("no_nodes")){ + logger.error("No nodes found with this ID"); + throw new ResourceNotFoundException("No nodes found with this ID"); + } + + return res; + } + + @ApiOperation(value = "Gets questions, answers and tags") + @RequestMapping(value = "/getOrderedQuestionsAndAnswers", method = RequestMethod.GET) + public String getOrderedQuestionsAndAnswers(@RequestParam(value="conversationId") String conversationId) + throws ParsingException, ResourceNotFoundException { + String res = conversationService.getOrderedQuestionsAndAnswers(conversationId); + if(res == null){ + throw new ParsingException("Parsing Exception"); + } else if(res.equals("no_nodes")){ + logger.error("No nodes found with this ID"); + throw new ResourceNotFoundException("No nodes found with this ID"); + } + return res; + } + + @ApiOperation(value="Gets all the projects linked to the user") + @RequestMapping(value = "/deleteAccount", method = RequestMethod.GET) + public String deleteAccount(@RequestParam(value = "username") String username) { + conversationService.setCustomerForDeletion(username); + return "true"; + } + + @ApiOperation(value="Changes users password") + @RequestMapping(value = "/changePassword", method = RequestMethod.POST) + public String changePassword(@RequestHeader("UserData") String auth_data) + throws Exception { + + String username; + String oldPw; + String newPw; + String res; + + try{ + String [] data = auth_data.split(":"); + username = data[0]; + oldPw = data[1]; + newPw = data[2]; + + res = conversationService.changeCustomerPassword(username, oldPw, newPw); + + if(res==null || !res.equals("true")){ + logger.error("[CONVERSATION] Unable to match a user with this password"); + throw new ResourceNotFoundException("Unable to match a user with this password"); + } else { + return res; + } + } catch (Exception e){ + logger.error("[CONVERSATION] Invalid credentials"); + } + return "false"; + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/controller/DataController.java b/coney-api/src/main/java/com/cefriel/coneyapi/controller/DataController.java new file mode 100644 index 0000000..d04064f --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/controller/DataController.java @@ -0,0 +1,138 @@ +package com.cefriel.coneyapi.controller; + +import com.cefriel.coneyapi.exception.ParsingException; +import com.cefriel.coneyapi.exception.ResourceNotFoundException; +import com.cefriel.coneyapi.exception.UserNotAuthorizedException; +import com.cefriel.coneyapi.service.DataService; +import com.cefriel.coneyapi.utils.RDFUtils; +import com.cefriel.coneyapi.utils.Utils; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/data/") +public class DataController { + + private static final Logger logger = LoggerFactory.getLogger(DataController.class); + private final DataService dataService; + + public DataController(DataService dataService){ + this.dataService = dataService; + } + + @ApiOperation(value = "Gets answers to a specific conversation") + @RequestMapping(value = "/getAnswersOfConversation", method = RequestMethod.GET) + public String getAnswersOfConversation(@RequestParam(value="conversationId") String conversationId, + @RequestParam(value = "anonymize", required = false) String anonymize) + throws ResourceNotFoundException, ParsingException, UserNotAuthorizedException { + + + if(anonymize == null || (!anonymize.equals("true") && !anonymize.equals("false"))){ + anonymize = "false"; + } + + logger.info("[DATA] Answers to conversation: "+conversationId+" requested"); + String res = dataService.getAnswersOfConversation(conversationId, Boolean.valueOf(anonymize)); + + if(res == null){ + logger.error("[DATA] No Answers found at this conversation ID"); + throw new ResourceNotFoundException("[DATA] No Answers found at this conversation ID"); + } + + if(res.equals("")){ + logger.error("[DATA] Failed to convert response to csv"); + throw new ParsingException("[DATA] Failed to convert response to csv"); + } + + if(res.equals("not_auth")){ + logger.error("[DATA] User not authorized"); + throw new UserNotAuthorizedException("[DATA] User not authorized"); + } + + return res; + } + + @ApiOperation(value = "Gets answers to a specific conversation in rdf format") + @RequestMapping(value = "/getRDFOfAnswers", method = RequestMethod.GET) + public String getRDFOfAnswers(@RequestParam(value="conversationId") String conversationId, + @RequestParam(value="base", required = false) String base, + @RequestParam(value = "format", required = false) String format, + @RequestParam(value = "anonymize", required = false) String anonymize) + throws ResourceNotFoundException, ParsingException, UserNotAuthorizedException { + + + if(base == null){ + base = RDFUtils.CEF; + } + + if(format == null){ + format = "turtle"; + } + + if(anonymize == null || (!anonymize.equals("true") && !anonymize.equals("false"))){ + anonymize = "false"; + } + + logger.info("[DATA] Answers to conversation: "+conversationId+" requested"); + String res = dataService.getRDFOfAnswers(conversationId, base, format, Boolean.valueOf(anonymize)); + + if(res == null){ + logger.error("[DATA] No Answers found at this conversation ID"); + throw new ResourceNotFoundException("[DATA] No Answers found at this conversation ID"); + } + + if(res.equals("")){ + logger.error("[DATA] Failed to convert response to rdf"); + throw new ParsingException("[DATA] Failed to convert response to rdf"); + } + if(res.equals("not_auth")){ + logger.error("[DATA] User not authorized"); + throw new UserNotAuthorizedException("[DATA] User not authorized"); + } + + return res; + } + + @ApiOperation(value = "Gets blocks of a specific conversation in rdf format") + @RequestMapping(value = "/getRDFOfConversation", method = RequestMethod.GET) + public String getRDFOfConversation(@RequestParam(value = "conversationId") String conversationId, + @RequestParam(value = "base", required = false) String base, + @RequestParam(value = "format", required = false) String format) + throws ParsingException, ResourceNotFoundException, UserNotAuthorizedException { + + + if(base == null){ + base = RDFUtils.CEF; + } + + if(format == null){ + format = "turtle"; + } + + logger.info("[DATA] Blocks of conversation: "+conversationId+" requested"); + String res = dataService.getRDFOfConversation(conversationId, base, format); + + if(res == null){ + logger.error("[DATA] No Blocks found at this conversation ID"); + throw new ResourceNotFoundException("[DATA] No Blocks found at this conversation ID"); + } + + if(res.equals("")){ + logger.error("[DATA] Failed to convert response to rdf"); + throw new ParsingException("[DATA] Failed to convert response to rdf"); + } + if(res.equals("not_auth")){ + logger.error("[DATA] User not authorized"); + throw new UserNotAuthorizedException("[DATA] User not authorized"); + } + + return res; + } + + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/controller/ExceptionHandlerController.java b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ExceptionHandlerController.java new file mode 100644 index 0000000..078e85c --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/controller/ExceptionHandlerController.java @@ -0,0 +1,73 @@ +package com.cefriel.coneyapi.controller; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import com.cefriel.coneyapi.exception.ConflictException; +import com.cefriel.coneyapi.exception.ErrorView; +import com.cefriel.coneyapi.exception.MethodNotAllowedException; +import com.cefriel.coneyapi.exception.ParsingException; +import com.cefriel.coneyapi.exception.ResourceNotFoundException; + +@RestController +@ControllerAdvice +public class ExceptionHandlerController { + + @ExceptionHandler(ResourceNotFoundException.class) + @ResponseStatus(value = HttpStatus.NOT_FOUND) + @ResponseBody + public ErrorView handleResourceNotFoundException(Exception ex) { + + ErrorView error = new ErrorView(); + error.setCode(HttpStatus.NOT_FOUND.toString()); + error.setDescr(ex.getMessage()); + return error; + } + + @ExceptionHandler(ParsingException.class) + @ResponseStatus(value = HttpStatus.BAD_REQUEST) + @ResponseBody + public ErrorView handleParsingException(Exception ex) { + + ErrorView error = new ErrorView(); + error.setCode(HttpStatus.BAD_REQUEST.toString()); + error.setDescr(ex.getMessage()); + return error; + } + + @ExceptionHandler(MethodNotAllowedException.class) + @ResponseStatus(value = HttpStatus.METHOD_NOT_ALLOWED) + @ResponseBody + public ErrorView handleMethodNotAllowedException(Exception ex) { + + ErrorView error = new ErrorView(); + error.setCode(HttpStatus.METHOD_NOT_ALLOWED.toString()); + error.setDescr(ex.getMessage()); + return error; + } + + @ExceptionHandler(ConflictException.class) + @ResponseStatus(value = HttpStatus.CONFLICT) + @ResponseBody + public ErrorView handleConflictException(Exception ex) { + + ErrorView error = new ErrorView(); + error.setCode(HttpStatus.CONFLICT.toString()); + error.setDescr(ex.getMessage()); + return error; + } + + @ExceptionHandler(Exception.class) + @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) + @ResponseBody + public ErrorView handleInternalServerErrorException(Exception ex) { + ErrorView error = new ErrorView(); + error.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString()); + error.setDescr(ex.getMessage()); + return error; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/ConflictException.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ConflictException.java new file mode 100644 index 0000000..7788d18 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ConflictException.java @@ -0,0 +1,18 @@ +package com.cefriel.coneyapi.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@SuppressWarnings("serial") +@ResponseStatus(value = HttpStatus.CONFLICT) +public class ConflictException extends Exception { + + public ConflictException() { + super(); + } + + public ConflictException(String message) { + super(message); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/ErrorView.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ErrorView.java new file mode 100644 index 0000000..89cc7cc --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ErrorView.java @@ -0,0 +1,24 @@ +package com.cefriel.coneyapi.exception; + +public class ErrorView { + + private String code; + private String descr; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDescr() { + return descr; + } + + public void setDescr(String descr) { + this.descr = descr; + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/MethodNotAllowedException.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/MethodNotAllowedException.java new file mode 100644 index 0000000..067c55e --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/MethodNotAllowedException.java @@ -0,0 +1,18 @@ +package com.cefriel.coneyapi.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@SuppressWarnings("serial") +@ResponseStatus(value=HttpStatus.METHOD_NOT_ALLOWED) +public class MethodNotAllowedException extends Exception { + + public MethodNotAllowedException() { + super(); + } + + public MethodNotAllowedException(String message) { + super(message); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/ParsingException.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ParsingException.java new file mode 100644 index 0000000..9ecfb2b --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ParsingException.java @@ -0,0 +1,18 @@ +package com.cefriel.coneyapi.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@SuppressWarnings("serial") +@ResponseStatus(value=HttpStatus.BAD_REQUEST) +public class ParsingException extends Exception { + + public ParsingException() { + super(); + } + + public ParsingException(String message) { + super(message); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/ResourceNotFoundException.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ResourceNotFoundException.java new file mode 100644 index 0000000..e855f9c --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/ResourceNotFoundException.java @@ -0,0 +1,18 @@ +package com.cefriel.coneyapi.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@SuppressWarnings("serial") +@ResponseStatus(value=HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends Exception { + + public ResourceNotFoundException() { + super(); + } + + public ResourceNotFoundException(String message) { + super(message); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/exception/UserNotAuthorizedException.java b/coney-api/src/main/java/com/cefriel/coneyapi/exception/UserNotAuthorizedException.java new file mode 100644 index 0000000..f1e93e1 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/exception/UserNotAuthorizedException.java @@ -0,0 +1,17 @@ +package com.cefriel.coneyapi.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@SuppressWarnings("serial") +@ResponseStatus(value= HttpStatus.UNAUTHORIZED) // 401 +public class UserNotAuthorizedException extends Exception { + + public UserNotAuthorizedException() { + super(); + } + + public UserNotAuthorizedException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtRequestFilter.java b/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtRequestFilter.java new file mode 100644 index 0000000..ca90353 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtRequestFilter.java @@ -0,0 +1,68 @@ +package com.cefriel.coneyapi.jwt; + + +import java.io.IOException; +import java.util.ArrayList; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + + +@Component +public class JwtRequestFilter extends OncePerRequestFilter { + + + @Autowired + private JwtTokenUtil jwtTokenUtil; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) + throws ServletException, IOException { + + logger.info("[API-FILTER] Verifying JWT"); + final String requestTokenHeader = request.getHeader("Authorization"); + + String username = null; + String jwtToken; + + if (requestTokenHeader != null && requestTokenHeader.startsWith("Bearer ")) { + jwtToken = requestTokenHeader.substring(7); + try { + username = jwtTokenUtil.getUsernameFromToken(jwtToken); + } catch (Exception e) { + System.out.println("Unable to get JWT Token"); + } + } else { + logger.warn("JWT Token format is not valid"); + } + + + if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { + + UserDetails userDetails = new User(username, "", + new ArrayList<>()); + + UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken( + userDetails, null, userDetails.getAuthorities()); + usernamePasswordAuthenticationToken + .setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + + SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken); + + } + logger.info("[API-FILTER] username set: "+username); + chain.doFilter(request, response); + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtTokenUtil.java b/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtTokenUtil.java new file mode 100644 index 0000000..9ded454 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/jwt/JwtTokenUtil.java @@ -0,0 +1,77 @@ +package com.cefriel.coneyapi.jwt; + + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +@Component +public class JwtTokenUtil implements Serializable { + + private static final long serialVersionUID = -2550185165626007488L; + + public static final long JWT_TOKEN_VALIDITY = 5*60*60; + + @Value("${jwt.secret}") + private String secret; + + public String getUsernameFromToken(String token) { + return getClaimFromToken(token, Claims::getSubject); + } + + public Date getIssuedAtDateFromToken(String token) { + return getClaimFromToken(token, Claims::getIssuedAt); + } + + public Date getExpirationDateFromToken(String token) { + return getClaimFromToken(token, Claims::getExpiration); + } + + public T getClaimFromToken(String token, Function claimsResolver) { + final Claims claims = getAllClaimsFromToken(token); + return claimsResolver.apply(claims); + } + + private Claims getAllClaimsFromToken(String token) { + return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); + } + + private Boolean isTokenExpired(String token) { + final Date expiration = getExpirationDateFromToken(token); + return expiration.before(new Date()); + } + + private Boolean ignoreTokenExpiration(String token) { + return false; + } + + public String generateToken(UserDetails userDetails) { + Map claims = new HashMap<>(); + return doGenerateToken(claims, userDetails.getUsername()); + } + + private String doGenerateToken(Map claims, String subject) { + + return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(new Date(System.currentTimeMillis() + JWT_TOKEN_VALIDITY*1000)).signWith(SignatureAlgorithm.HS512, secret).compact(); + } + + public Boolean canTokenBeRefreshed(String token) { + return (!isTokenExpired(token) || ignoreTokenExpiration(token)); + } + + public Boolean validateToken(String token, UserDetails userDetails) { + final String username = getUsernameFromToken(token); + return (username.equals(userDetails.getUsername()) && !isTokenExpired(token)); + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/authentication/Customer.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/authentication/Customer.java new file mode 100644 index 0000000..d9517fb --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/authentication/Customer.java @@ -0,0 +1,38 @@ +package com.cefriel.coneyapi.model.authentication; + +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +public class Customer { + + @Id + @GeneratedValue + Long id; + + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Long getId(){ + return id; + } + + public Customer(){} +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswerBlock.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswerBlock.java new file mode 100644 index 0000000..fecdad6 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswerBlock.java @@ -0,0 +1,93 @@ +package com.cefriel.coneyapi.model.db.custom; +import org.springframework.data.neo4j.annotation.QueryResult; + +@QueryResult +public class AnswerBlock { + + int reteId; + int neo4jId; + int nextQuestionId; + String type; + String subtype; + String ofConversation; + String text; + int value; + int order; + + public AnswerBlock(){} + + public int getReteId() { + return reteId; + } + + public void setReteId(int reteId) { + this.reteId = reteId; + } + + public int getNeo4jId() { + return neo4jId; + } + + public void getNeo4jId(int reteId) { + this.neo4jId = reteId; + } + + public int getNextQuestionId() { + return nextQuestionId; + } + + public void setNextQuestionId(int nextQuestionId) { + this.nextQuestionId = nextQuestionId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubtype() { + return subtype; + } + + public void setSubtype(String subtype) { + this.subtype = subtype; + } + + public String getOfConversation() { + return ofConversation; + } + + public void setOfConversation(String ofConversation) { + this.ofConversation = ofConversation; + } + + public String getText() { + if(text != null && text.length()>4 && text.substring(0, 4).equals("----")){ + return text.substring(4); + } + return text == null ? "" : text; + } + + public void setText(String text) { + this.text = text; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswersResponse.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswersResponse.java new file mode 100644 index 0000000..77a8f49 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/AnswersResponse.java @@ -0,0 +1,266 @@ +package com.cefriel.coneyapi.model.db.custom; + +import org.springframework.data.neo4j.annotation.QueryResult; + +@QueryResult +public class AnswersResponse { + + String conversation_id; + String user; + String project_id; + String project_name; + String tag; + String question; + String question_type; + String answer_type; + int question_id; + String option; + int answer_id; + int value; + int points; + String free_answer; + String timestamp; + String session; + String start_timestamp; + String end_timestamp; + String language; + + public AnswersResponse(){} + + public void setUser(String user) { + this.user = user; + } + + public String getUser() { + return user == null ? "" : user; + } + + public String getAnonymizedUser(){ + return user == null ? "" : "u"+(user.hashCode() & 0xfffffff); + } + + public void setTags(String tag) { + this.tag = tag; + } + + public String getTags() { + return tag == null ? "" : tag; + } + + public void setProjectId(String projectId) { + this.project_id = projectId; + } + + public String getProjectId() { + return project_id == null ? "" : project_id; + } + + public void setProjectName(String projectName) { + this.project_name = projectName; + } + + public String getProjectName() { + return project_name == null ? "" : project_name; + } + + public void setQuestion(String question) { + this.question = question; + } + + public String getQuestion() { + // Aggiungere escape su \n + trim()? Per ora aggiunto nell'export del CSV + question = question.replaceAll("\\R", " "); + return question; + } + + public void setQuestion_id(int question_id) { + this.question_id = question_id; + } + + public int getQuestionId() { + return question_id; + } + + public String getOption() { + if(option!=null){ + return option.replaceAll("^\\s+|\\s+$", ""); + } + return ""; + } + + + public String getQuestionType() { + return question_type == null ? "" : question_type; + } + + public void setQuestionType(String question_type) { + this.question_type = question_type; + } + + public String getAnswerType() { + return answer_type == null ? "" : answer_type; + } + + public void setAnswerType(String answer_type) { + this.answer_type = answer_type; + } + + public String getLanguage() { + return language == null ? "en" : language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getSession() { + return session == null ? "" : session; + } + + public void setSession(String session) { + this.session = session; + } + + public void setOption(String option) { + this.option = option; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public String getFreeAnswer() { + if(free_answer == null){ + free_answer = ""; + } else { + // Aggiungere escape su \n + trim()? Per ora aggiunto nell'export del CSV + String tmp = free_answer.replaceAll("\\R", " "); + free_answer = tmp; + } + return free_answer; + } + + public void setFreeAnswer(String freeAnswer) { + this.free_answer = freeAnswer; + } + + public int getPoints() { + return points; + } + + public void setPoints(int points) { + this.points = points; + } + + public String getTimestamp() { + return timestamp == null ? "" : timestamp; + } + + public String getTime(){ + if(timestamp==null){ + return ""; + } + String [] tmp = timestamp.split(" "); + String temp = tmp[1].replaceAll("\\.", ":"); + return temp; + } + + public String getDate(){ + if(timestamp == null){ + return ""; + } + String [] tmp = timestamp.split(" "); + return tmp[0]; + } + + public void setTimestamp(String timestamp) { + this.timestamp = timestamp; + } + + public String getStartTimestamp() { + return start_timestamp; + } + + private String getStartTimestampDuration() { + if(start_timestamp == null){ + return ""; + } + String [] tmp = start_timestamp.split(" "); + String temp = tmp[1].replaceAll("\\.", ":"); + return temp; + } + + public void setStart_timestamp(String start_timestamp) { + this.start_timestamp = start_timestamp; + } + + public String getEndTimestamp() { + return end_timestamp; + } + + private String getEndTimestampDuration() { + if(end_timestamp == null){ + return ""; + } + String [] tmp = end_timestamp.split(" "); + String temp = tmp[1].replaceAll("\\.", ":"); + return temp; + } + + public String getDuration() { + if(session == null) { + return ""; + } + + if(end_timestamp == null || end_timestamp.equals("")){ + return "unfinished"; + } + + int start_hour = Integer.parseInt(getStartTimestampDuration().split(":")[0]); + int end_hour = Integer.parseInt(getEndTimestampDuration().split(":")[0]); + int tot_hour = end_hour-start_hour; + + int start_min = Integer.parseInt(getStartTimestampDuration().split(":")[1]); + int end_min = Integer.parseInt(getEndTimestampDuration().split(":")[1]); + int tot_min = end_min-start_min; + if(end_min blocks; + + public BeginConversationResponse() { + super(); + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getSession() { + return session; + } + + public void setSession(String session) { + this.session = session; + } + + public Conversation getConversation() { + return conversation; + } + + public void setConversation(Conversation conversation) { + this.conversation = conversation; + } + + public List getBlocks() { + return blocks; + } + + public void setBlocks(List blocks) { + this.blocks = blocks; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/ConversationResponse.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/ConversationResponse.java new file mode 100644 index 0000000..515c81c --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/ConversationResponse.java @@ -0,0 +1,57 @@ +package com.cefriel.coneyapi.model.db.custom; + +import org.springframework.data.neo4j.annotation.QueryResult; + +@QueryResult +public class ConversationResponse { + + String conversationId; + String projectName; + String status; + String conversationTitle; + int accessLevel; + + public ConversationResponse(){ + super(); + } + + public String getConversationId() { + return conversationId; + } + + public void setConversationId(String conversationId) { + this.conversationId = conversationId; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getConversationTitle() { + return conversationTitle; + } + + public void setConversationTitle(String conversationTitle) { + this.conversationTitle = conversationTitle; + } + + public int getAccessLevel() { + return accessLevel; + } + + public void setAccessLevel(int accessLevel) { + this.accessLevel = accessLevel; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/QuestionBlock.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/QuestionBlock.java new file mode 100644 index 0000000..071be53 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/QuestionBlock.java @@ -0,0 +1,118 @@ +package com.cefriel.coneyapi.model.db.custom; +import org.springframework.data.neo4j.annotation.QueryResult; + +@QueryResult +public class QuestionBlock implements Comparable { + + private int reteId; + private int neo4jId; + private Integer depth; + private String type; + private String subtype; + private String ofConversation; + private String text; + private String questionType; + + private String tag; + private int orderInConversation; + private int answersAmount; + + + public QuestionBlock(){} + + public int getReteId() { + return reteId; + } + + public void setReteId(int reteId) { + this.reteId = reteId; + } + + public int getNeo4jId() { + return neo4jId; + } + + public void getNeo4jId(int reteId) { + this.neo4jId = reteId; + } + + + public Integer getDepth() { + return depth; + } + + public void setDepth(int depth) { + this.depth = depth; + } + + @Override + public int compareTo(Object o) { + QuestionBlock qb = (QuestionBlock) o; + return depth.compareTo(qb.getDepth()); + } + + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubtype() { + return subtype; + } + + public void setSubtype(String subtype) { + this.subtype = subtype; + } + + public String getOfConversation() { + return ofConversation; + } + + public void setOfConversation(String ofConversation) { + this.ofConversation = ofConversation; + } + + public String getText() { + return text == null ? "" : text; + } + + public void setText(String text) { + this.text = text; + } + + public String getQuestionType() { + return questionType; + } + + public void setQuestionType(String questionType) { + this.questionType = questionType; + } + + public int getOrderInConversation() { + return orderInConversation; + } + + public void setOrderInConversation(int orderInConversation) { + this.orderInConversation = orderInConversation; + } + + public int getAnswersAmount() { + return answersAmount; + } + + public void setAnswersAmount(int answersAmount) { + this.answersAmount = answersAmount; + } + + public String getTag() { + return tag == null ? "" : tag; + } + + public void setTag(String tag) { + this.tag = tag; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/UserProject.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/UserProject.java new file mode 100644 index 0000000..dbf29c5 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/custom/UserProject.java @@ -0,0 +1,28 @@ +package com.cefriel.coneyapi.model.db.custom; + +import org.springframework.data.neo4j.annotation.QueryResult; + +@QueryResult +public class UserProject { + + String projectName; + int accessLevel; + + public UserProject(){} + + public String getProjectName() { + return projectName; + } + + public int getAccessLevel() { + return accessLevel; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public void setAccessLevel(int accessLevel) { + this.accessLevel = accessLevel; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Block.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Block.java new file mode 100644 index 0000000..09e38d9 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Block.java @@ -0,0 +1,184 @@ +package com.cefriel.coneyapi.model.db.entities; + +import com.google.gson.JsonObject; +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +public class Block { + + @Id @GeneratedValue + Long id; + + private int block_id; + private String block_type; + private String block_subtype; + private String of_conversation; + + //data + private String text; + private String visualization; + private String url; + private String image_url; + private int value; + private int order; + private int points; + + + public Block(){} + + //QUESTION + public Block(int block_id, String block_type, String block_subtype, String text, String visualization, + String of_conversation){ + this.block_id = block_id; + this.block_type = block_type; + this.block_subtype = block_subtype; + this.text = text; + this.visualization = visualization; + this.of_conversation = of_conversation; + } + + //ANSWER + public Block(int block_id, String block_type, String block_subtype, String text, int value, + int order, String of_conversation, int points) { + this.block_id = block_id; + this.block_type = block_type; + this.block_subtype = block_subtype; + this.text = text; + this.value = value; + this.order = order; + this.of_conversation = of_conversation; + this.points = points; + } + + //TALK + public Block(int block_id, String block_type, String block_subtype, String text, + String url, String image_url, String of_conversation) { + this.block_id = block_id; + this.block_type = block_type; + this.block_subtype = block_subtype; + this.text = text; + this.url = url; + this.image_url = image_url; + this.of_conversation = of_conversation; + } + + public long getNeo4jId(){ + return id; + } + + public String getBlockSubtype() { + return block_subtype; + } + + public void setBlockSubtype(String block_subtype) { + this.block_subtype = block_subtype; + } + + public String getUrl() { + return url == null ? "" : url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getImageUrl() { + return image_url == null ? "" : image_url; + } + + public void setImageUrl(String image_url) { + this.image_url = image_url; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getPoints() { + return points; + } + + public void setPoints(int points) { + this.points = points; + } + + public int getBlockId() { + return block_id; + } + + public void setBlockId(int block_id) { + this.block_id = block_id; + } + + public String getBlockType() { + return block_type; + } + + public void setBlockType(String block_type) { + this.block_type = block_type; + } + + public String getOfConversation() { + return of_conversation; + } + + public void setOfConversation(String of_conversation) { + this.of_conversation = of_conversation; + } + + public String getText() { + if (text == null) { + return ""; + } + + String outText = text; + if (text.length() > 4 && text.substring(0, 4).equals("----")) { + outText = text.substring(4); + } + outText = outText.replaceAll("^\\s+|\\s+$", ""); + return outText; + + } + + public void setText(String text) { + this.text = text; + } + + public String getVisualization() { + return visualization; + } + + public void setVisualization(String qtype) { + this.visualization = qtype; + } + + public JsonObject toJson() { + JsonObject blockJson = new JsonObject(); + blockJson.addProperty("blockId", this.block_id); + blockJson.addProperty("type", this.block_type); + blockJson.addProperty("subtype", this.block_subtype); + blockJson.addProperty("ofConversation", this.of_conversation); + blockJson.addProperty("text", this.text); + blockJson.addProperty("visualization", this.visualization); + blockJson.addProperty("url", this.url); + blockJson.addProperty("imageUrl", this.image_url); + blockJson.addProperty("value", this.value); + blockJson.addProperty("order", this.order); + blockJson.addProperty("points", this.points); + return blockJson; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Conversation.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Conversation.java new file mode 100644 index 0000000..324110d --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Conversation.java @@ -0,0 +1,90 @@ +package com.cefriel.coneyapi.model.db.entities; + +import com.google.gson.JsonObject; +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Id; + +@NodeEntity +public class Conversation implements Comparable { + + + @Id @GeneratedValue + Long id; + + private String conv_id; + private String conv_title; + private String json_url; + private String status; + private int access_level; + private String lang; + + public Conversation() { + super(); + } + + public String getJsonUrl() { + return json_url; + } + + public void setJsonUrl(String json_url) { + this.json_url = json_url; + } + + public String getConversationId() { + return conv_id; + } + + public void setConversationId(String conv_id) { + this.conv_id = conv_id; + } + + public String getTitle() { + return conv_title; + } + + public void setTitle(String conv_title) { + this.conv_title = conv_title; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public int getAccess_level() { + return access_level; + } + + public void setAccess_level(int access_level) { + this.access_level = access_level; + } + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public int compareTo(Object o) + { + Conversation other = (Conversation) o; + return conv_title.compareTo(other.conv_title); + } + + public JsonObject toJson(){ + JsonObject conversationJson = new JsonObject(); + conversationJson.addProperty("conversationId", this.conv_id); + conversationJson.addProperty("title", this.conv_title); + conversationJson.addProperty("status", this.status); + conversationJson.addProperty("accessLevel", this.access_level); + return conversationJson; + } + + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Edge.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Edge.java new file mode 100644 index 0000000..f75ed06 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Edge.java @@ -0,0 +1,17 @@ +package com.cefriel.coneyapi.model.db.entities; + +public class Edge { + + private int startId; + private int endId; + + public Edge(int startId, int endId){ + this.endId = endId; + this.startId = startId; + } + + public int getStartId() { return startId; } + + public int getEndId() { return endId; } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Project.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Project.java new file mode 100644 index 0000000..49e7649 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Project.java @@ -0,0 +1,23 @@ +package com.cefriel.coneyapi.model.db.entities; + +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; + +public class Project { + + @Id + @GeneratedValue + Long id; + + String name; + + public Project(){}; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Tag.java b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Tag.java new file mode 100644 index 0000000..5260ee6 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/model/db/entities/Tag.java @@ -0,0 +1,47 @@ +package com.cefriel.coneyapi.model.db.entities; + +import org.neo4j.ogm.annotation.GeneratedValue; +import org.neo4j.ogm.annotation.Id; +import org.neo4j.ogm.annotation.NodeEntity; + +@NodeEntity +public class Tag { + @Id + @GeneratedValue + Long id; + + String text; + int blockId; + String conversationId; + String templateId; + + + public Tag(){ + } + + public Tag(String text){ + this.text = text; + } + public Tag(String text, int blockId, String conversationId){ + this.text = text; + this.blockId = blockId; + this.conversationId = conversationId; + } + + public Tag(String text, String templateId){ + this.text = text; + this.templateId = templateId; + } + + public String getText() { + return text; + } + + public int getBlockId() { + return blockId; + } + + public String getConversationId() { + return conversationId; + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/repository/AdminRepository.java b/coney-api/src/main/java/com/cefriel/coneyapi/repository/AdminRepository.java new file mode 100644 index 0000000..aa80a6b --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/repository/AdminRepository.java @@ -0,0 +1,140 @@ +package com.cefriel.coneyapi.repository; + +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface AdminRepository extends Neo4jRepository { + + //GET METHODS + + @Query("MATCH (c:Customer) return c.username") + List getCustomers(); + + @Query("MATCH (c:Customer)-[:WORKS_ON]->(pr:Project {name:{0}}) " + + "RETURN c.username") + List getCustomersOfProject(String projectName); + + @Query("MATCH (cust:Customer)-[wo:WORKS_ON]->(pr:Project)<-[:BELONGS_TO]-(c:Conversation {conv_id: {0}}) " + + "WHERE wo.access_level >= c.access_level " + + "RETURN cust.username") + List getCustomersOfConversation(String conversationId); + + @Query("MATCH (cust:Customer)-[wo:WORKS_ON]->(pr:Project {name: {1}})<-[:BELONGS_TO]-(c:Conversation {conv_id: {0}}) \" +\n" + + " WHERE wo.access_level >= c.access_level " + + " RETURN cust.username") + List getCustomersOfConversationAndProject(String conversationId, String projectName); + + @Query("MATCH (c:Conversation) RETURN c") + List getConversations(); + + @Query("MATCH (c:Conversation)-[:BELONGS_TO]->(pr:Project {name: {0}}) RETURN c") + List getConversationsOfProject(String projectName); + + @Query("MATCH (cust:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project)<-[:BELONGS_TO]-(c:Conversation) " + + "WHERE wo.access_level >= c.access_level " + + "RETURN c") + List getConversationsOfCustomer(String username); + + @Query("MATCH (cust:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project {name: {1}})<-[:BELONGS_TO]-(c:Conversation) " + + "WHERE wo.access_level >= c.access_level " + + "RETURN c") + List getConversationsOfCustomerAndProject(String username, String projectName); + + @Query("MATCH (pr:Project) return pr.name AS projectName") + List getProjects(); + + @Query("MATCH (c:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project) " + + "RETURN pr.name AS projectName, wo.access_level AS accessLevel") + List getProjectsOfCustomer(String username); + + @Query("MATCH (c:Conversation {conv_id: {0}})-[:BELONGS_TO]->(pr:Project) RETURN pr.name AS projectName") + List getProjectOfConversation(String conversationId); + + @Query("MATCH (c:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project)" + + "<-[:BELONGS_TO]-(co:Conversation {conv_id: {1}}) " + + "RETURN pr.name AS projectName, wo.access_level AS accessLevel") + List getProjectsOfCustomerAndConversation(String username, String conversationId); + + + //CREATE METHODS + + @Query("MATCH (c:Customer {username:{0}}) RETURN count(c)") + int checkIfUsernameIsTaken(String username); + + @Query("CREATE (c:Customer {username: {0}, password: {1}}) return c.username") + String createCustomer(String username, String password); + + @Query("CREATE (pr:Project {name: {0}}) return pr.name") + String createProject(String projectName); + + @Query("MATCH (c:Conversation {conv_id: {0}}), (pr:Project {name: {1}}) " + + "MERGE (c)-[wo:BELONGS_TO]->(pr) RETURN count(wo)>0") + boolean linkConversationToProject(String conversationId, String projectName); + + @Query("MATCH (c:Customer {username: {0}}), (pr:Project {name: {1}}) " + + "MERGE (c)-[wo:WORKS_ON]->(pr) " + + "SET wo.access_level = {2} " + + "RETURN wo.access_level") + int linkCustomerToProject(String username, String projectName, int accessLevel); + + + //EDIT METHODS + + @Query("MATCH (c:Conversation {conv_id: {0}}) " + + "SET c.access_level = {1} " + + "RETURN c.access_level") + int changeConversationAccessLevel(String conversationId, int accessLevel); + + @Query("MATCH (c:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project { name: {1}}) " + + "SET wo.access_level = {2} " + + "RETURN wo.access_level") + int changeCustomerProjectAccessLevel(String username, String projectName, int access_level); + + @Query("MATCH (c:Customer {username: {0}}) " + + "SET c.password = {1} " + + "RETURN c.password") + String changeCustomerPassword(String username, String newPassword); + + @Query("MATCH (pr:Project {name: {0}}) " + + "SET pr.name = {1} " + + "RETURN pr.name") + String changeProjectName(String oldName, String newName); + + //DELETE METHODS + + @Query("MATCH (c:Customer {username: {0}}) DETACH DELETE c") + void deleteCustomer(String username); + + @Query("MATCH (pr:Project {name: {0}}) DETACH DELETE pr") + void deleteProject(String projectName); + + @Query("MATCH (c:Conversation {conv_id: {0}})-[bt:BELONGS_TO]->(pr:Project {name: {1}}) " + + "DELETE bt") + void deleteConversationProjectLink(String conversationId, String projectName); + + @Query("MATCH (c:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project {name: {1}}) " + + "DELETE wo") + void deleteCustomerProjectLink(String username, String projectName); + + + //UTILITY METHODS + + @Query("MATCH (c:Customer {username: {0}}) " + + "RETURN count(c)>0 ") + boolean isUsernameTaken(String username); + + @Query("MATCH (pr:Project {name: {0}}) " + + "RETURN count(pr)>0 ") + boolean isProjectNameTaken(String projectName); + + @Query("MATCH (c:Customer {username: {0}}) " + + "RETURN c.adm") + String isUserAdmin(String username); +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/repository/ChatRepository.java b/coney-api/src/main/java/com/cefriel/coneyapi/repository/ChatRepository.java new file mode 100644 index 0000000..62d6747 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/repository/ChatRepository.java @@ -0,0 +1,136 @@ +package com.cefriel.coneyapi.repository; + +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ChatRepository extends Neo4jRepository { + + @Query("MATCH (c:Conversation) " + + "WHERE c.status='published' " + + "RETURN c LIMIT 1") + Conversation getConversation(); + + @Query("MATCH (c:Conversation) " + + "WHERE c.conv_id = {0} AND c.status = 'published' " + + "RETURN c LIMIT 1") + Conversation getConversationById(String conversationId); + + @Query("MATCH (c:Conversation) " + + "WHERE c.conv_id = {0}" + + "RETURN c LIMIT 1") + Conversation getConversationPreviewById(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}})<-[r:STARTEND {project_id:{1}}]-(u:User {user_id:{2}})" + + "RETURN count(r)") + int getStartCountForProject(String conversationId, String projectId, String userId); + + @Query("MATCH (c:Conversation {conv_id:{0}})-[:STARTS]->(n:Block)" + + "RETURN n LIMIT 1") + Block getFirstBlock(String conversationId); + + + @Query("MATCH (prev {block_id:{0}})-[:LEADS_TO]->(o) " + + "WHERE prev.of_conversation = {1} " + + "RETURN o") + List getNextBlock(int blockId, String conversationId); + + @Query("MATCH (b:Block {block_id:{0}}) " + + "WHERE b.of_conversation = {1} " + + "RETURN b LIMIT 1") + Block getSingleBlockById(int blockId, String conversationId); + + @Query("MATCH (u:User {user_id:{0}})-[a:ANSWERED {session:{1}}]->(ans)<-[:LEADS_TO]-(b:Block {block_id: {2}})" + + "WHERE b.of_conversation = {3} " + + "DETACH DELETE a") + void deleteAnswer(String userId, String session, int blockId, String conversationId); + + @Query("MATCH (u:User {user_id:{0}})-[a:STARTEND {session:{1}}]->(o:Conversation {conv_id:{2}}) " + + "REMOVE a.end_timestamp") + void deleteEndTimestamp(String userId, String session, String conversationId); + + @Query("MATCH (u:User {user_id:{0}}),(prev {block_id:{1}})-[:LEADS_TO]->(o)-[:LEADS_TO]->(next) " + + "WHERE prev.of_conversation = {4} " + + "MERGE (u)-[a:ANSWERED {timestamp:{2}, value:{3}, session:{5}}]->(o) " + + "RETURN next") + Block getNextOfSingleAnswerBlock(String userId, int blockId, String timestamp, String answer, String conversationId, String session); + + @Query("MATCH (u:User {user_id:{0}}),(prev {block_id:{1}})-[:LEADS_TO]->(o)-[:LEADS_TO]->(next) " + + "WHERE prev.of_conversation = {4} AND o.order = {3} " + + "MERGE (u)-[a:ANSWERED {timestamp:{2}, session:{5}}]->(o) " + + "RETURN next") + Block getNextOfMultipleAnswerBlock(String userId, int blockId, String timestamp, int answer, String conversationId, String session); + + @Query("MATCH (u:User {user_id:{0}}),(prev {block_id:{1}})-[:LEADS_TO]->(o)-[:LEADS_TO]->(next) " + + "WHERE prev.of_conversation = {4} AND o.order = {3} " + + "MERGE (u)-[a:ANSWERED {timestamp:{2}, session:{5}}]->(o) " + + "RETURN next") + Block getNextOfCheckboxAnswerBlock(String userId, int blockId, String timestamp, int answer, String conversationId, String session); + + @Query("MATCH (o:Conversation {conv_id:{1}}) " + + "MERGE (u:User {user_id:{0}}) " + + "CREATE (u)-[a:STARTEND {start_timestamp:{2}, session:{3}, project_name: {4}, project_id: {5}, lang: {6}}]->(o) " + + "RETURN a.start_timestamp;") + String createStartRelationship(String userId, String conversationId, String timestamp, String session, String projectName, String projectId, String lang); + + @Query("MATCH (u:User {user_id:{0}})-[a:STARTEND]->(o:Conversation {conv_id:{1}}) " + + "WHERE a.session={3}" + + "SET a.end_timestamp={2}" + + "RETURN a.end_timestamp;") + String createEndRelationship(String userId, String conversationId, String timestamp, String session); + + @Query("MATCH (u:User {user_id:{0}})-[a:STARTEND]->(o:Conversation {conv_id:{1}}) " + + " WHERE NOT EXISTS(a.end_timestamp)" + + "RETURN a.session LIMIT 1;") + String wasTheConversationStarted(String userId, String conversationId); + + @Query("MATCH (u:User {user_id:{0}})-[a:STARTEND]->(o:Conversation {conv_id:{1}}) " + + " WHERE EXISTS(a.end_timestamp)" + + "RETURN a.session LIMIT 1;") + String wasTheConversationFinished(String userId, String conversationId); + + @Query("MATCH (c:Conversation)<-[st:STARTEND {session:{2}}]-(u:User {user_id:{0}})-[a:ANSWERED {session:{2}}]->(ans) " + + "WHERE ans.of_conversation = {1}" + + "DETACH DELETE a, st") + void deletePreviousAnswers(String userId, String conversationId, String session); + + @Query("MATCH (u:User {user_id:{0}})-[st:STARTEND {session: {2}}]->(c:Conversation {conv_id:{1}})," + + "(prev:Block {block_id:{3}, of_conversation:{1}})-[:LEADS_TO]->(o:Block)<-[a:ANSWERED {session: {2}}]-(u) " + + "WHERE NOT EXISTS(st.end_timestamp) " + + "RETURN o") + List getAnswerOfUser(String userId, String conversationId, String session, int blockId); + + @Query("MATCH (c:Conversation {conv_id:{0}}) RETURN c.conv_title LIMIT 1") + String getConversationTitle(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}})-[:HAS_TRANSLATION]->(t:Translation) return t.lang") + List getLanguagesOfConversation(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}}) return c.lang") + String getDefaultLanguageOfConversation(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}})-[:HAS_TRANSLATION]->(t:Translation {lang:{1}})-[:HAS_TT_NODE]->(tt:TTNode) " + + "WHERE tt.of_block={2} return tt.text LIMIT 1") + String getBlockTranslation(String conversationId, String lang, long blockId); + + @Query("MATCH (b:Block {of_conversation: {0}}) " + + "WHERE b.block_id < 0 " + + "DETACH DELETE b " + + "RETURN count(b)>0 ") + String deletePreviewBlocks(String conversationId); + + @Query("MATCH (b:User)-[a]->(z) " + + "WHERE b.user_id=\"preview\" AND a.session={0} " + + "DELETE a RETURN count(a)>0") + String deletePreviewRelationships(String session); + + @Query("MATCH (u:User {user_id: 'preview'})-[rel]->(c) " + + "WHERE c.of_conversation={0} OR c.conv_id={0} " + + "DELETE rel") + void deletePreviewUserOfConv(String conversationId); +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/repository/ConversationRepository.java b/coney-api/src/main/java/com/cefriel/coneyapi/repository/ConversationRepository.java new file mode 100644 index 0000000..badbeef --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/repository/ConversationRepository.java @@ -0,0 +1,219 @@ +package com.cefriel.coneyapi.repository; + + +import com.cefriel.coneyapi.model.db.custom.AnswerBlock; +import com.cefriel.coneyapi.model.db.custom.ConversationResponse; +import com.cefriel.coneyapi.model.db.custom.QuestionBlock; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import com.cefriel.coneyapi.model.db.entities.Tag; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ConversationRepository extends Neo4jRepository { + + @Query("MATCH (cust:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project)<-[:BELONGS_TO]-(c:Conversation) " + + "WHERE wo.access_level >= c.access_level " + + "RETURN c.conv_title AS conversationTitle, c.conv_id AS conversationId, " + + "c.access_level AS accessLevel, c.status AS status, pr.name AS projectName") + List searchConversation(String customer); + + @Query("MATCH (c:Conversation) " + + "RETURN c.conv_title AS conversationTitle, c.conv_id AS conversationId, " + + "c.access_level AS accessLevel, c.status AS status") + List searchAllConversation(); + + @Query("MATCH (cust:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project), " + + "(pr)<-[bt:BELONGS_TO]-(c:Conversation {conv_id:{1}}) " + + "RETURN EXISTS ( (cust)-[wo:WORKS_ON]-(pr)-[bt]-(c) ) AND wo.access_level >= c.access_level") + String hasUserPermission(String username, String conversationId); + + @Query("MATCH (c:Customer {username: {0}}) RETURN c.password LIMIT 1") + String getCustomerByUsername(String username); + + @Query("MATCH (c:Customer {username: {0}}) SET c.password={1} return c.password") + String updateCustomerPassword(String username, String password); + + @Query("MATCH (c:Customer {username: {0}}) SET c.delete='true' ") + void setCustomerForDeletion(String username); + + @Query("MATCH (c:Conversation {conv_id: {0}})" + + " RETURN c.status") + String getSingleConversationStatus(String conversationId); + + @Query("MATCH (c:Conversation) " + + "WHERE c.conv_id = {0} " + + "RETURN c.json_url") + String findJsonUrlByConversationId(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}}) OPTIONAL MATCH " + + "(c)-[:HAS_TRANSLATION]->(t:Translation)-[:HAS_TT_NODE]->(tt:TTNode) " + + "DETACH DELETE c, t, tt " + + "RETURN true") + String deleteConversation(String conversationId); + + @Query("MATCH (c:Conversation) " + + "WHERE c.conv_id = {0} " + + "SET c.status = {1} " + + "RETURN count(c)>0") + String updateConversationStatus(String conversationId, String status); + + @Query("MATCH (conv:Conversation {conv_id: {1}})-[:BELONGS_TO]->(pr:Project)<-[:BELONGS_TO]-(c:Conversation) " + + "WHERE c.conv_title = {0} " + + "AND NOT c.conv_id = {1} " + + "RETURN count(c)>0") + String findExistingTitle(String title, String conversationId); + + @Query("MATCH (b:Block) " + + "WHERE b.of_conversation={0} " + + "DETACH DELETE b") + void deleteConversationNodes(String conversationId); + + + @Query("MERGE (c:Conversation {conv_id: {0}}) " + + "SET c.conv_title= {1}, c.json_url= {2}, " + + "c.status=\"saved\" " + + "RETURN count(c)>0") + String updateConversation(String conversationId, String title, + String jsonUrl); + + @Query("MERGE (c:Conversation {conv_id: {0}}) " + + "MERGE (pr:Project {name: {3}}) " + + "MERGE (c)-[:BELONGS_TO]->(pr) " + + "SET c.conv_title= {1}, c.json_url= {2}, " + + "c.status=\"saved\", c.access_level={4}, c.lang={5} " + + "RETURN count(c)>0") + String createOrUpdateNewConversation(String conversationId, String title, + String jsonUrl, String projectName, int accessLevel, String lang); + + @Query("MERGE (c:Conversation {conv_id: {0}}) " + + "SET c.conv_title= {1}, c.json_url= {2}, " + + "c.status=\"saved\", c.lang={3} " + + "RETURN count(c)>0") + String createOrUpdateNewOpenConversation(String conversationId, String title, + String jsonUrl, String lang); + + @Query("MATCH (c:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project) " + + "RETURN pr.name AS projectName, wo.access_level AS accessLevel") + List getCustomerProjects(String username); + + @Query("MATCH (c:Conversation {conv_id: {0}})-[:BELONGS_TO]->(pr:Project) " + + "RETURN pr.name LIMIT 1") + String getConversationProject(String conversationId); + + //CREATE CONVERSATION BLOCKS AND RELATIONSHIPS + + @Query("CREATE (b:Block {block_id: {0}, block_type: \"Question\", " + + "block_subtype: {1}, text: {2}, of_conversation: {3}, visualization: {4}})" + + "RETURN b.block_id") + String uploadQuestionNode(int blockId, String block_subtype, String text, String of_conversation, String visualization); + + @Query("CREATE (b:Block {block_id: {0}, block_type: \"Talk\", block_subtype: {1}, " + + "text: {2}, url: {3}, image_url: {4}, of_conversation: {5}})" + + "RETURN b.block_id") + String uploadTalkNode(int blockId, String block_subtype, String text, String url, + String image_url, String of_conversation); + + @Query("CREATE (b:Block {block_id: {0}, block_type: \"Answer\", block_subtype: {1}, " + + "text: {2}, value: {3}, order: {4}, of_conversation: {5}, points: {6}})" + + "RETURN b.block_id") + String uploadAnswerNode(int blockId, String block_subtype, String text, int value, int order, + String of_conversation, int points); + + @Query("MATCH (a:Block {block_id: {0}, of_conversation: {2}}),(b:Block {block_id: {1}, of_conversation: {2}})" + + " CREATE (a)-[r:LEADS_TO]->(b)" + + " RETURN type(r) AS res") + List uploadRelationships(int startId, int endId, String conversationId); + + + //DELETE QUERIES + @Query("MATCH (b:Block) " + + "WHERE b.block_id = {0} " + + "AND b.of_conversation = {1} " + + "DETACH DELETE b") + void deleteBlock(int blockId, String conversationId); + + @Query("MATCH (b:Block {of_conversation: {0}}) " + + "WHERE b.block_id < 0 " + + "DETACH DELETE b " + + "RETURN count(b)>0 ") + String deletePreviewBlocks(String conversationId); + + @Query("MATCH (b:User)-[a]->(z) " + + "WHERE b.user_id=\"preview\" AND a.session={0} " + + "DELETE a RETURN count(a)>0") + String deletePreviewRelationships(String session); + + @Query("MATCH (u:User {user_id: 'preview'})-[rel]->(c) " + + "WHERE c.of_conversation={0} OR c.conv_id={0} " + + "DELETE rel") + void deletePreviewUserOfConv(String conversationId); + + @Query("MATCH (c:Conversation {conv_id: {0}})," + + "(o:Block {of_conversation: {0}})-[:LEADS_TO]->(ob:Block) " + + "WHERE NOT (o)<-[:LEADS_TO]-(:Block)" + + "CREATE (c)-[:STARTS]->(o) " + + "RETURN c.conv_id " + + "LIMIT 1") + String createStartRelationship(String conversationId); + + + @Query("MATCH (b:Block {block_id: {1}, of_conversation:{0}}) MERGE (t:Tag {text:{2}})" + + "CREATE (t)<-[rel:ABOUT]-(b)" + + "RETURN type(rel)") + String createTagsAndRelationship(String conversationId, int blockId, String tagName); + + @Query("MERGE (t:Tag {text: {0}}) RETURN t.text") + String uploadTags(String tag); + + + @Query("MATCH (t:Tag) " + + "RETURN DISTINCT t") + List searchTags(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}})-[:STARTS|LEADS_TO*]->(b:Block) " + + "WHERE b.block_type='Question' return DISTINCT b") + List getOrderedQuestions(String conversationId); + + @Query("MATCH (b:Block {block_id: {0}, of_conversation: {1}})-[:LEADS_TO]->(a:Block {block_type: 'Answer'}) return a") + List getAnswersToQuestion(int blockId, String conversationId); + + //TEST + @Query("MATCH (c:Conversation {conv_id:{0}})-[a:STARTS|LEADS_TO*]->(b:Block) " + + "WHERE b.block_type='Question' WITH b, LENGTH(a) AS depth return DISTINCT " + + "id(b) as neo4jId, b.block_id as reteId, " + + "b.block_type as type, b.block_subtype as subtype, b.of_conversation as ofConversation, " + + "b.visualization as questionType, b.text as text, depth") + List getOrderedQuestionsToPrint(String conversationId); + + @Query("MATCH (b:Block {block_id: {0}, of_conversation: {1}})-[:LEADS_TO]->(a:Block {block_type: 'Answer'})" + + " OPTIONAL MATCH n=(a)-[:LEADS_TO*]->(nq:Block {block_type:\"Question\"}) " + + " WITH a,nq ORDER BY length(n) ASC " + + " RETURN DISTINCT id(a) as neo4jId, a.block_id as reteId, " + + "a.block_type as type, a.block_subtype as subtype, a.of_conversation as ofConversation, " + + "a.value as value, a.text as text, a.order as order, nq.block_id as nextQuestionId LIMIT {2}") + List getAnswersToQuestionToPrint(int blockId, String conversationId, int answersAmount); + + @Query("MATCH (b:Block {of_conversation: {1}})-[:LEADS_TO]->(a:Block {block_type: 'Answer'}) " + + "WHERE id(b)={0} return count(a)") + int getAnswersOfBlockAmount(int blockId, String conversationId); + // TEST + + + @Query("MATCH (t:Tag)<-[:ABOUT]-(b:Block {block_id:{0}, of_conversation: {1}}) return t.text LIMIT 1") + String getTagOfBlock(int blockId, String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}}) MERGE (c)-[:HAS_TRANSLATION]->(t:Translation {lang:{1}}) " + + "MERGE (t)-[:HAS_TT_NODE]->(tt:TTNode {of_block:{2}}) SET tt.text={3} return tt.text") + String uploadBlockTranslation(String conversationId, String lang, int block_id, String text ); + + + @Query("Match (c:Conversation {conv_id:{0}})-[:STARTS|LEADS_TO*]->(b:Block) " + + "WHERE b.block_type={1} return DISTINCT b") + List getOrderedBlocksOfType(String conversationId, String blockType); +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/repository/DataRepository.java b/coney-api/src/main/java/com/cefriel/coneyapi/repository/DataRepository.java new file mode 100644 index 0000000..a861e05 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/repository/DataRepository.java @@ -0,0 +1,63 @@ +package com.cefriel.coneyapi.repository; + +import com.cefriel.coneyapi.model.db.custom.AnswersResponse; +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DataRepository extends Neo4jRepository { + + @Query("MATCH (cust:Customer {username: {0}})-[wo:WORKS_ON]->(pr:Project), " + + "(pr)<-[bt:BELONGS_TO]-(c:Conversation {conv_id:{1}}) " + + "RETURN EXISTS ( (cust)-[wo:WORKS_ON]-(pr)-[bt]-(c) ) AND wo.access_level >= c.access_level") + String hasUserPermission(String username, String conversationId); + + /*OLD QUERY + @Query("MATCH (u:User)-[ans:ANSWERED]->(a:Block)<-[:LEADS_TO]" + + "-(q:Block {of_conversation: {0}}), (u)-[se:STARTEND]->(c:Conversation {conv_id: {0}}) " + + "WHERE se.session = ans.session " + + "OPTIONAL MATCH (q)-[:ABOUT]->(t:Tag) " + + "RETURN q.of_conversation AS conversation_id, u.user_id AS user, se.project_id as project_id, se.project_name as project_name," + + " t.text as tag, q.text as question, q.block_id as question_id, a.block_id as answer_id," + + "a.text as option, a.value as value, ans.value as free_answer, " + + "a.points as points, ans.timestamp as timestamp, ans.session as session, " + + "se.start_timestamp as start_timestamp, se.end_timestamp as end_timestamp, se.lang as language;") + */ + + @Query("MATCH (a:Block {block_type:\"Answer\"})<-[:LEADS_TO]-(q:Block {of_conversation: {0}}) " + + "OPTIONAL MATCH (u:User)-[ans:ANSWERED]->(a), (u)-[se:STARTEND]->(c:Conversation {conv_id: {0}}) " + + "WHERE se.session = ans.session " + + "OPTIONAL MATCH (q)-[:ABOUT]->(t:Tag) " + + "RETURN q.of_conversation AS conversation_id, u.user_id AS user, se.project_id as project_id, " + + "se.project_name as project_name, t.text as tag, q.text as question, q.visualization as question_type, q.block_id as question_id, " + + "a.block_id as answer_id, a.block_subtype as answer_type, a.text as option, a.value as value, ans.value as free_answer, a.points as points, " + + "ans.timestamp as timestamp, ans.session as session, se.start_timestamp as start_timestamp, " + + "se.end_timestamp as end_timestamp, se.lang as language;") + List getAnswersOfConversation(String conversationId); + + @Query("MATCH (b:Block {block_id: {0}, of_conversation: {1}})-[:LEADS_TO]->(a:Block {block_type: 'Answer'}) return a") + List getAnswersToQuestion(int blockId, String conversationId); + + @Query("MATCH (n:Block {of_conversation:{0}}) RETURN n") + List getBlocksOfConversation(String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}})-[:STARTS]->(n:Block)" + + "RETURN n LIMIT 1") + Block getFirstBlock(String conversationId); + + @Query("MATCH (t:Tag)<-[:ABOUT]-(b:Block {block_id:{0}, of_conversation: {1}}) return t.text LIMIT 1") + String getTagOfBlock(int blockId, String conversationId); + + @Query("MATCH (prev {block_id:{0}})-[:LEADS_TO]->(o) " + + "WHERE prev.of_conversation = {1} " + + "RETURN o") + List getNextBlock(int blockId, String conversationId); + + @Query("MATCH (c:Conversation {conv_id:{0}}) return c.lang") + String getDefaultLanguageOfConversation(String conversationId); +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/service/AdminService.java b/coney-api/src/main/java/com/cefriel/coneyapi/service/AdminService.java new file mode 100644 index 0000000..2acdba4 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/service/AdminService.java @@ -0,0 +1,200 @@ +package com.cefriel.coneyapi.service; + +import com.cefriel.coneyapi.model.db.entities.Conversation; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import com.cefriel.coneyapi.repository.AdminRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AdminService { + + @Autowired + private AdminRepository adminRepository; + + + @Autowired + private PasswordEncoder bcryptEncoder; + + private static final Logger logger = LoggerFactory.getLogger(AdminService.class); + + public AdminService(AdminRepository adminRepository){ + this.adminRepository = adminRepository; + } + + public List getCustomers(String filterType, String filter, String filter2){ + + if(!checkUserPermission()){ + return null; + } + + switch (filterType) { + case "conversation": + return adminRepository.getCustomersOfConversation(filter); + case "project": + return adminRepository.getCustomersOfProject(filter); + case "both": + return adminRepository.getCustomersOfConversationAndProject(filter, filter2); + default: + return adminRepository.getCustomers(); + } + } + + public List getConversations(String filterType, String filter, String filter2){ + + if(!checkUserPermission()){ + return null; + } + logger.info("[CONTROL] IN service, filtering for "+filterType); + switch (filterType) { + case "customer": + return adminRepository.getConversationsOfCustomer(filter); + case "project": + return adminRepository.getConversationsOfProject(filter); + case "both": + return adminRepository.getConversationsOfCustomerAndProject(filter, filter2); + default: + logger.info(adminRepository.getConversations().toString()); + return adminRepository.getConversations(); + } + } + + public List getProjects(String filterType, String filter, String filter2){ + + if(!checkUserPermission()){ + return null; + } + + switch (filterType) { + case "conversation": + return adminRepository.getProjectOfConversation(filter); + case "customer": + return adminRepository.getProjectsOfCustomer(filter); + case "both": + return adminRepository.getProjectsOfCustomerAndConversation(filter, filter2); + default: + return adminRepository.getProjects(); + } + } + + //CREATE + + public String createCustomer(String username, String password){ + if(!checkUserPermission()){ + return "auth"; + } + + if(adminRepository.checkIfUsernameIsTaken(username) > 0){ + return "taken"; + } + return adminRepository.createCustomer(username, bcryptEncoder.encode(password)); + } + + public boolean createProject(String projectName){ + if(!checkUserPermission()){ + return false; + } + return projectName.equals(adminRepository.createProject(projectName)); + } + + public boolean linkConversationToProject(String conversationId, String projectName){ + if(!checkUserPermission()){ + return false; + } + return adminRepository.linkConversationToProject(conversationId, projectName); + } + + public boolean linkCustomerToProject(String username, String projectName, int accessLevel){ + if(!checkUserPermission()){ + return false; + } + return accessLevel == adminRepository.linkCustomerToProject(username, projectName, accessLevel); + } + + //EDIT + + public boolean changeConversationAccessLevel(String conversationId, int accessLevel){ + if(!checkUserPermission()){ + return false; + } + return accessLevel == adminRepository.changeConversationAccessLevel(conversationId, accessLevel); + } + + public boolean changeCustomerProjectAccessLevel(String username, String projectName, int accessLevel){ + if(!checkUserPermission()){ + return false; + } + return accessLevel == adminRepository.changeCustomerProjectAccessLevel(username, projectName, accessLevel); + } + + public boolean changeCustomerPassword(String username, String newPassword){ + if(!checkUserPermission()){ + return false; + } + return newPassword.equals(adminRepository.changeCustomerPassword(username, bcryptEncoder.encode(newPassword))); + } + + public boolean changeProjectName(String oldName, String newName){ + if(!checkUserPermission()){ + return false; + } + return newName.equals(adminRepository.changeProjectName(oldName, newName)); + } + + public void deleteCustomer(String username){ + if(checkUserPermission()){ + adminRepository.deleteCustomer(username); + } + } + + public void deleteProject(String projectName){ + if(checkUserPermission()){ + adminRepository.deleteProject(projectName); + } + } + + public void deleteConversationProjectLink(String conversationId, String projectName){ + adminRepository.deleteConversationProjectLink(conversationId, projectName); + } + + public void deleteCustomerProjectLink(String username, String projectName){ + if(checkUserPermission()) { + adminRepository.deleteCustomerProjectLink(username, projectName); + } + } + + public boolean isUsernameTaken(String username){ + if(!checkUserPermission()){ + return false; + } + return adminRepository.isUsernameTaken(username); + } + + public boolean isProjectNameTaken(String projectName){ + if(!checkUserPermission()){ + return false; + } + return adminRepository.isProjectNameTaken(projectName); + } + + public boolean checkUserPermission() { + String username = SecurityContextHolder.getContext().getAuthentication().getName(); + + if(username.equals("anonymousUser")){ + return true; + } + String check = adminRepository.isUserAdmin(username); + if(check == null || !Boolean.valueOf(check)){ + logger.error("[CONTROL] User is not authorized to access this content"); + return false; + } + return true; + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/service/ChatService.java b/coney-api/src/main/java/com/cefriel/coneyapi/service/ChatService.java new file mode 100644 index 0000000..141217c --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/service/ChatService.java @@ -0,0 +1,393 @@ +package com.cefriel.coneyapi.service; + +import com.cefriel.coneyapi.exception.MethodNotAllowedException; +import com.cefriel.coneyapi.exception.ParsingException; +import com.cefriel.coneyapi.exception.ResourceNotFoundException; +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Conversation; +import com.cefriel.coneyapi.repository.ChatRepository; +import com.google.gson.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Random; + +@Service +public class ChatService { + + @Autowired + private ChatRepository chatRepository; + + private static final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + + private static final Logger logger = LoggerFactory.getLogger(ChatService.class); + // Logger è del package lsf4j (slf4j è la classe padre di log4j, quindi funzionerà anche se cambio log4j con altro) + + public ChatService(ChatRepository chatRepository){ + this.chatRepository = chatRepository; + } + + /* + Gets or create UserId + Creates SessionId + Generate timestamp and saves StartEnd(start) relationship + Gets first node and all subsequent ones up until an Answer + returns JSON(user:{}, session: {}, conversation:{}, blocks[block:{},...] + */ + public String beginConversation(String userId, String conversationId, String projectName, String projectId, String oldSession, String lang) + throws ResourceNotFoundException { + + JsonObject resultJson = new JsonObject(); + JsonArray blocksSequenceJson = new JsonArray(); + + //if the userId is not set, randomly generate one + + if(userId==null || userId.equals("")) { + logger.info("[CHAT] No user found, setting random u_id"); + Random rnd = new Random(); + int n = 100000 + rnd.nextInt(900000); + userId = "u_"+n; + } + logger.info("[CHAT] u_id: "+userId); + resultJson.addProperty("userId", userId); + Conversation conversation; + logger.info("[CHAT] resultJ: "+resultJson.toString()); + + //get conversation Node + if(userId.contains("preview")){ + conversation = chatRepository.getConversationPreviewById(conversationId); + } else if(conversationId == null){ + conversation = chatRepository.getConversation(); + } else { + conversation = chatRepository.getConversationById(conversationId); + } + + conversationId = conversation.getConversationId(); + logger.info("[CHAT] Conversation found: id: "+conversationId); + JsonObject conversationJson = conversation.toJson(); + + if(conversationJson==null){ + return "no_conversation"; + } + + resultJson.add("conversation", conversationJson); + + Timestamp time = new Timestamp(System.currentTimeMillis()); + String timestamp = sdf.format(time); + + Random rnd = new Random(); + int s = 100000 + rnd.nextInt(900000); + String session = "s_"+s; + + if(oldSession.equals("")) { + resultJson.addProperty("session", session); + String ts = chatRepository.createStartRelationship(userId, conversationId, timestamp, session, projectName, projectId, lang); + logger.info("[CHAT] Start rel with timestamp and SessionId generated"); + + if(("").equals(ts)){ + return "no_startend"; + } + } + + logger.info("[CHAT] Relationship created, getting first Block"); + Block block = chatRepository.getFirstBlock(conversationId); + + if(block == null){ + return "no_firstblock"; + } + + block.setText(getBlockTranslation(block, conversationId, lang)); + + JsonObject blockJson = block.toJson(); + blocksSequenceJson.add(blockJson); + + List seq; + if(!oldSession.equals("")){ + seq = getNextBlock(block.getBlockId(), userId, oldSession, block.getOfConversation(), true); + resultJson.addProperty("session", oldSession); + } else { + seq = getNextBlock(block.getBlockId(), userId, session, block.getOfConversation(), false); + } + + if(seq==null || seq.size()==0){ + logger.error("[CHAT] ERROR: failed to get subsequent blocks"); + } else { + for(Block b : seq){ + b.setText(getBlockTranslation(b, conversationId, lang)); + blockJson = b.toJson(); + blocksSequenceJson.add(blockJson); + } + } + + resultJson.add("blocks", blocksSequenceJson); + return resultJson.toString(); + } + + //Checks whether the user had already started said conversation + public String wasTheConversationStarted(String userId, String convId){ + + String session = chatRepository.wasTheConversationStarted(userId, convId); + + if(session != null && !session.equals("")){ + return session; + } + return null; + } + + //Returns the title of the conversation + public String getConversationTitle(String conversationId){ + return chatRepository.getConversationTitle(conversationId); + } + + //Checks whether the user had already finished said conversation + public String wasTheConversationFinished(String userId, String conversationId){ + String session = chatRepository.wasTheConversationFinished(userId, conversationId); + + if(session != null && !session.equals("")){ + return session; + } + return null; + } + + //Deletes old answers of a specific user-conv combination + public void deletePreviousAnswers(String userId, String conversationId, String session){ + chatRepository.deletePreviousAnswers(userId, conversationId, session); + } + + /* + * Simply saves the answer (checkbox case), + * the last "answer" will be redirected to the "continueConversation method + */ + public void saveCheckboxAnswer(String userId, int blockId, String type, int answer, + String conversationId, String session) + throws ParsingException, ResourceNotFoundException{ + Block block; + Timestamp time = new Timestamp(System.currentTimeMillis()); + String timestamp = sdf.format(time); + logger.info("[CHAT] Saving CB answer to question with id: " + blockId + + ", answer: "+answer+" - "+conversationId); + + block = chatRepository.getNextOfCheckboxAnswerBlock(userId, blockId, timestamp, answer, conversationId, session); + } + + /* + Gets userId, previous blockId, current answer (either value or text) and it's type, convId and session) + Generate timestamp -> Saves answer based on type while getting next block + Adds block to JSONArray + Gets all subsequent blocks till end or Answer + Adds them to JSONArray + */ + public String continueConversation(String userId, int blockId, String type, String answer, + String conversationId, String session, String lang) + throws ParsingException, ResourceNotFoundException{ + + JsonObject resultJson = new JsonObject(); + JsonArray blocksSequenceJson = new JsonArray(); + + try { + resultJson.addProperty("session", session); + resultJson.addProperty("conversationId", conversationId); + logger.info("[CHAT] Session: "+session+", conversation: "+conversationId); + } catch (Exception e){ + return "invalid_json"; + } + + //gets current timestamp + Timestamp time = new Timestamp(System.currentTimeMillis()); + String timestamp = sdf.format(time); + logger.info("[CHAT] Preparing Answer of type: "+type+" to question with id: "+blockId+", answer: "+answer+" - "+conversationId); + + //saves answer and gets next block + Block block = null; + switch (type) { + case "single": + block = chatRepository.getNextOfSingleAnswerBlock(userId, blockId, timestamp, answer, conversationId, session); + break; + case "multiple": + block = chatRepository.getNextOfMultipleAnswerBlock(userId, blockId, timestamp, Integer.parseInt(answer), conversationId, session); + break; + case "checkbox": + block = chatRepository.getNextOfCheckboxAnswerBlock(userId, blockId, timestamp, Integer.parseInt(answer), conversationId, session); + break; + } + + if(block == null){ + return null; + } + + block.setText(getBlockTranslation(block, conversationId, lang)); + + JsonObject blockJson = block.toJson(); + blocksSequenceJson.add(blockJson); + + logger.info("[CHAT] Answer registered, processing next blocks"); + logger.info("[CHAT] Next: "+block.getText()); + List seq = getNextBlock(block.getBlockId(), userId, session, block.getOfConversation(), false); + logger.info("[CHAT] SEQ returned, size: "+seq); + if (seq != null && seq.size()>0) { + logger.info("[CHAT] SEQ returned, size: "+seq.size()); + for(Block b : seq){ + + if(!b.getBlockType().equals("end")){ + b.setText(getBlockTranslation(b, conversationId, lang)); + } + + + blockJson = b.toJson(); + blocksSequenceJson.add(blockJson); + } + } else { + logger.error("[CHAT] get next returned null"); + } + + resultJson.add("blocks", blocksSequenceJson); + + return resultJson.toString(); + } + + public String redoQuestion(String userId, int blockId, String conversationId, String session, String lang) { + + JsonObject resultJson = new JsonObject(); + JsonArray blocksSequenceJson = new JsonArray(); + + //Delete answer + chatRepository.deleteAnswer(userId, session, blockId, conversationId); + chatRepository.deleteEndTimestamp(userId, session, conversationId); + + //Return question and answers + Block block = chatRepository.getSingleBlockById(blockId, conversationId); + List answerSequence = chatRepository.getNextBlock(blockId, conversationId); + + if(answerSequence.size() == 0){ + return "no_answer"; + } + + block.setText(getBlockTranslation(block, conversationId, lang)); + blocksSequenceJson.add(block.toJson()); + for(Block b : answerSequence){ + b.setText(getBlockTranslation(b, conversationId, lang)); + blocksSequenceJson.add(b.toJson()); + } + + resultJson.add("blocks", blocksSequenceJson); + return resultJson.toString(); + } + + + /* + Gets blockId, userId, SessionId and conversationId + Gets next blocks (distance = 1) + None -> The conversation is over -> creates block of type END and returns everything + Block NOT of type Answer -> gets next blocks (distance = 1), recursive + Block of type Answer -> [case1] new conversation = returns everything + [case2] continuing old = gets next blocks + */ + private List getNextBlock(int blockId, String userId, String session, String conversationId, boolean continueOld) { + + + logger.info("[CHAT] Getting subsequent blocks of block_id: "+blockId); + List blockSequence = chatRepository.getNextBlock(blockId, conversationId); + logger.info("[CHAT] amount of next blocks: " + blockSequence.size()); + + //WHEN it ends + if(blockSequence.size()==0){ + logger.info("[CHAT] End of conversation reached, creating block with type 'end'"); + Block block = new Block(); + block.setBlockType("end"); + blockSequence.add(block); + Timestamp time = new Timestamp(System.currentTimeMillis()); + String timestamp = sdf.format(time); + + String ck = chatRepository.createEndRelationship(userId, conversationId, timestamp, session); + if(ck == null || ck.equals("")){ + logger.error("[CHAT] Failed to create END relationship"); + } + logger.info("[CHAT] End relationship created"); + return blockSequence; + } + + Block block; + block = blockSequence.get(0); + if(block == null){ + logger.info("[CHAT] Block null"); + return null; + } + + if(!(block.getBlockType().equals("Answer"))){ + + logger.info("[BLOCK_SEQUENCE] normal " + blockSequence.size()); + blockSequence.addAll(Objects.requireNonNull + (getNextBlock(block.getBlockId(), userId, session, conversationId, continueOld))); + return blockSequence; + + } + + if(continueOld && block.getBlockType().equals("Answer")){ + + logger.info("[CHAT] Continuing old conversation, getting next with session "+ session); + List ansB = chatRepository.getAnswerOfUser(userId, conversationId, session, blockId); + + if(ansB!= null && ansB.size()!= 0 && ansB.get(0) != null){ + + blockSequence.clear(); + //add answers + logger.info("[CHAT] Cont block " + ansB.get(0).getText()); + for(Block ans : ansB){ + ans.setBlockType("AnswerCont"); + } + + blockSequence.addAll(ansB); + blockSequence.addAll(Objects.requireNonNull + (getNextBlock(ansB.get(0).getBlockId(), userId, session,conversationId, continueOld))); + } + } + + return blockSequence; + } + + public boolean deletePreview(String conversationId, String session){ + System.out.println(conversationId); + String a = chatRepository.deletePreviewRelationships(session); + String i = chatRepository.deletePreviewBlocks(conversationId); + logger.info("[CONVERSATION] Deleting all preview blocks"); + + chatRepository.deletePreviewUserOfConv(conversationId); + return Boolean.valueOf(i) || Boolean.valueOf(a); + } + + public List getLanguagesOfConversation(String conversationId){ + List languages = new ArrayList<>(); + String defLang = chatRepository.getDefaultLanguageOfConversation(conversationId); + logger.info("[CHAT] Default lang: "+defLang); + languages.add(defLang); + List otherLangs = chatRepository.getLanguagesOfConversation(conversationId); + if(otherLangs!= null && otherLangs.size()!=0){ + languages.addAll(otherLangs); + } + return languages; + } + + private String getBlockTranslation(Block b, String conversationId, String lang){ + + if(lang.equals("default")){ + return b.getText(); + } + + String result; + + result = chatRepository.getBlockTranslation(conversationId, lang, b.getNeo4jId()); + + if(result!=null && !result.equals("")){ + return result; + } else { + return b.getText(); + } + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/service/ConversationService.java b/coney-api/src/main/java/com/cefriel/coneyapi/service/ConversationService.java new file mode 100644 index 0000000..bc58610 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/service/ConversationService.java @@ -0,0 +1,786 @@ +package com.cefriel.coneyapi.service; + +import com.cefriel.coneyapi.exception.ResourceNotFoundException; +import com.cefriel.coneyapi.model.db.custom.AnswerBlock; +import com.cefriel.coneyapi.model.db.custom.ConversationResponse; +import com.cefriel.coneyapi.model.db.custom.QuestionBlock; +import com.cefriel.coneyapi.model.db.custom.UserProject; +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.model.db.entities.Edge; +import com.cefriel.coneyapi.model.db.entities.Tag; +import com.cefriel.coneyapi.repository.ConversationRepository; +import com.cefriel.coneyapi.utils.Utils; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.nio.charset.StandardCharsets; +import java.util.*; + +@Service +public class ConversationService { + + @Autowired + private ConversationRepository conversationRepository; + + + @Autowired + private PasswordEncoder bcryptEncoder; + + private static final Logger logger = LoggerFactory.getLogger(ConversationService.class); + + public ConversationService(ConversationRepository conversationRepository) { + this.conversationRepository = conversationRepository; + } + + private ArrayList edgeList; + private ArrayList nodeList; + private ArrayList tagList; + private boolean preview = false; + private Utils utils = new Utils(); + + // GET the list the conversations filtered (by status and title), sorted and paginated + public List searchConversation() { + + String usr = SecurityContextHolder.getContext().getAuthentication().getName(); + logger.info("[CONV] Looking with user: "+ usr + ""); + + List tmp; + if(usr.equals("anonymousUser")){ + tmp = conversationRepository.searchAllConversation(); + } else { + tmp = conversationRepository.searchConversation(usr); + } + + return tmp; + } + + public String getConversationProject(String conversationId){ + if(hasUserPermission(conversationId)) { + return conversationRepository.getConversationProject(conversationId); + } + return null; + } + + public boolean updateConversationStatus(String conversationId, String status){ + + String result = "false"; + if(hasUserPermission(conversationId)){ + result = conversationRepository.updateConversationStatus(conversationId, status); + } + return Boolean.valueOf(result); + } + + public boolean titleNotExists(String convTitle, String conversationId){ + String result = conversationRepository.findExistingTitle(convTitle, conversationId); + + if(Boolean.valueOf(result)){ + try { + String path = conversationRepository.findJsonUrlByConversationId(conversationId); + utils.deleteFile(path); + } catch(Exception ignored){} + } + + return !Boolean.valueOf(result); + } + + public boolean createOrUpdateNewConversation(String conversationId, String title, + String jsonUrl, String projectName, int accessLevel, String lang){ + + return Boolean.valueOf(conversationRepository.createOrUpdateNewConversation(conversationId, title, + jsonUrl, projectName, accessLevel, lang)); + } + + public boolean createOrUpdateNewOpenConversation(String conversationId, String title, + String jsonUrl, String lang){ + + return Boolean.valueOf(conversationRepository.createOrUpdateNewOpenConversation(conversationId, title, + jsonUrl, lang)); + } + + + public boolean createOrUpdateConversation(String conversationId, String title, + String jsonUrl){ + + String result = "false"; + if(hasUserPermission(conversationId)) { + result = conversationRepository.updateConversation(conversationId, title, + jsonUrl); + } + return Boolean.valueOf(result); + } + + public String findJsonUrlByConversationId(String conversationId) { + + if(hasUserPermission(conversationId)){ + return conversationRepository.findJsonUrlByConversationId(conversationId); + } else { + return "not_auth"; + } + } + + public boolean deleteConversation(String conversationId){ + + + if(!hasUserPermission(conversationId)){ + return false; + } + + String json_url = conversationRepository.findJsonUrlByConversationId(conversationId); + String result = conversationRepository.deleteConversation(conversationId); + + if(Boolean.valueOf(result)){ + Utils ut = new Utils(); + logger.info("[CONVERSATION] Deleting reteJS file at: "+json_url); + ut.deleteFile(json_url); + } + + return Boolean.valueOf(result); + } + + public List searchTags(String convId){ + return conversationRepository.searchTags(convId); + } + + public boolean deleteConversationNodes(String conversationId){ + + if(!hasUserPermission(conversationId)){ + return false; + } + + conversationRepository.deleteConversationNodes(conversationId); + return true; + } + + public boolean uploadNodesAndEdged(JsonObject nodes, String conversationId, boolean prev){ + + if(!hasUserPermission(conversationId)){ + return false; + } + + edgeList =new ArrayList<>(); + nodeList =new ArrayList<>(); + tagList = new ArrayList<>(); + preview = prev; //TRUE if blocks are meant to be deleted + + boolean readDataBool = true; + for (String s : nodes.keySet()) { + JsonObject singleNode = (JsonObject) nodes.get(s); + readDataBool = (readDataBool && readData(singleNode, conversationId)); + } + + if(!readDataBool){ + logger.error("[CONVERSATION] ERROR: Failed to read JSON data"); + return false; + } + + logger.info("[CONVERSATION] Json loaded, reading nodes"); + if(prev){ + conversationRepository.deletePreviewBlocks(conversationId); + } + + + //first loads the nodes, than the edges and finally creates the starting node + + if(!uploadQueryNodes()){ + logger.error("[CONVERSATION] ERROR: Failed to create conversation nodes"); + revertChanges(conversationId); + return false; + } + logger.info("[CONVERSATION] Conversation nodes uploaded, loading conversation edges..."); + + if(!uploadQueryEdges(conversationId)){ + logger.error("[CONVERSATION] ERROR: Failed to create conversation edges"); + revertChanges(conversationId); + return false; + } + logger.info("[CONVERSATION] Edges uploaded, creating conversation starting node"); + + if(!createAndLinkConversation(conversationId)){ + logger.error("[CONVERSATION] ERROR: Failed to create conversation starting node"); + revertChanges(conversationId); + return false; + } + logger.info("[CONVERSATION] Conversation nodes created successfully"); + + if(!uploadTagsAndRel()){ + logger.error("[CONVERSATION] Failed to upload and/or connect tags, conversation still created"); + } + logger.info("[CONVERSATION] Tags created and linked successfully"); + + if(!prev) { + String result = conversationRepository.updateConversationStatus(conversationId, "published"); + + if(Boolean.valueOf(result)){ + logger.info("[CONVERSATION] Status in DB updated to 'published'"); + return true; + } else { + logger.error("[CONVERSATION] Could not update status in DB, reverting changes"); + revertChanges(conversationId); + return false; + } + } + return true; + } + + public boolean deletePreview(String conversationId, String session){ + System.out.println(conversationId); + String a = conversationRepository.deletePreviewRelationships(session); + String i = conversationRepository.deletePreviewBlocks(conversationId); + logger.info("[CONVERSATION] Deleting all preview blocks"); + + conversationRepository.deletePreviewUserOfConv(conversationId); + return Boolean.valueOf(i) || Boolean.valueOf(a); + } + + //true if the conversation is published + public boolean isPublished(String conversationId){ + + if(!hasUserPermission(conversationId)){ + return false; + } + String status = conversationRepository.getSingleConversationStatus(conversationId); + + return status.equals("published"); + } + + //getQuestionsAndAnswers + public String getOrderedQuestionsAndAnswers(String conv_id) { + + if(!hasUserPermission(conv_id)){ + return null; + } + + List questions = conversationRepository.getOrderedQuestions(conv_id); + + if(questions.size()==0){ + return "no_nodes"; + } + + logger.info("Conversation found, total questions: "+questions.size()); + + + List answers; + int sequence = 0; + StringBuilder res = new StringBuilder(); + res.append("sequence").append(",").append("question").append(",").append("type").append(",").append("tag").append(",") + .append("answer").append(",").append("value").append(",").append("order"); + res.append(System.getProperty("line.separator")); + + for(Block b : questions){ + answers = conversationRepository.getAnswersToQuestion(b.getBlockId(), conv_id); + String tag = conversationRepository.getTagOfBlock(b.getBlockId(), conv_id); + for(Block ans : answers){ + res.append(sequence).append(",") + .append(b.getText()).append(",") + .append(b.getVisualization()).append(",") + .append(tag).append(",") + .append(ans.getText()).append(",") + .append(ans.getValue()).append(",") + .append(ans.getOrder()); + res.append(System.getProperty("line.separator")); + } + sequence++; + } + return res.toString(); + } + + //getQuestionsAndAnswers + public String getOrderedConversation(String conv_id) { + + if(!hasUserPermission(conv_id)){ + return null; + } + + List questions = conversationRepository.getOrderedQuestionsToPrint(conv_id); + + Collections.sort(questions); + + if(questions.size()==0){ + return "no_nodes"; + } + + //structure + JsonArray questionsArray = new JsonArray(); + //question json + //answers array + //answer Json + + logger.info("Conversation found, total questions: "+questions.size()); + + + List answers; + int orderInConversation = 1; + + + + for(QuestionBlock question : questions){ + + JsonObject questionJson = new JsonObject(); + JsonArray answersArray = new JsonArray(); + + logger.info(question.getText()); + question.setAnswersAmount(conversationRepository.getAnswersOfBlockAmount(question.getNeo4jId(), question.getOfConversation())); + question.setTag(conversationRepository.getTagOfBlock(question.getReteId(), conv_id)); + question.setOrderInConversation(orderInConversation); + + answers = conversationRepository.getAnswersToQuestionToPrint(question.getReteId(), question.getOfConversation(), question.getAnswersAmount()); + + for(AnswerBlock ans : answers){ + + logger.info("val: "+ans.getValue()+""); + logger.info("text: "+ans.getText()+""); + + JsonObject answerJson = new JsonObject(); + answerJson.addProperty("text", ans.getText()); //string + answerJson.addProperty("value", ans.getValue()); //int + answerJson.addProperty("order", ans.getOrder()); //int + + logger.info("-"+ans.getNextQuestionId()+"-"); + + try { + answerJson.addProperty("nextQuestionId", ans.getNextQuestionId()); //int + } catch(Exception e){ + answerJson.addProperty("nextQuestionId", 0); //int + } + answersArray.add(answerJson); + } + + questionJson.addProperty("id", question.getReteId()); + questionJson.addProperty("order", question.getOrderInConversation()); + questionJson.addProperty("type", question.getQuestionType()); + questionJson.addProperty("tag", question.getTag()); + questionJson.addProperty("text", question.getText()); + questionJson.addProperty("depth", question.getDepth()); + questionJson.add("answers", answersArray); + + questionsArray.add(questionJson); + + orderInConversation++; + } + return questionsArray.toString(); + } + + //returns all the customers with access to a project + public List getCustomerProjects(){ + String username = SecurityContextHolder.getContext().getAuthentication().getName(); + return conversationRepository.getCustomerProjects(username); + } + + //uploads a given translation + public String uploadTranslation(String conversationId, String language, JsonArray translationBlocks){ + + String res = "failed"; + if(!hasUserPermission(conversationId)){ + return "not_auth"; + } + logger.info("[CONVERSATION] Adding "+language+" translation to conversation: "+conversationId); + for(JsonElement jsonBlock: translationBlocks){ + JsonObject joBlock = jsonBlock.getAsJsonObject(); + + String blockId = joBlock.get("block_id").getAsString(); + String translation = joBlock.get("translation").getAsString(); + + if(!translation.equals("")){ + conversationRepository.uploadBlockTranslation(conversationId, language, + Integer.parseInt(blockId), translation); + } + res = "success"; + } + return res; + } + + //returns all the Talk blocks followed by all the Questions with their answers + public String getLanguageTranslationCSV(String conversationId){ + + if(!hasUserPermission(conversationId)){ + return "not_auth"; + } + + String check = conversationRepository.getSingleConversationStatus(conversationId); + if(!check.toLowerCase().contains("published")){ + return "not_published"; + } + + List talkBlocks = conversationRepository.getOrderedBlocksOfType(conversationId, "Talk"); + List questionBlocks = conversationRepository.getOrderedQuestions(conversationId); + logger.info("[CONVERSATION] Exporting Language Translation CSV for conv "+conversationId); + String line = "block_id,type,text,translation"; + StringBuilder sb = new StringBuilder(); + sb.append(line); + sb.append(System.getProperty("line.separator")); + + + logger.info("[CONVERSATION] Adding "+talkBlocks.size() + " talk blocks"); + //add talk blocks first + for(Block talkBlock: talkBlocks){ + String tmpTalkText = talkBlock.getImageUrl(); + if(tmpTalkText.equals("")){ + tmpTalkText = talkBlock.getText(); + } + line = "" + talkBlock.getNeo4jId() + ",\"" + "Talk" + "\",\"" + tmpTalkText + "\",\"\""; + sb.append(line); + sb.append(System.getProperty("line.separator")); + } + + //add questions + for(Block questionBlock: questionBlocks){ + + line = "" + questionBlock.getNeo4jId() + ",\"" + "Question" + "\",\"" + questionBlock.getText() + "\",\"\""; + sb.append(line); + sb.append(System.getProperty("line.separator")); + + //add answers + List answerBlocks = conversationRepository + .getAnswersToQuestion(questionBlock.getBlockId(), conversationId); + + for(Block answerBlock: answerBlocks){ + + String ansTxt = answerBlock.getText(); + if(ansTxt == null || ansTxt.equals("")){ + ansTxt = "NO TEXT ANSWER"; + } + line = "" + answerBlock.getNeo4jId() + ",\"" + "Answer" + "\",\"" + ansTxt + "\",\"\""; + sb.append(line); + sb.append(System.getProperty("line.separator")); + } + } + byte[] tmpStr = sb.toString().getBytes(); + try { + return new String(tmpStr, StandardCharsets.UTF_8); + } catch (Exception e) { + return sb.toString(); + } + + } + + //changes the user's password + public String changeCustomerPassword(String username, String oldPassword, String newPassword){ + + String res = conversationRepository.getCustomerByUsername(username); + String newEncodedPw = bcryptEncoder.encode(newPassword); + + if(res!=null && bcryptEncoder.matches(res, oldPassword)){ + res = conversationRepository.updateCustomerPassword(username, newEncodedPw); + } + + if(res==null || !res.equals(newEncodedPw)){ + return "false"; + } + return "true"; + } + + //set the delete flag on user ***not used + public void setCustomerForDeletion(String username){ + conversationRepository.setCustomerForDeletion(username); + } + + //Read JSON nodes, creates Node/Edge Objects and store them in ArrayLists + private boolean readData(JsonObject content, String convId){ + + try { + String nodeId_s = content.get("id").getAsString(); + int nodeId = Integer.parseInt(nodeId_s); + if(preview){ + nodeId = nodeId * (-1); + } + conversationRepository.deletePreviewUserOfConv(convId); + ArrayList checkboxes = new ArrayList<>(); + + + String blockText = null; + String blockSubtype; + int blockPoints; + + JsonObject data_obj = content.getAsJsonObject("data"); + String blockType = data_obj.get("type").getAsString(); + + String tag; + try { + tag = data_obj.get("tag").getAsString(); + } catch (Exception e){ + tag = null; + } + + if(tag!=null) { + Tag t = new Tag((tag), nodeId, convId); + tagList.add(t); + } + + if (blockType.equals("Talk")) { + + + blockSubtype = data_obj.get("subtype").getAsString(); + + String blockUrl = null; + String blockImageUrl = null; + + switch (blockSubtype) { + case ("text"): + try{ + blockText = data_obj.get("text").getAsString(); + } catch (Exception e){ + blockText = ""; + } + + break; + case ("link"): + blockText = data_obj.get("title").getAsString(); + blockUrl = data_obj.get("url").getAsString(); + break; + case ("imageUrl"): + blockImageUrl = data_obj.get("url").getAsString(); + break; + } + Block n = new Block(nodeId, blockType, blockSubtype, blockText, blockUrl, blockImageUrl, convId); + nodeList.add(n); + + } + else if (blockType.equals("Answer")) { + + blockSubtype = data_obj.get("subtype").getAsString(); + + try { + blockText = data_obj.get("text").getAsString(); + } catch (Exception jse) { + blockText = null; + } + try{ + long temp = Long.parseLong(data_obj.get("points").getAsString()); + blockPoints = Math.toIntExact(temp); + } catch(Exception e){ + blockPoints = 0; + } + + int blockScaleNumber = 0; + int blockOrder = 0; + int lastBlockScaleNumber = 0; + int none = 0; + if (blockSubtype.equals("multiple")) { + long temp_int = Long.parseLong(data_obj.get("value").getAsString()); + blockScaleNumber = Math.toIntExact(temp_int); + temp_int = Long.parseLong(data_obj.get("sort").getAsString()); + blockOrder = Math.toIntExact(temp_int); + } else if(blockSubtype.equals("checkbox")){ + + long temp_int = Long.parseLong(data_obj.get("value").getAsString()); + blockScaleNumber = Math.toIntExact(temp_int); + + JsonArray boxes = data_obj.get("checkbox").getAsJsonArray(); + for(int i = 0; i impossible to normally find a block with id<0 + // so that's the condition to understand they are for preview only + + if(block.getBlockType().equals("Answer")){ + + + queryOutput = conversationRepository + .uploadAnswerNode(idToAdd, block.getBlockSubtype(), block.getText(), block.getValue(), + block.getOrder(), block.getOfConversation(), block.getPoints()); + + } else if(block.getBlockType().equals("Talk")){ + + queryOutput = conversationRepository.uploadTalkNode(idToAdd, block.getBlockSubtype(), + block.getText(),block.getUrl(), block.getImageUrl(),block.getOfConversation()); + + } else { + + queryOutput = conversationRepository.uploadQuestionNode(idToAdd, block.getBlockSubtype(), + block.getText(),block.getOfConversation(), block.getVisualization()); + } + + out = out && id.equals(queryOutput); + } + logger.info("[CONVERSATION] upload done"); + return out; + } + + //create edges + private boolean uploadQueryEdges(String conversationId){ + + boolean out = true; + logger.info("[CONVERSATION] Total edges: "+edgeList.size()); + for(Edge edge : edgeList) { + int start = edge.getStartId(); + int end = edge.getEndId(); + List res = conversationRepository.uploadRelationships(start, end, conversationId); + out = (out && (res.size()>0)); + } + + return out; + } + + //upload tags + public boolean uploadTags(JsonArray tag_list){ + + boolean check = true; + + for(JsonElement one_tag : tag_list){ + String toAdd = one_tag.getAsString(); + String res = conversationRepository.uploadTags(toAdd); + check = check && (res.equals(toAdd)); + } + return check; + } + + //add tags + private boolean uploadTagsAndRel(){ + boolean out = true; + for(Tag t : tagList){ + String tag = t.getText().replaceAll("\"", ""); + if(!tag.equals("")){ + String res = conversationRepository.createTagsAndRelationship(t.getConversationId(), + t.getBlockId(), tag); + out = out && (("ABOUT").equals(res)); + } + + } + return out; + } + + //create conversation start node with all the properties + private boolean createAndLinkConversation(String convId){ + String outCheck = conversationRepository.createStartRelationship(convId); + return outCheck.equals(convId); + } + + private void revertChanges(String conversationId){ + for(Block node : nodeList) { + conversationRepository.deleteBlock(node.getBlockId(), conversationId); + } + logger.info("[CONVERSATION] Changes reverted, exiting now"); + } + + private boolean hasUserPermission(String conversationId) { + String username = SecurityContextHolder.getContext().getAuthentication().getName(); + + if(username.equals("anonymousUser")){ + return true; + } + + String res = conversationRepository.hasUserPermission(username, conversationId); + if(res == null || !Boolean.valueOf(res)){ + logger.error("[CONVERSATION] User not authorized to access conversation: "+conversationId); + return false; + } + return Boolean.valueOf(res); + } +} \ No newline at end of file diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/service/DataService.java b/coney-api/src/main/java/com/cefriel/coneyapi/service/DataService.java new file mode 100644 index 0000000..c638aaa --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/service/DataService.java @@ -0,0 +1,642 @@ +package com.cefriel.coneyapi.service; + +import com.cefriel.coneyapi.model.db.custom.AnswersResponse; +import com.cefriel.coneyapi.model.db.entities.Block; +import com.cefriel.coneyapi.repository.DataRepository; +import com.cefriel.coneyapi.utils.RDFUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import org.eclipse.rdf4j.model.Model; +import org.eclipse.rdf4j.model.ValueFactory; +import org.eclipse.rdf4j.model.impl.LinkedHashModel; +import org.eclipse.rdf4j.model.impl.SimpleValueFactory; +import org.eclipse.rdf4j.model.vocabulary.RDF; +import org.eclipse.rdf4j.model.vocabulary.RDFS; +import org.eclipse.rdf4j.model.vocabulary.XMLSchema; +import java.util.List; + +@Service +public class DataService { + + @Autowired + private DataRepository dataRepository; + + private static final Logger logger = LoggerFactory.getLogger(DataService.class); + + public DataService(DataRepository dataRepository) { + this.dataRepository = dataRepository; + } + + public String getAnswersOfConversation(String conversationId, boolean anonymize){ + + if(!hasUserPermission(conversationId)){ + return null; + } + + List list = dataRepository.getAnswersOfConversation(conversationId); + + if(list.size()==0){ + return null; + } + + return answersToCSV(list, anonymize); + } + + + + //TODO Export literals also in other languages + //Returns a "rdf-formatted" string for the blocks in a conversation + public String getRDFOfConversation(String conversationId, String base, String format) { + + // Factory per creare nuovi Values e Statements in rdf4j + ValueFactory factory = SimpleValueFactory.getInstance(); + + // Model in cui inserire gli statements + Model model = new LinkedHashModel(); + // Add namespaces + RDFUtils.addDefaultNamespaces(model); + + List conversationBlocks = dataRepository.getBlocksOfConversation(conversationId); + String defaultLanguageTag = dataRepository.getDefaultLanguageOfConversation(conversationId); + + model.add( + factory.createIRI(base, "SurveyProcedure_" + conversationId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SurveyProcedure") + ); + + Block firstBlock = dataRepository.getFirstBlock(conversationId); + String firstBlockId = RDFUtils.getBlockId(conversationId, firstBlock); + + model.add( + factory.createIRI(base, "SurveyProcedure_" + conversationId), + factory.createIRI(RDFUtils.SUR, "startsWith"), + factory.createIRI(base, firstBlockId) + ); + + + for(Block b: conversationBlocks) { + + String blockId = RDFUtils.getBlockId(conversationId, b); + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SurveyElement") + ); + + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "inSurveyProcedure"), + factory.createIRI(base, "SurveyProcedure_" + conversationId) + ); + + // Answer + if(b.getBlockType().toLowerCase().equals("answer")) { + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "Answer") + ); + + if(b.getBlockSubtype().toLowerCase().equals("single")) { + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "OpenAnswer") + ); + } else if (b.getBlockSubtype().toLowerCase().equals("multiple") || + b.getBlockSubtype().toLowerCase().equals("checkbox")) { + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "ClosedAnswer") + ); + + if (b.getPoints() != 0) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasPoints"), + factory.createLiteral((float) b.getPoints()) + ); + + if (b.getOrder() != 0) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasOrderNumber"), + factory.createLiteral(b.getOrder()) + ); + + if (b.getValue() != 0) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasValue"), + factory.createLiteral((float) b.getValue()) + ); + if (b.getText() != null && !b.getText().equals("")) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasText"), + factory.createLiteral(b.getText(), defaultLanguageTag) + ); + } + } + // Talk + else if(b.getBlockType().toLowerCase().equals("talk")) { + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "Talk") + ); + + if(b.getBlockSubtype().toLowerCase().equals("text")){ + if(b.getText() != null && !b.getText().equals("")) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasText"), + factory.createLiteral(b.getText(), defaultLanguageTag) + ); + } + else if(b.getBlockSubtype().toLowerCase().equals("link")) { + if(b.getText() != null && !b.getText().equals("")) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasText"), + factory.createLiteral(b.getText(), defaultLanguageTag) + ); + + if(b.getUrl() != null && !b.getUrl().equals("")) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasLink"), + factory.createLiteral(b.getUrl(), XMLSchema.ANYURI) + ); + } + else if(b.getBlockSubtype().toLowerCase().equals("imageurl")) { + if(b.getUrl() != null && !b.getUrl().equals("")) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasLink"), + factory.createLiteral(b.getUrl(), XMLSchema.ANYURI) + ); + } + + } + + // Question + else if(b.getBlockType().toLowerCase().equals("question")) { + + String tag = dataRepository.getTagOfBlock(b.getBlockId(), conversationId); + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "Question") + ); + + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasText"), + factory.createLiteral(b.getText(), defaultLanguageTag) + ); + + model.add( + factory.createIRI(base, "ObservableVariable_" + Math.abs(b.getText().hashCode())), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "ObservableVariable") + ); + + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasObservableVariable"), + factory.createIRI(base, "ObservableVariable_" + Math.abs(b.getText().hashCode())) + ); + + if(tag != null) { + + String tag_id = "Tag_" + Math.abs(tag.toLowerCase().hashCode()); + + model.add( + factory.createIRI(base, tag_id), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "LatentVariable") + ); + + model.add( + factory.createIRI(base, tag_id), + RDFS.LABEL, + factory.createLiteral(tag.toLowerCase()) + ); + + + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasLatentVariable"), + factory.createIRI(base, tag_id) + ); + } + + + if (b.getBlockSubtype().toLowerCase().equals("single")) { + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "OpenQuestion") + ); + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SingleInputQuestion") + ); + //TODO Add different types for number, datetime, etc... ?? + } else if (b.getBlockSubtype().toLowerCase().equals("multiple")) { + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "ClosedQuestion") + ); + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "MultipleChoiceQuestion") + ); + + switch(b.getVisualization()) { + case "options": + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasVisualization"), + factory.createLiteral("Option") + ); + break; + case "star": + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasVisualization"), + factory.createLiteral("Scale") + ); + break; + case "emoji": + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasVisualization"), + factory.createLiteral("Emoji") + ); + break; + case "slider": + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasVisualization"), + factory.createLiteral("Slider") + ); + break; + case "select": + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "hasVisualization"), + factory.createLiteral("Dropdown") + ); + break; + default: + break; + } + } else if (b.getBlockSubtype().toLowerCase().equals("checkbox")) { + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "ClosedQuestion") + ); + + model.add( + factory.createIRI(base, blockId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "CheckboxQuestion") + ); + } + } + + List nextBlocks = dataRepository.getNextBlock(b.getBlockId(), conversationId); + for(Block nb: nextBlocks) + model.add( + factory.createIRI(base, blockId), + factory.createIRI(RDFUtils.SUR, "leadsTo"), + factory.createIRI(base, RDFUtils.getBlockId(conversationId, nb)) + ); + } + + return RDFUtils.writeRDFData(format, model); + + } + + public String getRDFOfAnswers(String conversationId, String base, String format, boolean anonymize){ + logger.info("[DATA] RDF of answers requested"); + logger.info("[DATA] Fetching answers"); + List list = dataRepository.getAnswersOfConversation(conversationId); + + if (list != null && list.size() == 0) { + logger.info("[DATA] No data found, returning"); + return null; + } + logger.info("[DATA] " + list.size() + " answers found"); + + // Factory per creare nuovi Values e Statements in rdf4j + ValueFactory factory = SimpleValueFactory.getInstance(); + + // Model in cui inserire gli statements + Model model = new LinkedHashModel(); + RDFUtils.addDefaultNamespaces(model); + + logger.info("[DATA] Creating model for conv: "+conversationId); + String user; + for(AnswersResponse l: list) { + + user = l.getUser(); + + //la query torna anche le risposte non legate ad utenti, che non servono in questo export + if(user == null || user.equals("")){ + continue; + } + + if(anonymize){ + user = l.getAnonymizedUser(); + } + + String completionId = conversationId + "_" + user + "_" + l.getSession(); + String completedSurveyId = "CompletedSurvey_" + completionId; + String surveyCompletionId = "SurveyCompletionTask_" + completionId; + String completedQuestionId = "CompletedQuestion_" + completionId + "_" + l.getQuestionId(); + String surveyProcedureId = "SurveyProcedure_" + conversationId; + String datasetId = "DataSet_" + conversationId; + String participantId = "Participant_" + user; + + // Survey Completion + model.add( + factory.createIRI(base, surveyCompletionId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SurveyCompletionTask") + ); + + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.SUR, "sessionId"), + factory.createLiteral(l.getSession()) + ); + + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.WFPROV, "describedByProcess"), + factory.createIRI(base, surveyProcedureId) + ); + + addTarget(model, factory, base, surveyCompletionId, l.getProjectId()); + addTarget(model, factory, base, surveyCompletionId, l.getProjectName()); + + if (l.getStartTimestamp() != null && !l.getStartTimestamp().equals("")) + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.PROV, "startedAtTime"), + factory.createLiteral(RDFUtils.formatDateTime(l.getStartTimestamp()), XMLSchema.DATETIME) + ); + + if (l.getEndTimestamp() != null && !l.getEndTimestamp().equals("")) + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.PROV, "endedAtTime"), + factory.createLiteral(RDFUtils.formatDateTime(l.getEndTimestamp()), XMLSchema.DATETIME) + ); + + // Completed Survey + model.add( + factory.createIRI(base, completedSurveyId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "CompletedSurvey") + ); + + model.add( + factory.createIRI(base, completedSurveyId), + factory.createIRI(RDFUtils.QB, "observation"), + factory.createIRI(base, completedQuestionId) + ); + + model.add( + factory.createIRI(base, completedSurveyId), + factory.createIRI(RDFUtils.WFPROV, "wasOutputFrom"), + factory.createIRI(base, surveyCompletionId) + ); + + model.add( + factory.createIRI(base, completedSurveyId), + factory.createIRI(RDFUtils.WFPROV, "describedByParameter"), + factory.createIRI(base, completedQuestionId) + ); + + // Survey Data Set + model.add( + factory.createIRI(base, datasetId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SurveyDataSet") + ); + + // User + model.add( + factory.createIRI(base, participantId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "Participant") + ); + + model.add( + factory.createIRI(base, participantId), + factory.createIRI(RDFUtils.SUR, "participantId"), + factory.createLiteral(user) + ); + + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.PROV, "wasAssociatedWith"), + factory.createIRI(base, participantId) + ); + + model.add( + factory.createIRI(base, completedSurveyId), + factory.createIRI(RDFUtils.PROV, "wasAttributedTo"), + factory.createIRI(base, participantId) + ); + + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.PROV, "wasAttributedTo"), + factory.createIRI(base, participantId) + ); + + // Completed Question + model.add( + factory.createIRI(base, completedQuestionId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "CompletedQuestion") + ); + + String completesQuestionId = "Block_" + conversationId + "_" + l.getQuestionId(); + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.SUR, "completesQuestion"), + factory.createIRI(base, completesQuestionId) + ); + + if(l.getTimestamp() != null && !(l.getTimestamp().equals(""))) + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.SUR, "hasCompletionTimestamp"), + factory.createLiteral(RDFUtils.formatDateTime(l.getTimestamp()), XMLSchema.DATETIME) + ); + + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.SUR, "answeredIn"), + factory.createIRI(base, surveyCompletionId) + ); + + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.QB, "dataSet"), + factory.createIRI(base, datasetId) + ); + + if(l.getQuestionType().toLowerCase().equals("text")) { + String answerText = ""; + if(l.getFreeAnswer() != null + && !l.getFreeAnswer().toLowerCase().equals("skip") + && !l.getFreeAnswer().toLowerCase().equals("")) + answerText = l.getFreeAnswer(); + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.SUR, "hasAnswerText"), + factory.createLiteral(answerText, l.getLanguage()) + ); + } + + if(l.getAnswerId() != 0) { + String hasAnswerId = "Block_" + conversationId + "_" + l.getAnswerId(); + model.add( + factory.createIRI(base, completedQuestionId), + factory.createIRI(RDFUtils.SUR, "hasAnswer"), + factory.createIRI(base, hasAnswerId) + ); + } + } + + return RDFUtils.writeRDFData(format, model); + } + + private void addTarget(Model model, ValueFactory factory, String base, String surveyCompletionId, String target) { + + if(target != null && !(target.equals(""))) { + String targetId = "SurveyTarget_" + target; + + model.add( + factory.createIRI(base, targetId), + RDF.TYPE, + factory.createIRI(RDFUtils.SUR, "SurveyTarget") + ); + + model.add( + factory.createIRI(base, targetId), + RDFS.LABEL, + factory.createLiteral(target) + ); + + model.add( + factory.createIRI(base, surveyCompletionId), + factory.createIRI(RDFUtils.SUR, "completedFor"), + factory.createIRI(base, targetId) + ); + } + + } + + //returns a "csv-formatted" string + private String answersToCSV(List list, boolean anonymize){ + + logger.info("[CONVERSATION] Exporting CSV"); + + String line = "questionId,question,questionType,tag,option,value,freeAnswer,points,user,language,date,time,session,totalDuration,projectId,projectName"; + StringBuilder sb = new StringBuilder(); + sb.append(line); + sb.append(System.getProperty("line.separator")); + logger.info("[CONVERSATION] CSV header: " + line); + + for (AnswersResponse as : list) + { + + String type = "text"; + + if(!"".equals(as.getQuestionType())){ + type = as.getQuestionType(); + } + //TODO fix + String tmpOp = as.getOption(); + if(as.getAnswerType().equals("checkbox")){ + if(tmpOp.startsWith("----")) { + as.setOption(tmpOp.substring(4)); + } + type = "checkbox"; + } + + String user = as.getUser(); + if(anonymize){ + user = as.getAnonymizedUser(); + } + + line = as.getQuestionId() + "," + + "\"" + csvString(as.getQuestion()) + "\"," + + "\"" + csvString(type) + "\"," + + "\"" + csvString(as.getTags()) + "\"," + + "\"" + csvString(as.getOption()) + "\"," + + as.getValue() + "," + + "\"" + csvString(as.getFreeAnswer()) + "\"," + + as.getPoints() + "," + + "\"" + user + "\"," + + "\"" + as.getLanguage() + "\"," + + as.getDate() + "," + + as.getTime() + "," + + "\"" + as.getSession() + "\"," + + as.getDuration() + "," + + "\"" + as.getProjectId() + "\"," + + "\"" + csvString(as.getProjectName()) + "\""; + + sb.append(line); + sb.append(System.getProperty("line.separator")); + } + + return sb.toString(); + } + + private String csvString(String answer) { + if (answer == null) + return ""; + return answer.trim().replace("\n", "").replace("\r", ""); + } + + private boolean hasUserPermission(String conversationId) { + String username = SecurityContextHolder.getContext().getAuthentication().getName(); + + if(username.equals("anonymousUser")){ + return true; + } + + String res = dataRepository.hasUserPermission(username, conversationId); + if(res == null || !Boolean.valueOf(res)){ + logger.error("[CONVERSATION] User not authorized to access conversation: "+conversationId); + return false; + } + return Boolean.valueOf(res); + } +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/utils/RDFUtils.java b/coney-api/src/main/java/com/cefriel/coneyapi/utils/RDFUtils.java new file mode 100644 index 0000000..e7794d4 --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/utils/RDFUtils.java @@ -0,0 +1,103 @@ +package com.cefriel.coneyapi.utils; + +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import org.eclipse.rdf4j.model.Model; +import org.eclipse.rdf4j.rio.RDFFormat; +import org.eclipse.rdf4j.rio.Rio; + +import com.cefriel.coneyapi.model.db.entities.Block; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RDFUtils { + + private static final Logger logger = LoggerFactory.getLogger(RDFUtils.class); + + // Ontologies + public static final String SUR = "https://w3id.org/survey-ontology#"; + public static final String RO = "http://purl.org/wf4ever/ro#"; + public static final String WFDESC = "http://purl.org/wf4ever/wfdesc#"; + public static final String WFPROV = "http://purl.org/wf4ever/wfprov#"; + public static final String PROV = "http://www.w3.org/ns/prov#"; + public static final String QB = "http://purl.org/linked-data/cube#"; + + public static final String CEF = "http://www.cefriel.com/data#"; + + public static void addDefaultNamespaces(Model model) { + model.setNamespace("sur", SUR); + model.setNamespace("ro", RO); + model.setNamespace("wfdesc", WFDESC); + model.setNamespace("wfprov", WFPROV); + model.setNamespace("prov", PROV); + model.setNamespace("qb", QB); + model.setNamespace("cef", CEF); + } + + public static String getBlockId(String conversationId, Block b) { + String block_id = "Block_" + conversationId + "_" + b.getBlockId(); + + if (b.getBlockType().toLowerCase().equals("answer") + && b.getBlockSubtype().toLowerCase().equals("checkbox")) { + int order = 0; + if(b.getOrder() != 0) + order = b.getOrder(); + block_id = block_id + "_" + order; + } + + return block_id; + } + + public static String writeRDFData(String format, Model model){ + logger.info("[DATA] Writing data outstream"); + String output; + ByteArrayOutputStream outstream = new ByteArrayOutputStream(); + + RDFFormat rdfFormat = getRDFFormat(format); + + Rio.write(model, outstream, rdfFormat); + output = new String(outstream.toByteArray(), StandardCharsets.UTF_8); + return output; + } + + public static RDFFormat getRDFFormat(String format) { + switch (format.toLowerCase()) { + case "binary": + return RDFFormat.BINARY; + case "jsonld": + return RDFFormat.JSONLD; + case "n3": + return RDFFormat.N3; + case "nquads": + return RDFFormat.NQUADS; + case "ntriples": + return RDFFormat.NTRIPLES; + case "rdfxml": + return RDFFormat.RDFXML; + case "turtle": + return RDFFormat.TURTLE; + case "rdfa": + return RDFFormat.RDFA; + default: + return null; + } + } + + public static String formatDateTime(String datetime) { + String output = ""; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"); + DateTimeFormatter formatterOutput = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); + try{ + output = LocalDateTime.parse(datetime, formatter).format(formatterOutput); + } catch (Exception e){ + logger.error("[DATA] Error in parsing date: "+e.getMessage()); + } + + return output; + } + +} diff --git a/coney-api/src/main/java/com/cefriel/coneyapi/utils/Utils.java b/coney-api/src/main/java/com/cefriel/coneyapi/utils/Utils.java new file mode 100644 index 0000000..639925d --- /dev/null +++ b/coney-api/src/main/java/com/cefriel/coneyapi/utils/Utils.java @@ -0,0 +1,148 @@ +package com.cefriel.coneyapi.utils; + +import com.cefriel.coneyapi.config.ApplicationConfig; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.SecureRandom; +import java.text.SimpleDateFormat; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +public class Utils { + + protected SecureRandom sr = new SecureRandom(); + private Map mappingId = new HashMap(); + + private static final Logger logger = LoggerFactory.getLogger(Utils.class); + + private String absolutePath = ApplicationConfig.RETE_PATH; + + public String openJsonFile(String path){ + + try { + String res = new String(Files.readAllBytes(Paths.get(path))); + logger.info("[UTILS] File read at path '" + path + "'"); + return res; + } catch (IOException e){ + logger.error("[UTILS] Unable to read the file at location: " + path); + return ""; + } + } + + //changes the conversation "status" field in the saved json + public boolean changeStatusInJson(String path, String status){ + + String str_json; + + try { + str_json = openJsonFile(path); + + JsonParser parser = new JsonParser(); + JsonObject json = (JsonObject) parser.parse(str_json); + + json.addProperty("status", status); + String name = json.get("title").getAsString(); + + saveJsonToFile(json, name); + } catch (Exception e){ + str_json = null; + } + + return str_json != null; + + } + + //Saves the json locally + public String saveJsonToFile(JsonObject json, String name) { + + String timestamp = new SimpleDateFormat("yyyyMMddHHmm").format(new Date()); + String fileName = absolutePath+name+".txt"; + String pathVersions = absolutePath + "versions/" + name + "/"; + String fileNameVersioned = pathVersions + name + timestamp + ".txt"; + // Create dir + new File(pathVersions).mkdirs(); + + try (FileWriter fileVersioned = new FileWriter(fileNameVersioned)) { + fileVersioned.write(json.toString()); + fileVersioned.close(); + logger.info("[UTILS] JSON Object successfully versioned to file at: '"+fileNameVersioned+"'"); + } catch (IOException e){ + logger.error("[UTILS] Failed to version JSON Object at: '"+fileNameVersioned+"'"); + } + + if (new File(pathVersions).list().length > 10) + try (Stream paths = Files.walk(Paths.get(pathVersions))) { + paths + .filter(Files::isRegularFile) + .map(p -> p.toFile()) + .filter((File p) -> p.getName().contains(name)) + .sorted(getReverseLastModifiedComparator()) + .skip(10) + .forEach(x -> ((File) x).delete()); + } catch (IOException e1) { + logger.info("[UTILS] Failed deleting older versions of JSON Object at: '"+fileNameVersioned+"'"); + } + + try (FileWriter file = new FileWriter(fileName)) { + file.write(json.toString()); + file.close(); + + logger.info("[UTILS] JSON Object successfully copied to file at: '"+fileName+"'"); + return fileName; + } catch (IOException e){ + logger.error("[UTILS] Failed to copy JSON Object at: '"+fileName+"'"); + return null; + } + } + + private static Comparator getReverseLastModifiedComparator() { + return (File o1, File o2) -> { + if (o1.lastModified() < o2.lastModified()) { + return 1; + } + if (o1.lastModified() > o2.lastModified()) { + return -1; + } + return 0; + }; + } + + public void deleteFile(String path){ + try { + File file = new File(path); + file.delete(); + + String versionsPath = absolutePath + "versions/" + file.getName().replaceFirst("[.][^.]+$", "") + "/"; + logger.info("[UTILS] versionsPath " + versionsPath); + Files.walk(Paths.get(versionsPath)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } catch (Exception e){ + logger.error("Error in deleting old file"); + } + } + + // Metodo per la generazione di id univoco + public String generateId() { + + StringBuilder generatedId = new StringBuilder("id-"); + generatedId.append(sr.nextInt()).append("-").append(new Date().getTime()); + + logger.debug("[UTILS] Generated new id {}", generatedId.toString()); + return generatedId.toString(); + } + +} diff --git a/coney-api/src/main/resources/log4j.xml b/coney-api/src/main/resources/log4j.xml new file mode 100644 index 0000000..44ab488 --- /dev/null +++ b/coney-api/src/main/resources/log4j.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coney-api/src/test/java/com/cefriel/coneyapi/ConeyApiApplicationTests.java b/coney-api/src/test/java/com/cefriel/coneyapi/ConeyApiApplicationTests.java new file mode 100644 index 0000000..67005cc --- /dev/null +++ b/coney-api/src/test/java/com/cefriel/coneyapi/ConeyApiApplicationTests.java @@ -0,0 +1,14 @@ +package com.cefriel.coneyapi; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class ConeyApiApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/coney-chat b/coney-chat deleted file mode 160000 index b88cde4..0000000 --- a/coney-chat +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b88cde4c70f3a256ace7be4e6236eaedce49d69e diff --git a/coney-chat/.dockerignore b/coney-chat/.dockerignore new file mode 100644 index 0000000..0945208 --- /dev/null +++ b/coney-chat/.dockerignore @@ -0,0 +1,5 @@ +node_modules/* +dist/* +.git +.gitignore +package-lock.json \ No newline at end of file diff --git a/coney-chat/.editorconfig b/coney-chat/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/coney-chat/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/coney-chat/.gitignore b/coney-chat/.gitignore new file mode 100644 index 0000000..38880a7 --- /dev/null +++ b/coney-chat/.gitignore @@ -0,0 +1,47 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db +src/assets/cefriel_logo.svg diff --git a/coney-chat/Dockerfile b/coney-chat/Dockerfile new file mode 100644 index 0000000..346de17 --- /dev/null +++ b/coney-chat/Dockerfile @@ -0,0 +1,32 @@ +# BUILD +FROM node:10.16.0 as build + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install and cache app dependencies +COPY package.json /app/package.json + +RUN npm install + +# add app +COPY . /app + +# generate build + +RUN ng build --configuration=docker --base-href=$BASE_HREF --output-path=dist + +# DEPLOY +FROM nginx:1.16.0-alpine + +# copy artifact build from the 'build environment' +COPY --from=build /app/dist /usr/share/nginx/html/ + +# expose port 80 +EXPOSE 80 + +# run nginx +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/coney-chat/LICENSE b/coney-chat/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/coney-chat/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/coney-chat/README.md b/coney-chat/README.md new file mode 100644 index 0000000..e1e5871 --- /dev/null +++ b/coney-chat/README.md @@ -0,0 +1,19 @@ +# Coney Chat + +Coney Chat: User interface to administer surveys. Coney Chat is one of the components of the [Coney](https://github.com/cefriel/coney) toolkit for conversational surveys. + +### License + +_Copyright 2020 Cefriel._ + +Licensed 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. diff --git a/coney-chat/angular.json b/coney-chat/angular.json new file mode 100644 index 0000000..ec315bd --- /dev/null +++ b/coney-chat/angular.json @@ -0,0 +1,194 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "coney-chat": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/coney-chat", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.css" + ], + "scripts": [], + "es5BrowserSupport": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "docker":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.docker.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "upm": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.upm.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "coney-chat:build" + }, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "configurations": { + "production": { + "browserTarget": "coney-chat:build:production" + }, + "docker": { + "browserTarget": "coney-chat:build:docker" + }, + "upm": { + "browserTarget": "coney-chat:build:upm" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "coney-chat:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "coney-chat-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "coney-chat:serve" + }, + "configurations": { + "production": { + "devServerTarget": "coney-chat:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "coney-chat" +} \ No newline at end of file diff --git a/coney-chat/e2e/protractor.conf.js b/coney-chat/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/coney-chat/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/coney-chat/e2e/src/app.e2e-spec.ts b/coney-chat/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..7a99345 --- /dev/null +++ b/coney-chat/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to coney-chat!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/coney-chat/e2e/src/app.po.ts b/coney-chat/e2e/src/app.po.ts new file mode 100644 index 0000000..5776aa9 --- /dev/null +++ b/coney-chat/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/coney-chat/e2e/tsconfig.e2e.json b/coney-chat/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a6dd622 --- /dev/null +++ b/coney-chat/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/coney-chat/package-lock.json b/coney-chat/package-lock.json new file mode 100644 index 0000000..e46733f --- /dev/null +++ b/coney-chat/package-lock.json @@ -0,0 +1,10276 @@ +{ + "name": "coney-chat", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.800.6.tgz", + "integrity": "sha512-b6WPGN8PReRizeTe5sR3XS2sqTqfCeFIDXI4sPy3T3XdmO1dB/UP8trsHXifuNTNSVIID4X0hDwXuz36Lk+4Jw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/build-optimizer": "0.800.6", + "@angular-devkit/build-webpack": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@ngtools/webpack": "8.0.6", + "ajv": "6.10.0", + "autoprefixer": "9.5.1", + "browserslist": "4.5.5", + "caniuse-lite": "1.0.30000974", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", + "file-loader": "3.0.1", + "glob": "7.1.3", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.1.1", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.6.0", + "minimatch": "3.0.4", + "open": "6.2.0", + "parse5": "4.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "1.0.0", + "rxjs": "6.4.0", + "sass": "1.19.0", + "sass-loader": "7.1.0", + "semver": "6.0.0", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.12", + "speed-measure-webpack-plugin": "1.3.1", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.3", + "tree-kill": "1.2.1", + "webpack": "4.30.0", + "webpack-dev-middleware": "3.6.2", + "webpack-dev-server": "3.3.1", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.1.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "@ngtools/webpack": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.6.tgz", + "integrity": "sha512-ulu+5lLt4RjmcCXbmaGCjqjuOWt18DVek/Sq4HFE9E7zP+n7HercsU6h+9PrtaZThj9NB0B7A+afRB5aAQN/bQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + } + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "webpack": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.800.6.tgz", + "integrity": "sha512-f8u9c5VA+bxbYREKX6EY8QsbIT8ziDRHlhJ1n6H2nUTaQi+THtbPfrDsf3S3aVACfkkY+LEGGl135XEPr5PoxA==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.4.4", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "typescript": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.800.6.tgz", + "integrity": "sha512-FwNGa99dxL9dACv/eLTP6u50tlPLG01yqp/JFAgxS0OmDkEMjSBLNgS8b8qhTo8XMhMsMWzb8yIUwV1PcSj6qg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0", + "webpack-merge": "4.2.1" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.3.tgz", + "integrity": "sha512-Q5+jw2JQ7xfrDbo1VYH2cr+NysGV+psZ1TtC9eoVJ44fp8pCQAnvGJkeT7eLVEgMrpoBorUy7nqebCOR3WnkXA==", + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.6.tgz", + "integrity": "sha512-FGPcVKxNvtdFB0A6oHyxtWeugL83nW+kPATlAimgh1hu7TCP94dDpflCV9o/lgZlH817xTYXrhToXJaMZSnDPw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.0.2.tgz", + "integrity": "sha512-6buaGp6sgyLWbjioGU0Wp/O9nFEQqD2L18uX5g5P5hdpq0bgopAbBee7AefJ8Kc/Kf79FlaKu9fKP5AEkeC8tA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.0.1.tgz", + "integrity": "sha512-Ul7rVU/rr4qGHs1w24P/6MHEosYp8AHRxBHrp/yJ50eHbHVS31FyfO8gKfNqPc1bnL1YoYYCs0hIBwNDaz8uDg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + } + }, + "@angular/cli": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.6.tgz", + "integrity": "sha512-COBpeoXyLt8FiOhsmoEnDfQcm0aTdUSUHsH3zNkVTcyxpRzZVspTDGzxhK0UsCpddXS/MMjJiXph6SJ1el3qaQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@schematics/angular": "8.0.6", + "@schematics/update": "0.800.6", + "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.3.1", + "npm-package-arg": "6.1.0", + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/common": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.0.2.tgz", + "integrity": "sha512-9lwrKso0XjyS7wu+8dEWa5yN1kCTdbelP6JElFhh0kAt0TbPVHJ/dXEwvIFk9/2MjYv2PbooQo1zsc5kAB2Rlg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.0.2.tgz", + "integrity": "sha512-ktobrxpWX1eCwbDKOIUm5GRj8WGlHW/8MAQvDDFUnsGqXBHfOGiaySiEYX/XjeN8qu34IfXs736QkdzpMM4+iw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.0.2.tgz", + "integrity": "sha512-9jdpB8WC47oSgQ/jA+ExTYqbe4xw3ZCEhgLhPd8BQukBOHodaIHKnkinrVJAPZORpY1CKRaImoAHieSvRhiPjA==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "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" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.0.2.tgz", + "integrity": "sha512-g8BRvGZxTXb5GZ/xoC5Z94DGK3wMiD2jbmEQEbXGNM+c8E/Mo/W8GF44P7EU2d+V1oJoUh75SRK6U/StC+rLqA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.0.2.tgz", + "integrity": "sha512-LGu3b/wjNMCki5PnMUsfQlyaVZVOedNO+XccfluP4ZBQ5G/E2cz2tJ0UIHg3RhLbbpWntmqokpYLyd7leUPpIQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.0.2.tgz", + "integrity": "sha512-oFB6KhHJVfVcLt4rmJHeZyPSnb+OdzN2CmmCxxnG7TXP73wvycnqVQ2pbcAsyRGj1759+DnY9X3VpJGhlc7H4Q==", + "dev": true + }, + "@angular/material": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.0.1.tgz", + "integrity": "sha512-BozIS+9yiqFTfXBoZfhFUibY8meDUcv/e+CxhSHyv3vZw9XVTNTbiaX7tX/FX0Ai+1VKnwRTGrKvPKGFSqynCA==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/platform-browser": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.0.2.tgz", + "integrity": "sha512-iUoyhJ81jqvpmQI6Lu5NzRZR8azmnb2kX2FQ+LbwCvWQLfkLbTaa/Jl09/qN6KWpTsMogNQXVnjjgwoeaObvBw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.2.tgz", + "integrity": "sha512-i9hBmcXauiQpvzRRNbBpMbQSsRh9YMv9phw9Ih54w2LdTUB64Vtrm3scQEWZ0sIONY3QbwEtu57k8euQPASErQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.0.2.tgz", + "integrity": "sha512-kgSqkvx3cgY0+ZTzkBVLa0sf0y0Fl7q3N+KX746pbCNjRRGa5gBkN7z+oyPDoG1l0fEiM6NLbFfcmuFwsdBO5w==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@ngtools/webpack": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.3.tgz", + "integrity": "sha512-sV/0dumyQdJhz2hNNAh2EtCtSjADD7735YhagqGjZhTWaiUnVTdF0pjFUUTmnw/hTFSqjUPWQy9V1cvUuK6Fmw==", + "requires": { + "@angular-devkit/core": "8.0.3", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.6.tgz", + "integrity": "sha512-F0/MrbvrJQJIjt0GwEkmf9PZUX0xQlCjlDcH6U7yBni0/+R5Gd5g3G0f12fsSa2iAwpwrLkKpiQluj29eFituQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/update": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.6.tgz", + "integrity": "sha512-vrzGIJtMiwLWl96+aJXMYrPgPtktLRpY8ZiNnlLm3pMDmeg08uButRh/pQGt02HuO/apTNJ5g0bmG8K5wS4I5A==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.16.tgz", + "integrity": "sha512-056oRlBBp7MDzr+HoU5su099s/s7wjZ3KcHxLfv+Byqb9MwdLUvsfLgw1VS97hsh3ddxSPyQu+olHMnoVTUY6g==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", + "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", + "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.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "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" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "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-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "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=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.14", + "postcss-value-parser": "^3.3.1" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "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" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "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" + } + }, + "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" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "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=", + "dev": true, + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "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==", + "dev": true + }, + "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=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "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==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", + "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "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" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", + "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "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.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw==", + "dev": true, + "requires": { + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "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=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.366", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.366.tgz", + "integrity": "sha512-MWtwlJaX/MqAH4V7j4pFasq2O4OIH7MltGTEVvzyeuUW+CPYsx+fuVg/MSBrTL4PzZjHidOixaELNy75/XFK1g==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.0.tgz", + "integrity": "sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + } + }, + "engine.io-client": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", + "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "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=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "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" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "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-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=" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "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" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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.6", + "bundled": true, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "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" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "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 + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", + "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "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" + } + }, + "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==", + "dev": true, + "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" + } + }, + "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==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + } + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.6.tgz", + "integrity": "sha512-WFh77RI8bMIKdOvI/1/IBmgnM+Q7NOLhnwG91QJrM8lW+CIXCjTzhhUsT/svLvAkLmR10uWY4RyYbHMLkTglvg==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "license-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "ngx-cookie-service": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-2.4.0.tgz", + "integrity": "sha512-uR/6mCQ1t+XY5G1/irqRhoEddx1PPtmz7JHM/2nn5yQmicnj+n48x8C2PMxwaYDHKRh7QPQ9G5scR36Mmdz09A==" + }, + "ngx-stars": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ngx-stars/-/ngx-stars-1.4.3.tgz", + "integrity": "sha512-aTdCCK+eXTADDQY2HQYgYdt0cg1Vtcxd3pV8t1uze0nnmhp5L+giLGJyehio7IWU08zl2578j7C0JGKIXagNwA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz", + "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "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" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", + "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz", + "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", + "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "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" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.19.0.tgz", + "integrity": "sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + } + } + }, + "socket.io-parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.0.tgz", + "integrity": "sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "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" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tsickle": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.35.0.tgz", + "integrity": "sha512-irsZLX4293YUl9TuwNC5Fy020eLSc4bC3LfKnxnx1oq5wmZD9zSP8qvNNTiwRmf2/rxH+58JINcTARDjuvn+oQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map": "^0.7.3" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz", + "integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==" + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.4.tgz", + "integrity": "sha512-5fqgBPLgVHZ/fVvqRhhUp9YUiGXhFJ9ZkrZWD9vQtFBR4QIGTnbsb+/kKqSqfgp3WnBwGWAFnedGTtmX1YTn0w==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", + "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz", + "integrity": "sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.5", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.0", + "express": "^4.16.4", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.2.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.6.2", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", + "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", + "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/coney-chat/package.json b/coney-chat/package.json new file mode 100644 index 0000000..61b1944 --- /dev/null +++ b/coney-chat/package.json @@ -0,0 +1,62 @@ +{ + "name": "coney-chat", + "version": "1.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --configuration=production --base-href=/coney/chat/", + "build-docker": "ng build --configuration=docker --base-href=/coney/chat/", + "build-upm": "ng build --configuration=upm --base-href=/chat/", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": false, + "dependencies": { + "@angular/animations": "8.0.2", + "@angular/cdk": "8.0.1", + "@angular/common": "8.0.2", + "@angular/compiler": "8.0.2", + "@angular/core": "8.0.2", + "@angular/forms": "8.0.2", + "@angular/material": "8.0.1", + "@angular/platform-browser": "8.0.2", + "@angular/platform-browser-dynamic": "8.0.2", + "@angular/router": "8.0.2", + "@ngtools/webpack": "8.0.3", + "babel-polyfill": "6.26.0", + "core-js": "^2.6.9", + "crypto-js": "^3.1.9-1", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ngx-cookie-service": "^2.2.0", + "ngx-stars": "^1.4.3", + "rxjs": "^6.5.2", + "socket.io": "^2.2.0", + "tslib": "1.10.0", + "typescript": "3.4.2", + "zone.js": "0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "0.800.6", + "@angular/cli": "8.0.6", + "@angular/compiler-cli": "8.0.2", + "@angular/language-service": "8.0.2", + "@types/jasmine": "~2.8.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "^5.1.0", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.6", + "karma-jasmine": "~1.1.2", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tsickle": "^0.35.0", + "tslint": "~5.11.0", + "webpack": "^4.38.0" + } +} diff --git a/coney-chat/src/app/answer-checkbox/answer-checkbox.component.css b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.css new file mode 100644 index 0000000..73ca416 --- /dev/null +++ b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.css @@ -0,0 +1,25 @@ +.btn.answerOp{ + text-transform: none; + background: white; + text-align: center; + border-radius: 30px; + width: 100%; + margin: 0px; +} + +#inner-container{ + width: 100%; + position: relative; +} + +.mat-option{ + font-size: 15px!important; +} +.mat-select-value { + font-size: 23px!important; +} + +#btnDiv{ + flex-flow: column; + display:flex; +} diff --git a/coney-chat/src/app/answer-checkbox/answer-checkbox.component.html b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.html new file mode 100644 index 0000000..4ce094a --- /dev/null +++ b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.html @@ -0,0 +1,18 @@ +
+
+
+
+
+ {{val.text}} + {{ val.text.substr(4, val.length) }} +
+
+
+ +
+ +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-checkbox/answer-checkbox.component.spec.ts b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.spec.ts new file mode 100644 index 0000000..a81a6b0 --- /dev/null +++ b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerCheckboxComponent } from './answer-checkbox.component'; + +describe('AnswerCheckboxComponent', () => { + let component: AnswerCheckboxComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerCheckboxComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerCheckboxComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-checkbox/answer-checkbox.component.ts b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.ts new file mode 100644 index 0000000..88d0e26 --- /dev/null +++ b/coney-chat/src/app/answer-checkbox/answer-checkbox.component.ts @@ -0,0 +1,71 @@ +import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core'; +import { FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms'; + +@Component({ + selector: 'app-answer-checkbox', + templateUrl: './answer-checkbox.component.html', + styleUrls: ['./answer-checkbox.component.css'] +}) +export class AnswerCheckboxComponent implements OnInit { + + @Input() answers: [{ value: number, text: string }]; + @Output() sendAnswer = new EventEmitter(); + + values: any; + valueFormGroup: FormGroup; + selected: any; + answerList= []; + last: any = {}; + disabled = false; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + + console.log(this.answers); + for(var i = 0; ithis.valueFormGroup.get('answerList') as FormArray; + + if(dis && !this.disabled){ + this.disabled = true; + } else { + this.disabled = false; + } + + if(event.checked) { + values.push(new FormControl(event.source.value)) + } else { + const i = values.controls.findIndex(x => x.value === event.source.value); + values.removeAt(i); + } + console.log(values); + } + + callParent() { + if(this.disabled == true){ + var disabledResult = [this.last]; + this.sendAnswer.emit(disabledResult); + } else if (this.valueFormGroup.value.answerList.length != 0) { + this.sendAnswer.emit(this.valueFormGroup.value.answerList); + } + + } + +} diff --git a/coney-chat/src/app/answer-emoji/answer-emoji.component.css b/coney-chat/src/app/answer-emoji/answer-emoji.component.css new file mode 100644 index 0000000..27094c9 --- /dev/null +++ b/coney-chat/src/app/answer-emoji/answer-emoji.component.css @@ -0,0 +1,24 @@ +#inner-container{ + width: 100%; + margin-top: 3%; + margin-bottom: 3%; +} + +#emojiValue{ + font-size: .875rem; + text-decoration: none; + text-transform: uppercase; + width: 100%; + text-align: center; + font-weight: 500; +} + +.emoji-btn{ + padding: 0%; + font-size: 35px; + transition: all .05s linear; +} + +#emoji-row{ + padding: 0% 6%; +} diff --git a/coney-chat/src/app/answer-emoji/answer-emoji.component.html b/coney-chat/src/app/answer-emoji/answer-emoji.component.html new file mode 100644 index 0000000..e20bc4c --- /dev/null +++ b/coney-chat/src/app/answer-emoji/answer-emoji.component.html @@ -0,0 +1,71 @@ +
+
+
+

{{displayValue}}

+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-emoji/answer-emoji.component.spec.ts b/coney-chat/src/app/answer-emoji/answer-emoji.component.spec.ts new file mode 100644 index 0000000..1aa213f --- /dev/null +++ b/coney-chat/src/app/answer-emoji/answer-emoji.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerEmojiComponent } from './answer-emoji.component'; + +describe('AnswerEmojiComponent', () => { + let component: AnswerEmojiComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerEmojiComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerEmojiComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-emoji/answer-emoji.component.ts b/coney-chat/src/app/answer-emoji/answer-emoji.component.ts new file mode 100644 index 0000000..7703179 --- /dev/null +++ b/coney-chat/src/app/answer-emoji/answer-emoji.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'app-answer-emoji', + templateUrl: './answer-emoji.component.html', + styleUrls: ['./answer-emoji.component.css'] +}) +export class AnswerEmojiComponent implements OnInit { + + @Input() answers: [{ value: number, text: string }]; + @Input() numberOfAnswers: number; + @Output() sendAnswer = new EventEmitter(); + + text = ["Really bad", "Bad", "Neutral", "Good", "Really good"]; + response = { value: 0, text: "" }; + displayValue = "Select one"; + + constructor() { } + + ngOnInit() { + if (this.answers != undefined) { + this.answers.forEach(ans => { + this.text[ans.value - 1] = ans.text; + }); + } + } + + emojiSelected(event: MouseEvent, value: any) { + + var items = document.getElementsByClassName("emoji-btn"); + for (var i = 0; i < items.length; i++) { + var b: any; b = items[i]; + b.style.padding = "0%"; + b.style.fontSize = "35px"; + b.style.marginTop = "5px"; + b.style.marginBottom = "5px"; + } + + var btn: any; + btn = event.srcElement; + btn.style.padding = "0% 20%!important"; + btn.style.fontSize = "45px"; + btn.style.marginTop = "-5px"; + btn.style.marginBottom = "0px"; + + this.response.value = value; + this.response.text = this.answers[value - 1].text; + this.displayValue = this.response.text; + } + + callParent() { + if (this.response.value != 0) { + this.sendAnswer.emit(this.response); + } + } + +} diff --git a/coney-chat/src/app/answer-option/answer-option.component.css b/coney-chat/src/app/answer-option/answer-option.component.css new file mode 100644 index 0000000..d1fbc07 --- /dev/null +++ b/coney-chat/src/app/answer-option/answer-option.component.css @@ -0,0 +1,19 @@ +#answer-comp{ + margin: 0px; +} +.answerOp{ + color: #50505b; + border-radius: 4px; + font-weight: 500; + border: 1px solid #b2b8c7; + margin: 0px; +} + +.answerOp:hover{ + background: rgba(245, 245, 245, 0.781); +} + +#btnDiv{ + flex-flow: column; + display:flex; +} diff --git a/coney-chat/src/app/answer-option/answer-option.component.html b/coney-chat/src/app/answer-option/answer-option.component.html new file mode 100644 index 0000000..363b69f --- /dev/null +++ b/coney-chat/src/app/answer-option/answer-option.component.html @@ -0,0 +1,8 @@ +
+
+
+ +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-option/answer-option.component.spec.ts b/coney-chat/src/app/answer-option/answer-option.component.spec.ts new file mode 100644 index 0000000..c64166d --- /dev/null +++ b/coney-chat/src/app/answer-option/answer-option.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerOptionComponent } from './answer-option.component'; + +describe('AnswerOptionComponent', () => { + let component: AnswerOptionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerOptionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerOptionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-option/answer-option.component.ts b/coney-chat/src/app/answer-option/answer-option.component.ts new file mode 100644 index 0000000..8dd330a --- /dev/null +++ b/coney-chat/src/app/answer-option/answer-option.component.ts @@ -0,0 +1,34 @@ +import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-answer-option', + templateUrl: './answer-option.component.html', + styleUrls: ['./answer-option.component.css'] +}) +export class AnswerOptionComponent implements OnInit{ + + @Input() answers: [{ value: number, text: string }]; + @Input() numberOfAnswers: number; + @Output() sendAnswer = new EventEmitter(); + + + response = { value: 0, text: "" }; + length = 0; + + constructor() { + } + + ngOnInit(){ + this.length = this.answers.length; + } + + callParent(answer: any) { + if (answer != undefined) { + + this.response.value = answer.value; + this.response.text = answer.text; + + this.sendAnswer.emit(this.response); + } + } +} \ No newline at end of file diff --git a/coney-chat/src/app/answer-scale/answer-scale.component.css b/coney-chat/src/app/answer-scale/answer-scale.component.css new file mode 100644 index 0000000..d60f4be --- /dev/null +++ b/coney-chat/src/app/answer-scale/answer-scale.component.css @@ -0,0 +1,23 @@ +#answer-comp{ + margin: 0px; + padding: 10px; +} +.scale#answer-comp{ + padding-top:0px!important; +} + +#inner-container{ + margin-top: 3%; + margin-bottom: 3%; +} + +.star { + font-size: 1.5rem; + color: #b2b8c7; + border-color: #b2b8c7; + } + .filled { + color: #b2b8c7; + border-color: #b2b8c7; + } + diff --git a/coney-chat/src/app/answer-scale/answer-scale.component.html b/coney-chat/src/app/answer-scale/answer-scale.component.html new file mode 100644 index 0000000..60f9dc4 --- /dev/null +++ b/coney-chat/src/app/answer-scale/answer-scale.component.html @@ -0,0 +1,21 @@ +
+
+
+ + + + +
+ +
+ + + + +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-scale/answer-scale.component.spec.ts b/coney-chat/src/app/answer-scale/answer-scale.component.spec.ts new file mode 100644 index 0000000..76c750e --- /dev/null +++ b/coney-chat/src/app/answer-scale/answer-scale.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerScaleComponent } from './answer-scale.component'; + +describe('AnswerScaleComponent', () => { + let component: AnswerScaleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerScaleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerScaleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-scale/answer-scale.component.ts b/coney-chat/src/app/answer-scale/answer-scale.component.ts new file mode 100644 index 0000000..e6ebe4f --- /dev/null +++ b/coney-chat/src/app/answer-scale/answer-scale.component.ts @@ -0,0 +1,49 @@ +import { Component, Input, Output, EventEmitter} from '@angular/core'; + +@Component({ + selector: 'app-answer-scale', + templateUrl: './answer-scale.component.html', + styleUrls: ['./answer-scale.component.css'] +}) +export class AnswerScaleComponent{ + + + @Input() answers: [{value: number, text: string}]; + @Output() sendAnswer = new EventEmitter(); + + selected = 0; + hovered = 0; + size = 2; + response = {selected: 0, value: 0, text: "", tot: 0}; + + starIcons = { + empty: 'assets/star_empty.svg', + half: 'assets/star_half.svg', + full: 'assets/star_full.svg', +} + + constructor() { + this.selected = 0; + this.hovered = 0; + } + + ngOnChanges(){ + if(this.answers.length>7){ + this.size = 1; + } + } + + onRatingSet($event){ + this.selected = $event; + } + + callParent(value: any) { + if(this.selected == 0) {return;} + this.response.selected = this.selected; + this.response.value = value.value; + this.response.text = value.text; + this.response.tot = this.answers.length; + this.sendAnswer.emit(this.response); + } + +} \ No newline at end of file diff --git a/coney-chat/src/app/answer-select/answer-select.component.css b/coney-chat/src/app/answer-select/answer-select.component.css new file mode 100644 index 0000000..a346ea1 --- /dev/null +++ b/coney-chat/src/app/answer-select/answer-select.component.css @@ -0,0 +1,11 @@ +.mat-option{ + font-size: 15px!important; +} +.mat-select-value { + font-size: 23px!important; +} + +#btnDiv{ + flex-flow: column; + display:flex; +} \ No newline at end of file diff --git a/coney-chat/src/app/answer-select/answer-select.component.html b/coney-chat/src/app/answer-select/answer-select.component.html new file mode 100644 index 0000000..90e9f20 --- /dev/null +++ b/coney-chat/src/app/answer-select/answer-select.component.html @@ -0,0 +1,18 @@ +
+
+
+ + + + {{answer.text}} + + + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-select/answer-select.component.spec.ts b/coney-chat/src/app/answer-select/answer-select.component.spec.ts new file mode 100644 index 0000000..cb33937 --- /dev/null +++ b/coney-chat/src/app/answer-select/answer-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerSelectComponent } from './answer-select.component'; + +describe('AnswerSelectComponent', () => { + let component: AnswerSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-select/answer-select.component.ts b/coney-chat/src/app/answer-select/answer-select.component.ts new file mode 100644 index 0000000..77ea40d --- /dev/null +++ b/coney-chat/src/app/answer-select/answer-select.component.ts @@ -0,0 +1,29 @@ +import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-answer-select', + templateUrl: './answer-select.component.html', + styleUrls: ['./answer-select.component.css'] +}) +export class AnswerSelectComponent implements OnInit { + + @Input() answers: [{ value: number, text: string }]; + @Input() numberOfAnswers: number; + @Output() sendAnswer = new EventEmitter(); + + response = { value: 0, text: "" }; + + constructor() { } + + ngOnInit() { + + } + + callParent() { + + if (!(this.response.text == "" && this.response.value== 0)) { + this.sendAnswer.emit(this.response); + } + } + +} diff --git a/coney-chat/src/app/answer-slide/answer-slide.component.css b/coney-chat/src/app/answer-slide/answer-slide.component.css new file mode 100644 index 0000000..c5ed3ef --- /dev/null +++ b/coney-chat/src/app/answer-slide/answer-slide.component.css @@ -0,0 +1,7 @@ +.minmax-val{ + font-size: .875rem; + text-decoration: none; + text-transform: uppercase; + text-align: center; + font-weight: 500; +} diff --git a/coney-chat/src/app/answer-slide/answer-slide.component.html b/coney-chat/src/app/answer-slide/answer-slide.component.html new file mode 100644 index 0000000..9ffa6cc --- /dev/null +++ b/coney-chat/src/app/answer-slide/answer-slide.component.html @@ -0,0 +1,28 @@ + +
+
+
+ + +
+

{{minLabel}}

+
+
+

{{maxLabel}}

+
+
+
+ + + + +
+
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-slide/answer-slide.component.spec.ts b/coney-chat/src/app/answer-slide/answer-slide.component.spec.ts new file mode 100644 index 0000000..7b32da7 --- /dev/null +++ b/coney-chat/src/app/answer-slide/answer-slide.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerSlideComponent } from './answer-slide.component'; + +describe('AnswerSlideComponent', () => { + let component: AnswerSlideComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerSlideComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerSlideComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-slide/answer-slide.component.ts b/coney-chat/src/app/answer-slide/answer-slide.component.ts new file mode 100644 index 0000000..fae734b --- /dev/null +++ b/coney-chat/src/app/answer-slide/answer-slide.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'app-answer-slide', + templateUrl: './answer-slide.component.html', + styleUrls: ['./answer-slide.component.css'] +}) +export class AnswerSlideComponent implements OnInit { + + @Input() answers: [{value: number, text: string}]; + @Input() numberOfAnswers: number; + @Output() sendAnswer = new EventEmitter(); + + max = 5; + min = 1; + maxLabel = "Max"; + minLabel = "Min"; + value = 1; + showTicks = false; + step = 1; + response = {value: 0, text: "", tot: 0}; + touched = false; + + + constructor() {} + + ngOnInit() { + + this.max = Math.max.apply(Math, this.answers.map(function(o) { return o.value; })); + this.min = Math.min.apply(Math, this.answers.map(function(o) { return o.value; })); + this.value = this.answers.length/2; + this.value += 0.5; + + this.answers.forEach(element => { + if(element.value == this.min){ + if(element.text!=undefined && element.text != ""){ + this.minLabel = element.text; + } + } else if(element.value == this.max){ + if(element.text!=undefined && element.text != ""){ + this.maxLabel = element.text; + } + } + }); + } + + callParent() { + var answerFinal = this.answers.find(d => d.value === this.value); + + if(answerFinal.text != undefined && answerFinal.text != ""){ + this.response.text = answerFinal.text; + } else{ + this.response.text = this.value+""; + } + + this.response.value = this.value; + this.response.tot = this.max; + this.sendAnswer.emit(this.response); + } + + changedSlide(){ + this.touched = true; + } +} diff --git a/coney-chat/src/app/answer-text/answer-text.component.css b/coney-chat/src/app/answer-text/answer-text.component.css new file mode 100644 index 0000000..d3b6999 --- /dev/null +++ b/coney-chat/src/app/answer-text/answer-text.component.css @@ -0,0 +1,12 @@ +#answer-comp{ + margin: 0px; +} + +#send-btn{ + width:100%; +} + +#text-answer{ + background-image: linear-gradient(0deg,#ffdc06 2px,rgba(0,150,136,0) 0),linear-gradient(0deg,rgba(0,0,0,.26) 1px,transparent 0); +} + diff --git a/coney-chat/src/app/answer-text/answer-text.component.html b/coney-chat/src/app/answer-text/answer-text.component.html new file mode 100644 index 0000000..f35a95d --- /dev/null +++ b/coney-chat/src/app/answer-text/answer-text.component.html @@ -0,0 +1,40 @@ +
+
+ + + + + + + + Number + + + + + Date + + + + + Time + + + + + Link + + + +
+
+ + + + +
+
\ No newline at end of file diff --git a/coney-chat/src/app/answer-text/answer-text.component.spec.ts b/coney-chat/src/app/answer-text/answer-text.component.spec.ts new file mode 100644 index 0000000..9b0b5f4 --- /dev/null +++ b/coney-chat/src/app/answer-text/answer-text.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnswerTextComponent } from './answer-text.component'; + +describe('AnswerTextComponent', () => { + let component: AnswerTextComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnswerTextComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnswerTextComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-chat/src/app/answer-text/answer-text.component.ts b/coney-chat/src/app/answer-text/answer-text.component.ts new file mode 100644 index 0000000..3d21762 --- /dev/null +++ b/coney-chat/src/app/answer-text/answer-text.component.ts @@ -0,0 +1,43 @@ +import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-answer-text', + templateUrl: './answer-text.component.html', + styleUrls: ['./answer-text.component.css'] +}) +export class AnswerTextComponent implements OnInit { + + @Output() sendAnswer = new EventEmitter(); + @Input() answerType: string; + + showSkip = true; + inputText=""; + + constructor() { + } + + ngOnInit() { + console.log(this.answerType); + } + + callParent() { + if (this.inputText != "") { + this.inputText.toString().trim(); + this.sendAnswer.emit(this.inputText.toString()); + this.inputText = ""; + } + } + + skipQuestion() { + this.sendAnswer.emit("skip"); + } + + edited() { + if (this.inputText == "") { + this.showSkip = true; + } else { + this.showSkip = false; + } + } + +} \ No newline at end of file diff --git a/coney-chat/src/app/chat.component.css b/coney-chat/src/app/chat.component.css new file mode 100644 index 0000000..f216624 --- /dev/null +++ b/coney-chat/src/app/chat.component.css @@ -0,0 +1,195 @@ +/* +STRUCTURE: +CHAT-CONTAINER + CHAT + TITLE-BOX + CHAT-CONTENT + message + INPUT-AREA +*/ + +/*CHAT-CONTAINER*/ +#chat-container { + height: 100vh; + max-width: 550px; +} + +/*CHAT*/ +#chat{ + width: 100%; + background-size: auto; + position: relative; + padding: 3px; + border-radius: 3px; + height: 100%; + display: flex; + flex-flow: column; + display: none; + box-shadow: 0px 2px 3px 2px rgba(10,16,20,.24); +} + +/*CHAT-CONTENT*/ +#chat-content{ + flex: 2; + overflow: auto; + overflow-y: scroll; + margin: 0px!important; + padding: 0rem 0rem 1rem 0rem; + max-height: 900px; + transition: all 0.2s linear; + background: url(../assets/pattern.png); +} + + +/*CHAT-INTRO-CONTAINER*/ +#chat-intro-container{ + box-shadow: 0px 2px 3px 2px rgba(10,16,20,.24); + background: white; +} + +/*CHAT-INTRO*/ +#chat-intro{ + width: 100%; + background-size: auto; + position: relative; + border-radius: 3px; + height: 100%; + display: flex; + flex-flow: column; + box-shadow: 0px 2px 3px 2px rgba(10,16,20,.24); + z-index: 100; + background: url(../assets/pattern.png); +} + + +/*TITLE-BOX*/ +#title-box{ + background: #f5f7f9; + border-bottom: 2px solid #E8E8E8; + margin: 4px; + padding: 0% 3%; + border-radius: 4px; +} + +#title{ + font-size: .875rem; + text-decoration: none; + text-transform: uppercase; + color: #333333; + font-weight: 500; +} + +#prName{ + font-size: 1.1rem; + color: #b2b8c7; + font-weight: 550; + text-transform: capitalize; +} +#convTitle{ + color: #50505b; + font-weight: 550; + text-transform: capitalize; +} + +/*INPUT-AREA*/ +#input-area{ + bottom: 0; + width:99.9%; + box-sizing: border-box; + transition: all 0.2s ease-out; + min-height: 0%; + max-height: 50vh; +} + +/*ANSWER*/ + +.answer{ + width: fit-content; + text-align: left; + padding: 10px; + margin-left:auto; margin-right:2px; + background: #e2ffc9; + border-radius: 30px 30px 3px 30px; + max-width: 70%; + box-shadow: 0 2px 2px rgba(10,16,20,.24), 0 0 2px rgba(10,16,20,.12); +} + + +/*GENERIC*/ +@media only screen and (max-width: 600px) { + .container { + padding: 0px!important; + } +} + +p{ + margin: 0px; +} + +ul { + padding: 0px; + list-style-type: none; + } + +.d-inline-flex > span { + font-size: 25px!important; +} + +/* Loading animation */ +.lds-ellipsis { + display: inline-block; + position: relative; + width: 64px; + height: 28px; +} +.lds-ellipsis div { + position: absolute; + top: 50%; + width: 8px; + height: 8px; + border-radius: 50%; + background: #000; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} +.lds-ellipsis div:nth-child(1) { + left: 6px; + animation: lds-ellipsis1 0.6s infinite; +} +.lds-ellipsis div:nth-child(2) { + left: 6px; + animation: lds-ellipsis2 0.6s infinite; +} +.lds-ellipsis div:nth-child(3) { + left: 26px; + animation: lds-ellipsis2 0.6s infinite; +} +.lds-ellipsis div:nth-child(4) { + left: 45px; + animation: lds-ellipsis3 0.6s infinite; +} +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0); + } +} +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(19px, 0); + } +} + + diff --git a/coney-chat/src/app/chat.component.html b/coney-chat/src/app/chat.component.html new file mode 100644 index 0000000..702277d --- /dev/null +++ b/coney-chat/src/app/chat.component.html @@ -0,0 +1,179 @@ + +
+
+ +
+
+
+

{{projectName}}

+
{{currentConversationTitle}}
+
+ +
+
+ + + + + +
+ +
+ +
+ + + +
+
+
{{doneConversation}}
+
+
+ +
+
+ +
+
+
+
+
    +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+ +
+ +
+
+ +

{{currentConversationTitle}}

+
+

+ {{privacyNotice}} +
+ Privacy Notice +

+
+ +
+ + Language + + + {{language.lang}} + + + +
+ {{defaultLanguage.lang}}
+ + + + +

{{consentText}}

+
+ +
+
{{somethingWrongText}}
+
{{errorMessageMainScreen}}
+
+ +
+
+ + +
+ + \ No newline at end of file diff --git a/coney-chat/src/app/chat.component.spec.ts b/coney-chat/src/app/chat.component.spec.ts new file mode 100644 index 0000000..b74e400 --- /dev/null +++ b/coney-chat/src/app/chat.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ChatComponent } from './chat.component'; + +describe('ChatComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + ChatComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(ChatComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'coney-chat'`, () => { + const fixture = TestBed.createComponent(ChatComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('coney-chat'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(ChatComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to coney-chat!'); + }); +}); diff --git a/coney-chat/src/app/chat.component.ts b/coney-chat/src/app/chat.component.ts new file mode 100644 index 0000000..530aa03 --- /dev/null +++ b/coney-chat/src/app/chat.component.ts @@ -0,0 +1,804 @@ +import { Component, OnInit, Input, ViewChild, ElementRef, AfterViewChecked, HostListener } from '@angular/core'; +import { ChatBackendService } from './services/backend.service'; +import { Block } from './models/block'; +import { Params, ActivatedRoute } from '@angular/router'; +import { ENUM_IT_STRINGS, ENUM_EN_STRINGS } from './models/strings.model' +import * as CryptoJS from 'crypto-js'; + +import $ from "jquery"; +import { CookieService } from 'ngx-cookie-service'; +import { MatDialog } from '@angular/material'; +import { CookieConsentComponent } from './cookie-consent-dialog/cookie-consent.component'; +import { environment } from 'src/environments/environment'; +import { Title } from '@angular/platform-browser'; + + + +@Component({ + selector: 'app-coney-root', + templateUrl: './chat.component.html', + styleUrls: ['./chat.component.css'] +}) +export class ChatComponent implements OnInit, AfterViewChecked { + + @Input() conv_id: string; + @Input() userId: string; + + title = 'coney-chat'; + + @ViewChild('chatContent', { static: false }) comment: ElementRef; + @ViewChild('scrollMe', { static: false }) private myScrollContainer: ElementRef; + scrolltop: number = null; + + languageValue: any; + languages = [{ lang: "Afrikaans", tag: "af" }, { lang: "Albanian ", tag: "sp" }, { lang: "Arabic", tag: "ar" }, { lang: "Basque", tag: "eu" }, + { lang: "Byelorussian ", tag: "be" }, { lang: "Bulgarian", tag: "bg" }, { lang: "Catalan", tag: "va" }, { lang: "Croatian", tag: "hr" }, { lang: "Czech", tag: "cs" }, + { lang: "Danish", tag: "da" }, { lang: "Dutch", tag: "nl" }, { lang: "English", tag: "en" }, { lang: "Esperanto", tag: "eo" }, { lang: "Estonian", tag: "et" }, + { lang: "Finnish", tag: "fi" }, { lang: "Faronese", tag: "fo" }, { lang: "French", tag: "fr" }, + { lang: "Galician", tag: "gl" }, { lang: "German", tag: "de" }, { lang: "Greek", tag: "el" }, { lang: "Hebrew", tag: "he" }, { lang: "Hungarian", tag: "hu" }, + { lang: "Icelandic", tag: "is" }, { lang: "Italian", tag: "it" }, { lang: "Irish", tag: "ga" }, { lang: "Japanese", tag: "ja" }, { lang: "Korean", tag: "ko" }, + { lang: "Latvian", tag: "lv" }, { lang: "Macedonian", tag: "mk" }, { lang: "Maltese", tag: "mt" }, { lang: "Norwegian", tag: "nb" }, + { lang: "Polish", tag: "pl" }, { lang: "Portuguese", tag: "pt" }, { lang: "Romanian", tag: "ro" }, + { lang: "Russian", tag: "ru" }, { lang: "Scottish", tag: "gd" }, { lang: "Slovak", tag: "sk" }, { lang: "Slovenian", tag: "sl" }, + { lang: "Serbian", tag: "sr" }, { lang: "Spanish", tag: "es" }, { lang: "Swedish", tag: "sv" }, { lang: "Turkish", tag: "tr" }, { lang: "Ukranian", tag: "uk" }]; + getReqLanguages: any; + filteredLanguages: any; + defaultLanguage: any = { lang: "", tag: "" }; + + strings: any; + currentConversationId = ''; + currentConversationTitle = ''; + currentSessionId = ''; + errorMessageMainScreen = ''; + postData: JSON; + oldPostData: JSON; + olderPostData: JSON; + block: Block; + answers = []; + answerType = null; + showLogo = true; + questionType = ""; + numberOfAnswers = 0; + isLoading = true; + undoEnabled = false; + surveyEnded = false; + prevUserId: any; + convOnline: boolean; + cookieConsent = false; + conversationFinished = false; + + pastAnswers = false; + //TEST + //count = 0; + + encryptedData = ''; + projectId = null; + projectName = null; + noRepeat = false; + recreatingConv = false; + reSession = ""; + + //toBeTranslated + privacyNoticeLink = environment.privacyUrl; //"https://www.cefriel.com/en/privacy"; + privacyNotice: string; + startButtonText: string; + sendButtonText: string; + skipButtonText: string; + restartButtonText: string; + continueButtonText: string; + endButtonText: string; + endScreenButtonText: string; + doneConversation: string; + endScreenText: string; + consentText: string; + cookieText: string; + readMoreButtonText: string; + cookieAgreeButton: string; + wrongLinkText: string; + unableToLoadChatText: string; + somethingWrongText: string; + noSurveyChosenText: string; + surveyAlreadyCompetedText: string; + noPublishedSurvey: string; + + + + + constructor(private backend: ChatBackendService, + private route: ActivatedRoute, + private cookieService: CookieService, + public dialog: MatDialog, + private titleService: Title) { } + + //prevents page unload if there are changes to be saves + @HostListener('window:beforeunload', ['$event']) + unloadNotification($event: any) { + + if (!this.conversationFinished) { + if (this.userId == "preview") { + this.backend.deleteObject('/chat/deletePreview?conversationId=' + this.currentConversationId + "&session=" + this.currentSessionId).subscribe(json => { + $event.returnValue = true; + }); + } + } + } + + ngOnInit() { + + this.getBrowserLanguage(); + + this.cookieConsent = this.cookieService.get('cco') === "true"; + if (this.cookieConsent) { this.hideBanner(undefined); } + + this.currentConversationTitle = ''; + this.currentConversationId = ''; + this.currentSessionId = ''; + this.answerType = null; + this.postData = JSON.parse("{}"); + this.block = { + block_id: 0, + text: "", + value: 0, + link: "", + of_conversation: "", + block_type: "", + block_subtype: "" + }; + + this.answers = []; + this.route.queryParams.forEach((params: Params) => { + this.encryptedData = params['data']; + if (this.encryptedData != undefined) { + this.errorMessageMainScreen = ""; + var temp = this.encryptedData.replace(/ /g, '+'); + this.encryptedData = temp; + var decr = CryptoJS.AES.decrypt(this.encryptedData.trim(), "Cefriel").toString(CryptoJS.enc.Utf8); + var decrArray = decr.toString(CryptoJS.enc.Utf8).split("*&*"); + if (decrArray.length < 4) { + + document.getElementById("chat-intro").style.display = "none"; + document.getElementById("chat").style.display = "flex"; + this.publishErrorMessage(this.wrongLinkText); + this.errorMessageMainScreen = this.unableToLoadChatText; + this.convOnline = false; + this.isLoading = false; + } else { + this.userId = decrArray[0]; + this.projectId = decrArray[1]; + this.projectName = decrArray[2].replace("%26", "&"); + + this.currentConversationTitle = this.projectName; + this.titleService.setTitle(this.projectName); + this.conv_id = decrArray[3]; + + if (decrArray[4] != undefined && decrArray != null && decrArray[4] == "noRepeat") { + this.noRepeat = true; + } + + if (this.userId == "preview" && this.projectName == "preview") { + this.isLoading = false; + this.getReqLanguages = []; + + document.getElementById("chat-intro").style.display = "none"; + document.getElementById("chat").style.display = "flex"; + this.getConversation(1); + } else { + this.getLanguages(); + } + } + } else { + this.errorMessageMainScreen = this.noSurveyChosenText; + this.convOnline = false; + this.isLoading = false; + } + }); + } + + ngOnChanges() { + this.scrollToBottom(); + } + + getLanguages() { + this.defaultLanguage = { lang: "", tag: "" }; + this.getReqLanguages = []; + + let endpoint = '/chat/getLanguagesOfConversation?conversationId=' + this.conv_id; + this.backend.getRequest(endpoint).subscribe(res => { + this.getReqLanguages = JSON.parse(res); + this.filteredLanguages = []; + for (var i = 0; i < this.languages.length; i++) { + if (this.getReqLanguages.includes(this.languages[i].tag)) { + this.filteredLanguages.push(this.languages[i]); + } + } + + this.defaultLanguage = this.filteredLanguages[0]; + if (this.filteredLanguages.length == 1) { + this.languageValue = this.defaultLanguage; + } + + this.convOnline = true; + this.isLoading = false; + if (this.getReqLanguages.length == 0) { + this.errorMessageMainScreen = "Couldn't load the languages. Something went wrong..."; + } + this.getTitle(); + }, err => { + + this.isLoading = false; + }); + } + + getTitle() { + + let endpoint = '/chat/beginConversation'; + + endpoint = endpoint + '?conversationId=' + this.conv_id; + endpoint = endpoint + '&titleOnly=' + "true"; + endpoint = endpoint + '&restart=' + 0; + this.backend.getRequest(endpoint).subscribe(res => { + this.currentConversationTitle = res.toString(); + }); + } + + cookieReadMorePressed() { + console.log(this.languageValue); + const dialogRef = this.dialog.open(CookieConsentComponent, { + width: '400px', + maxHeight: '90vh', + data: { + lang: this.languageValue.tag + } + }); + dialogRef.afterClosed().subscribe(res => { + if (res != undefined && res == "agree") { + this.cookieService.set('cco', "true"); + this.hideBanner(undefined); + } + }); + } + + hideBanner(type: any) { + document.getElementById("bottom-cookie-banner").style.display = "none"; + + if (type != undefined) { + this.cookieService.set('cco', "true"); + } + } + + startSurvey() { + document.getElementById("chat-intro").style.display = "none"; + document.getElementById("chat").style.display = "flex"; + this.getConversation(0); + } + + ngAfterViewChecked() { + this.scrollToBottom(); + } + + scrollToBottom(): void { + try { + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + } catch (err) { + } + } + + getConversation(restart: number) { + + var popUp = document.getElementById("restartPU"); + popUp.style.display = "none"; + + let endpoint = '/chat/beginConversation'; + if (this.conv_id != null) { + endpoint = endpoint + '?conversationId=' + this.conv_id; + } + + endpoint = endpoint + '&lang=' + this.languageValue.tag; + + + if (this.userId != null && this.userId != "") { + endpoint = endpoint + '&userId=' + this.userId; + } else if (this.userId == null || this.userId == "") { + this.userId = this.cookieService.get("userId"); + + if (this.userId != undefined && this.userId.substr(0, 2) == "u_" && this.userId.length == 8) { + //It's random + endpoint = endpoint + '&userId=' + this.userId; + } + } + + if (this.projectId != null) { + endpoint = endpoint + '&projectId=' + this.projectId; + } + + var tmp = this.projectName.replace("&", "%26"); + if (this.projectName != null) { + endpoint = endpoint + '&projectName=' + tmp; + } + + + endpoint = endpoint + '&restart=' + restart; + if (restart == 1 || restart == 2) { + endpoint = endpoint + '&session=' + this.reSession; + } + + if (this.noRepeat) { + endpoint = endpoint + '&noRepeat=noRepeat'; + } + + this.backend.getRequest(endpoint).subscribe(res => { + const json = JSON.parse(res); + + if (json["re-session"] != undefined && this.userId != "preview") { + this.reSession = json["re-session"]; + this.restartPopUp(); + return; + } else if (restart == 2) { + this.recreatingConv = true; + } + + var conversationJson = json["conversation"]; + this.currentConversationId = conversationJson["conversationId"]; + this.currentConversationTitle = conversationJson["title"]; + + this.userId = json["userId"]; + + //sets the cookie + if (this.cookieConsent) { + this.cookieService.set('userId', this.userId); + } + + this.currentSessionId = json["session"]; + + var blocksJsonArray = json["blocks"]; + this.publishMessages(blocksJsonArray); + + this.convOnline = true; + + }, err => { + this.convOnline = false; + if (err.status == 405) { + this.publishErrorMessage(this.surveyAlreadyCompetedText); + this.errorMessageMainScreen = this.surveyAlreadyCompetedText; + } else { + this.publishErrorMessage(""); + this.errorMessageMainScreen = "I couldn't find any available surveys"; + } + return; + }); + } + + publishErrorMessage(text: string) { + var erritem = $('
  • ').addClass('chat-li coney').appendTo($('#chat-ul-list')).append($('

    ').text(text).addClass('coney-msg message error')); + //$('#chat-content').css("max-height", "90%"); + //$('#chat-content').css("padding-bottom", "10px"); + //$('#input-area').css("height", "1%"); + + //erritem[0].innerHTML += ''; + } + + continueConversation(undo: boolean, checkboxAnswers: any) { + + if (!undo) { + + this.postData["userId"] = this.userId; + this.postData["session"] = this.currentSessionId; + this.postData["conversationId"] = this.currentConversationId; + this.postData["answerType"] = this.block.block_subtype; + this.postData["blockId"] = this.block.block_id; + this.postData["redo"] = "false"; + this.postData["lang"] = this.languageValue.tag; + + + + if (checkboxAnswers == undefined) { + if (this.block.block_subtype == "multiple") { + this.postData["answer"] = this.block.value; + } else { + this.postData["answer"] = this.block.text; + } + } else { + this.postData["answer"] = checkboxAnswers; + } + + } else { + this.postData["redo"] = "true"; + this.undoEnabled = false; + this.answers = []; + this.answerType = null; + } + let endpoint = '/chat/continueConversation'; + this.backend.postRequest(endpoint, this.postData).subscribe(json => { + var blocksJsonArray = json["blocks"]; + this.publishMessages(blocksJsonArray); + }, err => { + this.surveyEnded = true; + }); + } + + sendAnswer(answer: any) { + this.recreatingConv = false; + if (this.answerType == "text" || this.answerType == "number" || this.answerType == "date" || this.answerType == "time" || this.answerType == "url") { + if (answer != "skip" && answer != "") { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(answer).addClass('answer message')); + } else { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text("-").addClass('answer message')); + } + this.block.text = answer; + } else if (this.answerType == "slider") { + var res = ""; + var temp = answer.value + ""; + + if (answer.text != "" && (answer.text != temp)) { + res = answer.text; + } else { + res = answer.value + "/" + answer.tot; + } + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(res).addClass('answer message')); + this.block.text = answer.text; + this.block.value = answer.value; + } else if (this.answerType == "star") { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(answer.selected + "/" + answer.tot + " ⭐").addClass('answer message')); + this.block.text = answer.text; + this.block.value = answer.value; + } else if (this.questionType == "checkbox") { + + for (var i = 0; i < answer.length; i++) { + var element = answer[i].text; + if (element.substr(0, 4) == "----") { + element = element.substr(4, element.length); + } + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(element).addClass('answer message')); + this.block.text = element; + } + + } else { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(answer.text).addClass('answer message')); + this.block.text = answer.text; + this.block.value = answer.value; + } + + this.undoEnabled = true; + + this.showLogo = true; + this.answers = []; + this.answerType = null; + + if (this.questionType == "checkbox") { + this.continueConversation(false, answer); + } else { + this.continueConversation(false, undefined); + } + } + + sendPastAswer(block: any) { + if (this.questionType == "text" || this.questionType == "open" || this.answerType == "single") { + if (block.text != "skip" && block.text != "") { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(block.text).addClass('answer message')); + } else { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text("-").addClass('answer message')); + } + } else if (this.questionType == "slider") { + + var res = ""; + var temp = block.text.value + ""; + + if (block.text != "" && (block.text != temp)) { + res = block.text; + } else { + res = block.value; + } + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(res).addClass('answer message')); + this.block.text = block.text; + this.block.value = block.value; + } else if (this.questionType == "star") { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(block.value + " ⭐").addClass('answer message')); + this.block.text = block.text; + this.block.value = block.value; + } else if (this.questionType == "checkbox") { + + + + if (block.text.substr(0, 4) == "----") { + block.text = block.text.substr(4, block.text.length); + } + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(block.text).addClass('answer message')); + this.block.text = block.text; + + + } else { + $('

  • ').addClass('chat-li ans').appendTo($('#chat-ul-list')).append($('

    ').text(block.text).addClass('answer message')); + this.block.text = block.text; + this.block.value = block.value; + } + } + + + delay(time: any) { + return new Promise(resolve => setTimeout(resolve, time)); + } + + async sendWithDelay(param: any, delayType: string) { + let temp_block: Block; + temp_block = { + block_id: 0, + text: "", + value: 0, + link: "", + of_conversation: "", + block_type: "", + block_subtype: "" + }; + + temp_block.text = param["text"]; + + let delay = 200; + + let numberOfWord = 0; + if (temp_block.text != null && delayType == "auto") { + numberOfWord = temp_block.text.split(' ').length; + delay = 100 * numberOfWord + 150; + } + + this.isLoading = true; + //$('#input-area').css("height", "8%"); + await this.delay(delay); + + temp_block.block_subtype = param["subtype"]; + + var litem: any; + if (temp_block.block_subtype == "text") { + + litem = $('

  • ').addClass('chat-li coney').appendTo($('#chat-ul-list')).append($('

    ').text(temp_block.text).addClass('coney-msg message')); + + } else if (temp_block.block_subtype == "imageUrl") { + + temp_block.link = param["imageUrl"]; + litem = $('

  • ').addClass('chat-li coney').appendTo($('#chat-ul-list')).append($('').attr('align', 'left').attr('src', temp_block.link).addClass('coney-msg img-url message')); + + } else { + + temp_block.link = param["url"]; + litem = $('
  • ').addClass('chat-li coney').appendTo($('#chat-ul-list')).append(($('
    ').addClass('row m-0')).append($('').attr('href', temp_block.link).attr('target', '_blank').attr('rel', 'noopener').text(temp_block.text).addClass('coney-msg link message'))); + + } + if (this.showLogo) { + this.showLogo = false; + } + this.isLoading = false; + await this.delay(100); + this.scrollToBottom(); + } + + async publishMessages(messages: any) { + + var c = true; + for (var k = 0; k < messages.length; k++) { + + var block = messages[k]; + this.block.block_type = block["type"]; + this.block.block_subtype = block["subtype"]; + this.block.of_conversation = block["ofConversation"]; + this.block.text = block["text"]; + this.block.value = parseInt(block["order"], 10); + + if (this.block.block_type == "AnswerCont") { + this.pastAnswers == true; + } else if (this.block.block_type == "Answer") { + this.pastAnswers == false; + } + + if (this.block.block_type == "Question") { + this.questionType = block["visualization"]; + } + + if ((this.questionType == "" || this.questionType == undefined) && (this.block.block_type == "Answer" || this.block.block_type == "AnswerCont")) { + if (block["subtype"] == "multiple") { + this.questionType = "star"; + } else if (block["subtype"] == "single") { + this.questionType = "text"; + } else { + this.questionType = block["subtype"]; + } + } + + + if (this.block.block_type == "end") { + if (this.block.text != null) { + $('
  • ').addClass('chat-li coney').appendTo($('#chat-ul-list')).append($('

    ').text(this.block.text).addClass('coney-msg message error')); + } else { + this.surveyEnded = true; + + if (this.userId == "preview") { + this.undoEnabled = false; + this.backend.deleteObject('/chat/deletePreview?conversationId=' + this.currentConversationId + "&session=" + this.currentSessionId).subscribe(bool => { + }); + } + } + c = false; + + + /*TEST + this.count ++; + if(this.count<20){ + var tmpu = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5); + this.userId = tmpu+"@gmail.com"; + this.getConversation(); + } + /*END TEST*/ + + return; + } + + if (this.block.block_type != "Answer" && this.block.block_type != "AnswerCont") { + + this.block.block_id = block["blockId"]; + if (this.recreatingConv) { + await this.sendWithDelay(block, "none"); + } else { + await this.sendWithDelay(block, "auto"); + } + + + } else if (this.block.block_type == "Answer") { + + var genAns: { text: any; value: any; }; + + if (this.block.block_subtype == "multiple" || this.questionType == "checkbox") { + + //answer multi + genAns = { value: 0, text: "" }; + genAns.text = this.block.text; + genAns.value = this.block.value; + this.answers.push(genAns); + } + + } else if (this.block.block_type == "AnswerCont") { + //Means it's returning to a previous "save" + this.sendPastAswer(this.block); + } + } + //if the survey is not over + if (c) { + await this.showAnswers(); + } + return c; + } + + undoLastAnswer() { + this.surveyEnded = false; + var list = document.getElementsByTagName("li"); + var ansCount = false; + var delQ = false; + + for (var i = list.length; i > 0; i--) { + + var el = list[i - 1]; + var cname = el.className; + + if (!delQ) { + el.remove(); + if (cname.includes("ans")) { + ansCount = true; + } + if (!cname.includes("ans") && ansCount) { + delQ = true; + } + + } else { + break; + } + } + this.continueConversation(true, undefined); + } + + async showAnswers() { + this.numberOfAnswers = this.answers.length; + if ((this.block.block_subtype == "multiple" && this.questionType != "slider") || this.block.block_subtype == "checkbox") { + this.answers.sort(function (a, b) { + return a.value - b.value; + }); + } + + setTimeout(() => { + this.isLoading = false; + + if (this.questionType == "") { + this.questionType = "text"; /************/ + } + this.answerType = this.questionType; + + /*TESTING + console.log("TESTING - automated response"); + if(this.questionType !="text"){ + + var r = Math.floor(Math.random() * Math.floor(this.answers.length)); + r+=1; + if(this.answers.length==2){ + r=2; + } + this.answers.forEach(element => { + if(element.value == r){ + this.sendAnswer(element); + } + }); + } else { + this.sendAnswer("TESTING - automated response"); + } + /*END TESTING*/ + }, 200); + } + + showEndScreen(mode: boolean) { + this.conversationFinished = true; + var screen = document.getElementById("endScreen"); + var chat = document.getElementById("chat-ul-list"); + var btn = document.getElementById("endButton"); + var inputArea = document.getElementById("input-area"); + + if (mode) { + + screen.style.display = "block"; + chat.style.display = "none"; + btn.style.display = "none"; + inputArea.style.display = "none"; + + this.undoEnabled = false; + + } else { + + screen.style.display = "none"; + chat.style.display = "block"; + btn.textContent = this.endButtonText; + btn.classList.remove("mat-primary"); + btn.style.display = "block"; + inputArea.style.display = "block"; + + } + } + + restartPopUp() { + var popUp = document.getElementById("restartPU"); + popUp.style.display = "flex"; + } + + setButtonsLanguage() { + + + if (this.languageValue.tag == "it") { + this.strings = ENUM_IT_STRINGS; + } else { + this.strings = ENUM_EN_STRINGS; + } + + this.privacyNotice = this.strings.privacyNotice; + this.startButtonText = this.strings.startButtonText; + this.sendButtonText = this.strings.sendButtonText; + this.skipButtonText = this.strings.skipButtonText; + this.restartButtonText = this.strings.restartButtonText; + this.continueButtonText = this.strings.continueButtonText; + this.endButtonText = this.strings.endButtonText; + this.endScreenButtonText = this.strings.endScreenButtonText; + this.doneConversation = this.strings.doneConversation; + this.endScreenText = this.strings.endScreenText; + this.consentText = this.strings.consentText; + this.cookieText = this.strings.cookieText; + this.readMoreButtonText = this.strings.readMoreButtonText; + this.cookieAgreeButton = this.strings.cookieAgreeButton; + this.wrongLinkText = this.strings.wrongLinkText; + this.unableToLoadChatText = this.strings.unableToLoadChatText; + this.somethingWrongText = this.strings.somethingWrongText; + this.noSurveyChosenText = this.strings.noSurveyChosenText; + this.surveyAlreadyCompetedText = this.strings.surveyAlreadyCompetedText; + this.noPublishedSurvey = this.strings.noPublishedSurvey; + + } + + getBrowserLanguage() { + var langArr = navigator.language.split("-"); + this.languageValue = { lang: "", tag: "" }; + this.languageValue.tag = langArr[0]; + this.setButtonsLanguage(); + } + +} diff --git a/coney-chat/src/app/chat.module.ts b/coney-chat/src/app/chat.module.ts new file mode 100644 index 0000000..881cf22 --- /dev/null +++ b/coney-chat/src/app/chat.module.ts @@ -0,0 +1,67 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { CommonModule } from '@angular/common'; +import { AnswerTextComponent } from './answer-text/answer-text.component'; +import { AnswerScaleComponent } from './answer-scale/answer-scale.component'; +import { AnswerOptionComponent } from './answer-option/answer-option.component'; +import { AnswerSlideComponent } from './answer-slide/answer-slide.component'; +import { AnswerEmojiComponent } from './answer-emoji/answer-emoji.component'; +import { AnswerSelectComponent } from './answer-select/answer-select.component'; +import { AnswerCheckboxComponent } from './answer-checkbox/answer-checkbox.component'; +import { CookieConsentComponent } from './cookie-consent-dialog/cookie-consent.component'; +import { ChatComponent } from './chat.component'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; +import { NgxStarsModule } from 'ngx-stars'; +import { MatSliderModule, MatCheckboxModule, MatSelectModule, MatButtonModule, MatInputModule, MatDialogModule, MatProgressBarModule } from '@angular/material'; +import { ChatBackendService } from './services/backend.service'; +import { CookieService } from "ngx-cookie-service"; + +@NgModule({ + declarations: [ + ChatComponent, + AnswerScaleComponent, + AnswerTextComponent, + AnswerOptionComponent, + AnswerSlideComponent, + AnswerEmojiComponent, + AnswerSelectComponent, + AnswerCheckboxComponent, + CookieConsentComponent, + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + CommonModule, + FormsModule, + NgxStarsModule, + ReactiveFormsModule, + MatSliderModule, + MatSelectModule, + MatCheckboxModule, + MatButtonModule, + MatInputModule, + MatDialogModule, + HttpClientModule, + MatProgressBarModule, + RouterModule.forRoot([]) + ], exports: [ + AnswerTextComponent, + ChatComponent, + MatDialogModule, + AnswerScaleComponent, + AnswerOptionComponent, + AnswerSlideComponent, + AnswerEmojiComponent, + AnswerSelectComponent + ], + providers: [ + CookieService, + ChatBackendService], + bootstrap: [ + ChatComponent + ] +}) +export class ChatModule { } diff --git a/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.html b/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.html new file mode 100644 index 0000000..2af584a --- /dev/null +++ b/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.html @@ -0,0 +1,67 @@ +

    + +
    + +

    Cookies

    +

    + +

    + I cookie tecnici, in particolare quelli di 'navigazione' o di 'sessione', verranno usati per garantire la normale navigatione ed il normale utilizzo del sito web. +
    + Nessun cookie verrà raccolto o salvato e nessun servizio di terze parti viene utilizzato per tenere traccia del comportamento dell'utente. +

    + Premento su ACCETTA, acconsentirai all'utilizzo dei cookies.
    + Per ulteriori informazioni riguardo la nostra Normativa sulla Privacy, Cookie e normative di trattamento dati, consulta la nostra Privacy Policy. +
    + Privacy Policy +

    + +

    +
    + +
    + +
    \ No newline at end of file diff --git a/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.ts b/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.ts new file mode 100644 index 0000000..ad68aa7 --- /dev/null +++ b/coney-chat/src/app/cookie-consent-dialog/cookie-consent.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MatButtonModule, MAT_DIALOG_DATA } from '@angular/material'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-cookie-consent', + templateUrl: './cookie-consent.component.html' +}) +export class CookieConsentComponent implements OnInit { + + privacyNoticeLink:string; + language:string; + + constructor(public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data) { } + + ngOnInit() { + console.log(this.data); + this.privacyNoticeLink = environment.privacyUrl; + this.language = this.data.lang; + + } + + agreeAndCloseDialog(){ + this.dialogRef.close("agree"); + } +} diff --git a/coney-chat/src/app/models/block.ts b/coney-chat/src/app/models/block.ts new file mode 100644 index 0000000..56ade5d --- /dev/null +++ b/coney-chat/src/app/models/block.ts @@ -0,0 +1,10 @@ +export interface Block { + block_id: number; + text: string; + value: number; + link: string; + of_conversation: string; + block_type: string; + block_subtype: string; + } + \ No newline at end of file diff --git a/coney-chat/src/app/models/strings.model.ts b/coney-chat/src/app/models/strings.model.ts new file mode 100644 index 0000000..df81863 --- /dev/null +++ b/coney-chat/src/app/models/strings.model.ts @@ -0,0 +1,45 @@ +export enum ENUM_IT_STRINGS { + privacyNotice = "Prendi un momento per consultare la nostra normativa sulla privacy prima di rispondere a questo questionario", + startButtonText = "Inizia", + sendButtonText = "invia", + skipButtonText = "salta", + restartButtonText = "Ricomincia", + continueButtonText = "Continua", + endButtonText = "Fatto", + endScreenButtonText = "Mostra chat", + doneConversation = "Sembra che stessimo già avendo questa conversazione...", + endScreenText = "Ora puoi chiudere questa pagina 😊", + consentText = "*premendo su INIZIA, confermi di essere informato e di voler rispondere alle domande di questo questionario.", + cookieText = "Ciao! Vorremmo usare dei cookie per migliorare la tua esperienza, ma ci serve il tuo consenso per farlo", + readMoreButtonText = "Leggi di più", + cookieAgreeButton = "Accetta", + wrongLinkText = "Ci spiace, il link è scaduto oppure incompleto.", + unableToLoadChatText = "Impossibile caricare la chat, il link è scaduro oppure incompleto.", + somethingWrongText = "Qualcosa è andato storto...", + noSurveyChosenText = "Nessuna conversatione selezionata", + surveyAlreadyCompetedText = "Hai già compilato questo questionario", + noPublishedSurvey = "Mi spiace, non ho trovato nessun questionario disponibile", +} + +export enum ENUM_EN_STRINGS { + privacyNotice = "Please take a moment to review our policy prior to answering the survey questions", + startButtonText = "Start", + sendButtonText = "send", + skipButtonText = "skip", + restartButtonText = "Restart", + continueButtonText = "Continue", + endButtonText = "Done", + endScreenButtonText = "Show Chat", + doneConversation = "It looks like we were already having this conversation...", + endScreenText = "You can now close this page 😊", + consentText = "*by clicking START, you consent that you are informed and willing to answer the questions in this survey.", + cookieText = "Hi! We'd like to use cookies to enhance your experience, but we need your consent to do so.", + readMoreButtonText = "Read More", + cookieAgreeButton = "Agree", + wrongLinkText = "Sorry, either the link is expired or is missing some information...", + unableToLoadChatText = "Couldn't load the chat. Either the link is expired or is missing some information...", + somethingWrongText = "Something went wrong...", + noSurveyChosenText = "No survey was chosen", + surveyAlreadyCompetedText = "You have already completed this survey", + noPublishedSurvey = "Sorry, I couldn't find any available surveys", +} diff --git a/coney-chat/src/app/services/backend.service.ts b/coney-chat/src/app/services/backend.service.ts new file mode 100644 index 0000000..de9f2e4 --- /dev/null +++ b/coney-chat/src/app/services/backend.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import {Observable} from 'rxjs'; +import { environment } from '../../environments/environment' + +@Injectable() +export class ChatBackendService { + + url = environment.baseUrl + "/coney-api"; + + constructor(private http: HttpClient) { } + + getRequest(endpoint: string) { + return this.http.get(this.url + endpoint, {responseType: 'text'}); + } + + postRequest(endpoint: string, json: JSON): Observable { + return this.http.post(this.url + endpoint, json); + } + + deleteObject(endpoint: string) { + return this.http.delete(this.url + endpoint); + } + +} diff --git a/coney-chat/src/assets/.gitkeep b/coney-chat/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/coney-chat/src/assets/chat-ui.png b/coney-chat/src/assets/chat-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3807e90ec360ec394057aa4cb14a88b475c029 GIT binary patch literal 230196 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 literal 0 HcmV?d00001 diff --git a/coney-chat/src/assets/circle.svg b/coney-chat/src/assets/circle.svg new file mode 100644 index 0000000..0ffd13b --- /dev/null +++ b/coney-chat/src/assets/circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-chat/src/assets/end_check.svg b/coney-chat/src/assets/end_check.svg new file mode 100644 index 0000000..9342f79 --- /dev/null +++ b/coney-chat/src/assets/end_check.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/coney-chat/src/assets/messages.svg b/coney-chat/src/assets/messages.svg new file mode 100644 index 0000000..d4e21d9 --- /dev/null +++ b/coney-chat/src/assets/messages.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/coney-chat/src/assets/pattern.png b/coney-chat/src/assets/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6d31d5fe85d644b449b000d76b9b1a062fc8c GIT binary patch literal 41534 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

    QyKiYiCn7&=8$&n;E(5vVh)cH?5 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

    J{=siX@Zh4}XUAjJ^)z)4br#W8&+ZD0IJ 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

    INIU@e5nJ^Kw-nO$`m&51&B`+6dKAm?u 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 ybxEhib + + + \ No newline at end of file diff --git a/coney-chat/src/assets/send.svg b/coney-chat/src/assets/send.svg new file mode 100644 index 0000000..2683ecd --- /dev/null +++ b/coney-chat/src/assets/send.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-chat/src/assets/star_empty.svg b/coney-chat/src/assets/star_empty.svg new file mode 100644 index 0000000..69146c2 --- /dev/null +++ b/coney-chat/src/assets/star_empty.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/coney-chat/src/assets/star_full.svg b/coney-chat/src/assets/star_full.svg new file mode 100644 index 0000000..69b223e --- /dev/null +++ b/coney-chat/src/assets/star_full.svg @@ -0,0 +1,5 @@ + + + diff --git a/coney-chat/src/assets/star_half.svg b/coney-chat/src/assets/star_half.svg new file mode 100644 index 0000000..7e71e4c --- /dev/null +++ b/coney-chat/src/assets/star_half.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/coney-chat/src/browserslist b/coney-chat/src/browserslist new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/coney-chat/src/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/coney-chat/src/coney-theme.css b/coney-chat/src/coney-theme.css new file mode 100644 index 0000000..e4abee9 --- /dev/null +++ b/coney-chat/src/coney-theme.css @@ -0,0 +1,3856 @@ +/* Theme for the ripple elements.*/ +/* stylelint-disable material/no-prefixes */ +/* stylelint-enable */ +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; } + +.mat-expansion-panel-header { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px); + -ms-transform: translateY(-1.28125em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px); + -ms-transform: translateY(-1.28124em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px); + -ms-transform: translateY(-1.28123em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28122em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28121em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.2812em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59374em) scale(0.75); + width: 133.33334%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; } + +.mat-radio-button { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-slider-thumb-label-text { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tab-label, .mat-tab-link { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0; } + +.mat-tooltip { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-option { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-simple-snackbar { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Segoe UI; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Segoe UI; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Segoe UI; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Segoe UI; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Segoe UI; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Segoe UI; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Segoe UI; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Segoe UI; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Segoe UI; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Segoe UI; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Segoe UI; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Segoe UI; } + +.mat-card { + font-family: Segoe UI; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Segoe UI; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Segoe UI; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Segoe UI; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Segoe UI; } + +.mat-expansion-panel-header { + font-family: Segoe UI; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Segoe UI; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Segoe UI; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px); + -ms-transform: translateY(-1.28119em) scale(0.75); + width: 133.33339%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px); + -ms-transform: translateY(-1.28118em) scale(0.75); + width: 133.3334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px); + -ms-transform: translateY(-1.28117em) scale(0.75); + width: 133.33341%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28116em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28115em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28114em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59372em) scale(0.75); + width: 133.33336%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Segoe UI; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Segoe UI; + font-size: 12px; } + +.mat-radio-button { + font-family: Segoe UI; } + +.mat-select { + font-family: Segoe UI; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Segoe UI; } + +.mat-slider-thumb-label-text { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Segoe UI; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Segoe UI; } + +.mat-tab-label, .mat-tab-link { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Segoe UI; + margin: 0; } + +.mat-tooltip { + font-family: Segoe UI; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Segoe UI; } + +.mat-list-option { + font-family: Segoe UI; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Segoe UI; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Segoe UI; } + +.mat-simple-snackbar { + font-family: Segoe UI; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Segoe UI; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.mat-option { + color: rgba(0, 0, 0, 0.87); } + .mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #0097a7; } + +.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffc107; } + +.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .mat-pseudo-checkbox::after { + color: #fafafa; } + +.mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.mat-pseudo-checkbox-checked, +.mat-pseudo-checkbox-indeterminate, +.mat-accent .mat-pseudo-checkbox-checked, +.mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffc107; } + +.mat-primary .mat-pseudo-checkbox-checked, +.mat-primary .mat-pseudo-checkbox-indeterminate { + background: #0097a7; } + +.mat-warn .mat-pseudo-checkbox-checked, +.mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-content { + color: white; + background: #0097a7; } + @media (-ms-high-contrast: active) { + .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.mat-badge-accent .mat-badge-content { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.mat-badge { + position: relative; } + +.mat-badge-hidden .mat-badge-content { + display: none; } + +.mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.ng-animate-disabled .mat-badge-content, +.mat-badge-content._mat-animation-noopable { + transition: none; } + +.mat-badge-content.mat-badge-active { + transform: none; } + +.mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-button, .mat-icon-button, .mat-stroked-button { + color: inherit; + background: transparent; } + .mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary { + color: #0097a7; } + .mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent { + color: #ffc107; } + .mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn { + color: #f44336; } + .mat-button.mat-primary[disabled], .mat-button.mat-accent[disabled], .mat-button.mat-warn[disabled], .mat-button[disabled][disabled], .mat-icon-button.mat-primary[disabled], .mat-icon-button.mat-accent[disabled], .mat-icon-button.mat-warn[disabled], .mat-icon-button[disabled][disabled], .mat-stroked-button.mat-primary[disabled], .mat-stroked-button.mat-accent[disabled], .mat-stroked-button.mat-warn[disabled], .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #0097a7; } + .mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffc107; } + .mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .mat-button[disabled] .mat-button-focus-overlay, .mat-icon-button[disabled] .mat-button-focus-overlay, .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.mat-button-focus-overlay { + background: black; } + +.mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + color: white; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + color: white; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + background-color: #0097a7; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + background-color: #ffc107; } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + background-color: #f44336; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.mat-stroked-button:not([class*='mat-elevation-z']), .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([class*='mat-elevation-z']), .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-fab[disabled]:not([class*='mat-elevation-z']), .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone, +.mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +[dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-checkmark { + fill: #fafafa; } + +.mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.mat-checkbox-mixedmark { + background-color: #fafafa; } + +.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #0097a7; } + +.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffc107; } + +.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .mat-checkbox-background { + background: none; } } + +.mat-checkbox .mat-ripple-element { + background-color: black; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #0097a7; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffc107; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .mat-chip.mat-standard-chip::after { + background: black; } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #0097a7; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.mat-table { + background: white; } + +.mat-table thead, .mat-table tbody, .mat-table tfoot, +mat-header-row, mat-row, mat-footer-row, +[mat-header-row], [mat-row], [mat-footer-row], +.mat-table-sticky { + background: inherit; } + +mat-row, mat-header-row, mat-footer-row, +th.mat-header-cell, td.mat-cell, td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.mat-cell, .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.mat-datepicker-toggle, +.mat-datepicker-content .mat-calendar-next-button, +.mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.mat-calendar-body-selected { + background-color: #0097a7; + color: white; } + +.mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(0, 151, 167, 0.4); } + +.mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 193, 7, 0.4); } + .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-datepicker-toggle-active { + color: #0097a7; } + .mat-datepicker-toggle-active.mat-accent { + color: #ffc107; } + .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.mat-expansion-panel-header-description, +.mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.mat-form-field.mat-focused .mat-form-field-label { + color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.mat-focused .mat-form-field-required-marker { + color: #ffc107; } + +.mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #0097a7; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffc107; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.mat-error { + color: #f44336; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #0097a7; } + +.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffc107; } + +.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.mat-icon.mat-primary { + color: #0097a7; } + +.mat-icon.mat-accent { + color: #ffc107; } + +.mat-icon.mat-warn { + color: #f44336; } + +.mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-input-element:disabled, +.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-input-element { + caret-color: #0097a7; } + .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-accent .mat-input-element { + caret-color: #ffc107; } + +.mat-warn .mat-input-element, +.mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.mat-list-item-disabled { + background-color: #eeeeee; } + +.mat-list-option:hover, .mat-list-option:focus, +.mat-nav-list .mat-list-item:hover, +.mat-nav-list .mat-list-item:focus, +.mat-action-list .mat-list-item:hover, +.mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.mat-menu-panel { + background: white; } + .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .mat-menu-item[disabled], .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-menu-item .mat-icon-no-color, +.mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-menu-item:hover:not([disabled]), +.mat-menu-item.cdk-program-focused:not([disabled]), +.mat-menu-item.cdk-keyboard-focused:not([disabled]), +.mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.mat-paginator { + background: white; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.mat-paginator-decrement, +.mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-paginator-first, +.mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-icon-button[disabled] .mat-paginator-decrement, +.mat-icon-button[disabled] .mat-paginator-increment, +.mat-icon-button[disabled] .mat-paginator-first, +.mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-progress-bar-background { + fill: #00838f; } + +.mat-progress-bar-buffer { + background-color: #00838f; } + +.mat-progress-bar-fill::after { + background-color: #0097a7; } + +.mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffc107; } + +.mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.mat-progress-spinner circle, .mat-spinner circle { + stroke: #0097a7; } + +.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle { + stroke: #ffc107; } + +.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #0097a7; } + +.mat-radio-button.mat-primary .mat-radio-inner-circle, +.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #0097a7; } + +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffc107; } + +.mat-radio-button.mat-accent .mat-radio-inner-circle, +.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffc107; } + +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.mat-radio-button.mat-warn .mat-radio-inner-circle, +.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button .mat-ripple-element { + background-color: black; } + +.mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.mat-select-panel { + background: white; } + .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #0097a7; } + +.mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffc107; } + +.mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-drawer.mat-drawer-push { + background-color: white; } + .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +[dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffc107; } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 193, 7, 0.54); } + +.mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffc107; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #0097a7; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(0, 151, 167, 0.54); } + +.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #0097a7; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-primary .mat-slider-track-fill, +.mat-primary .mat-slider-thumb, +.mat-primary .mat-slider-thumb-label { + background-color: #0097a7; } + +.mat-primary .mat-slider-thumb-label-text { + color: white; } + +.mat-accent .mat-slider-track-fill, +.mat-accent .mat-slider-thumb, +.mat-accent .mat-slider-thumb-label { + background-color: #ffc107; } + +.mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.mat-warn .mat-slider-track-fill, +.mat-warn .mat-slider-thumb, +.mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.mat-warn .mat-slider-thumb-label-text { + color: white; } + +.mat-slider-focus-ring { + background-color: rgba(255, 193, 7, 0.2); } + +.mat-slider:hover .mat-slider-track-background, +.cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-disabled .mat-slider-track-background, +.mat-slider-disabled .mat-slider-track-fill, +.mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-step-header:hover { + background: none; } } + +.mat-step-header .mat-step-label, +.mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.mat-step-header .mat-step-icon-selected, +.mat-step-header .mat-step-icon-state-done, +.mat-step-header .mat-step-icon-state-edit { + background-color: #0097a7; + color: white; } + +.mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.mat-stepper-horizontal, .mat-stepper-vertical { + background-color: white; } + +.mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.mat-horizontal-stepper-header::before, +.mat-horizontal-stepper-header::after, +.mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-sort-header-arrow { + color: #757575; } + +.mat-tab-nav-bar, +.mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.mat-tab-group-inverted-header .mat-tab-nav-bar, +.mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.mat-tab-label, .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-tab-group[class*='mat-background-'] .mat-tab-header, +.mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #0097a7; } + +.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffc107; } + +.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-background-primary .mat-tab-header, .mat-tab-group.mat-background-primary .mat-tab-links, .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #0097a7; } + +.mat-tab-group.mat-background-primary .mat-tab-label, .mat-tab-group.mat-background-primary .mat-tab-link, .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-background-accent .mat-tab-header, .mat-tab-group.mat-background-accent .mat-tab-links, .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffc107; } + +.mat-tab-group.mat-background-accent .mat-tab-label, .mat-tab-group.mat-background-accent .mat-tab-link, .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-background-warn .mat-tab-header, .mat-tab-group.mat-background-warn .mat-tab-links, .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.mat-tab-group.mat-background-warn .mat-tab-label, .mat-tab-group.mat-background-warn .mat-tab-link, .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-primary { + background: #0097a7; + color: white; } + .mat-toolbar.mat-accent { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .mat-toolbar .mat-form-field-underline, + .mat-toolbar .mat-form-field-ripple, + .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .mat-toolbar .mat-form-field-label, + .mat-toolbar .mat-focused .mat-form-field-label, + .mat-toolbar .mat-select-value, + .mat-toolbar .mat-select-arrow, + .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.mat-tree { + background: white; } + +.mat-tree-node, +.mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-simple-snackbar-action { + color: #ffc107; } + +.alternate-theme .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-option { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option:hover:not(.mat-option-disabled), .alternate-theme .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #03a9f4; } + +.alternate-theme .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffee58; } + +.alternate-theme .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.alternate-theme .mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-pseudo-checkbox::after { + color: #fafafa; } + +.alternate-theme .mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.alternate-theme .mat-pseudo-checkbox-checked, +.alternate-theme .mat-pseudo-checkbox-indeterminate, +.alternate-theme .mat-accent .mat-pseudo-checkbox-checked, +.alternate-theme .mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffee58; } + +.alternate-theme .mat-primary .mat-pseudo-checkbox-checked, +.alternate-theme .mat-primary .mat-pseudo-checkbox-indeterminate { + background: #03a9f4; } + +.alternate-theme .mat-warn .mat-pseudo-checkbox-checked, +.alternate-theme .mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.alternate-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.alternate-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.alternate-theme .mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-app-background, .alternate-theme.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.alternate-theme .mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-content { + color: white; + background: #03a9f4; } + @media (-ms-high-contrast: active) { + .alternate-theme .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.alternate-theme .mat-badge-accent .mat-badge-content { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.alternate-theme .mat-badge { + position: relative; } + +.alternate-theme .mat-badge-hidden .mat-badge-content { + display: none; } + +.alternate-theme .mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.alternate-theme .ng-animate-disabled .mat-badge-content, +.alternate-theme .mat-badge-content._mat-animation-noopable { + transition: none; } + +.alternate-theme .mat-badge-content.mat-badge-active { + transform: none; } + +.alternate-theme .mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.alternate-theme .mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.alternate-theme .mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.alternate-theme .mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.alternate-theme .mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.alternate-theme .mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.alternate-theme .mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button, .alternate-theme .mat-icon-button, .alternate-theme .mat-stroked-button { + color: inherit; + background: transparent; } + .alternate-theme .mat-button.mat-primary, .alternate-theme .mat-icon-button.mat-primary, .alternate-theme .mat-stroked-button.mat-primary { + color: #03a9f4; } + .alternate-theme .mat-button.mat-accent, .alternate-theme .mat-icon-button.mat-accent, .alternate-theme .mat-stroked-button.mat-accent { + color: #ffee58; } + .alternate-theme .mat-button.mat-warn, .alternate-theme .mat-icon-button.mat-warn, .alternate-theme .mat-stroked-button.mat-warn { + color: #f44336; } + .alternate-theme .mat-button.mat-primary[disabled], .alternate-theme .mat-button.mat-accent[disabled], .alternate-theme .mat-button.mat-warn[disabled], .alternate-theme .mat-button[disabled][disabled], .alternate-theme .mat-icon-button.mat-primary[disabled], .alternate-theme .mat-icon-button.mat-accent[disabled], .alternate-theme .mat-icon-button.mat-warn[disabled], .alternate-theme .mat-icon-button[disabled][disabled], .alternate-theme .mat-stroked-button.mat-primary[disabled], .alternate-theme .mat-stroked-button.mat-accent[disabled], .alternate-theme .mat-stroked-button.mat-warn[disabled], .alternate-theme .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #03a9f4; } + .alternate-theme .mat-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffee58; } + .alternate-theme .mat-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .alternate-theme .mat-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-icon-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .alternate-theme .mat-button .mat-ripple-element, .alternate-theme .mat-icon-button .mat-ripple-element, .alternate-theme .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.alternate-theme .mat-button-focus-overlay { + background: black; } + +.alternate-theme .mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-flat-button, .alternate-theme .mat-raised-button, .alternate-theme .mat-fab, .alternate-theme .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + color: white; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + color: white; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + background-color: #03a9f4; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + background-color: #f44336; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-flat-button.mat-primary .mat-ripple-element, .alternate-theme .mat-raised-button.mat-primary .mat-ripple-element, .alternate-theme .mat-fab.mat-primary .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .alternate-theme .mat-flat-button.mat-accent .mat-ripple-element, .alternate-theme .mat-raised-button.mat-accent .mat-ripple-element, .alternate-theme .mat-fab.mat-accent .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .alternate-theme .mat-flat-button.mat-warn .mat-ripple-element, .alternate-theme .mat-raised-button.mat-warn .mat-ripple-element, .alternate-theme .mat-fab.mat-warn .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-stroked-button:not([class*='mat-elevation-z']), .alternate-theme .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab[disabled]:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone, +.alternate-theme .mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.alternate-theme .mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .alternate-theme .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .alternate-theme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.alternate-theme .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme [dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-checkmark { + fill: #fafafa; } + +.alternate-theme .mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .alternate-theme .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.alternate-theme .mat-checkbox-mixedmark { + background-color: #fafafa; } + +.alternate-theme .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #03a9f4; } + +.alternate-theme .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffee58; } + +.alternate-theme .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.alternate-theme .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .alternate-theme .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-background { + background: none; } } + +.alternate-theme .mat-checkbox .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #03a9f4; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffee58; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.alternate-theme .mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip::after { + background: black; } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #03a9f4; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-table { + background: white; } + +.alternate-theme .mat-table thead, .alternate-theme .mat-table tbody, .alternate-theme .mat-table tfoot, +.alternate-theme mat-header-row, .alternate-theme mat-row, .alternate-theme mat-footer-row, +.alternate-theme [mat-header-row], .alternate-theme [mat-row], .alternate-theme [mat-footer-row], +.alternate-theme .mat-table-sticky { + background: inherit; } + +.alternate-theme mat-row, .alternate-theme mat-header-row, .alternate-theme mat-footer-row, +.alternate-theme th.mat-header-cell, .alternate-theme td.mat-cell, .alternate-theme td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-cell, .alternate-theme .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-datepicker-toggle, +.alternate-theme .mat-datepicker-content .mat-calendar-next-button, +.alternate-theme .mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.alternate-theme .mat-calendar-body-selected { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(3, 169, 244, 0.4); } + +.alternate-theme .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 238, 88, 0.4); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-datepicker-toggle-active { + color: #03a9f4; } + .alternate-theme .mat-datepicker-toggle-active.mat-accent { + color: #ffee58; } + .alternate-theme .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.alternate-theme .mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.alternate-theme .mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-expansion-panel-header-description, +.alternate-theme .mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.alternate-theme .mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-label { + color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.alternate-theme .mat-focused .mat-form-field-required-marker { + color: #ffee58; } + +.alternate-theme .mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #03a9f4; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffee58; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.alternate-theme .mat-error { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #03a9f4; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffee58; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.alternate-theme .mat-icon.mat-primary { + color: #03a9f4; } + +.alternate-theme .mat-icon.mat-accent { + color: #ffee58; } + +.alternate-theme .mat-icon.mat-warn { + color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-input-element:disabled, +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-input-element { + caret-color: #03a9f4; } + .alternate-theme .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-accent .mat-input-element { + caret-color: #ffee58; } + +.alternate-theme .mat-warn .mat-input-element, +.alternate-theme .mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-list-item-disabled { + background-color: #eeeeee; } + +.alternate-theme .mat-list-option:hover, .alternate-theme .mat-list-option:focus, +.alternate-theme .mat-nav-list .mat-list-item:hover, +.alternate-theme .mat-nav-list .mat-list-item:focus, +.alternate-theme .mat-action-list .mat-list-item:hover, +.alternate-theme .mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-menu-panel { + background: white; } + .alternate-theme .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-menu-item[disabled], .alternate-theme .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-menu-item .mat-icon-no-color, +.alternate-theme .mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-menu-item:hover:not([disabled]), +.alternate-theme .mat-menu-item.cdk-program-focused:not([disabled]), +.alternate-theme .mat-menu-item.cdk-keyboard-focused:not([disabled]), +.alternate-theme .mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-paginator { + background: white; } + +.alternate-theme .mat-paginator, +.alternate-theme .mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-decrement, +.alternate-theme .mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-first, +.alternate-theme .mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-icon-button[disabled] .mat-paginator-decrement, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-increment, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-first, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-progress-bar-background { + fill: #b3e5fc; } + +.alternate-theme .mat-progress-bar-buffer { + background-color: #b3e5fc; } + +.alternate-theme .mat-progress-bar-fill::after { + background-color: #03a9f4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffee58; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.alternate-theme .mat-progress-spinner circle, .alternate-theme .mat-spinner circle { + stroke: #03a9f4; } + +.alternate-theme .mat-progress-spinner.mat-accent circle, .alternate-theme .mat-spinner.mat-accent circle { + stroke: #ffee58; } + +.alternate-theme .mat-progress-spinner.mat-warn circle, .alternate-theme .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.alternate-theme .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-primary .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-accent .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-warn .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-select-panel { + background: white; } + .alternate-theme .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #03a9f4; } + +.alternate-theme .mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffee58; } + +.alternate-theme .mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-drawer.mat-drawer-push { + background-color: white; } + .alternate-theme .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +.alternate-theme [dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + .alternate-theme [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 238, 88, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(3, 169, 244, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.alternate-theme .mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-primary .mat-slider-track-fill, +.alternate-theme .mat-primary .mat-slider-thumb, +.alternate-theme .mat-primary .mat-slider-thumb-label { + background-color: #03a9f4; } + +.alternate-theme .mat-primary .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-accent .mat-slider-track-fill, +.alternate-theme .mat-accent .mat-slider-thumb, +.alternate-theme .mat-accent .mat-slider-thumb-label { + background-color: #ffee58; } + +.alternate-theme .mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-warn .mat-slider-track-fill, +.alternate-theme .mat-warn .mat-slider-thumb, +.alternate-theme .mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.alternate-theme .mat-warn .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-slider-focus-ring { + background-color: rgba(255, 238, 88, 0.2); } + +.alternate-theme .mat-slider:hover .mat-slider-track-background, +.alternate-theme .cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-disabled .mat-slider-track-background, +.alternate-theme .mat-slider-disabled .mat-slider-track-fill, +.alternate-theme .mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.alternate-theme .mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-step-header.cdk-keyboard-focused, .alternate-theme .mat-step-header.cdk-program-focused, .alternate-theme .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-step-header:hover { + background: none; } } + +.alternate-theme .mat-step-header .mat-step-label, +.alternate-theme .mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-selected, +.alternate-theme .mat-step-header .mat-step-icon-state-done, +.alternate-theme .mat-step-header .mat-step-icon-state-edit { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.alternate-theme .mat-stepper-horizontal, .alternate-theme .mat-stepper-vertical { + background-color: white; } + +.alternate-theme .mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-horizontal-stepper-header::before, +.alternate-theme .mat-horizontal-stepper-header::after, +.alternate-theme .mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-sort-header-arrow { + color: #757575; } + +.alternate-theme .mat-tab-nav-bar, +.alternate-theme .mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group-inverted-header .mat-tab-nav-bar, +.alternate-theme .mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.alternate-theme .mat-tab-label, .alternate-theme .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-group[class*='mat-background-'] .mat-tab-header, +.alternate-theme .mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-primary { + background: #03a9f4; + color: white; } + .alternate-theme .mat-toolbar.mat-accent { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .alternate-theme .mat-toolbar .mat-form-field-underline, + .alternate-theme .mat-toolbar .mat-form-field-ripple, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .alternate-theme .mat-toolbar .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-select-value, + .alternate-theme .mat-toolbar .mat-select-arrow, + .alternate-theme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .alternate-theme .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.alternate-theme .mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.alternate-theme .mat-tree { + background: white; } + +.alternate-theme .mat-tree-node, +.alternate-theme .mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-simple-snackbar-action { + color: #ffee58; } diff --git a/coney-chat/src/environments/environment.docker.prod.ts b/coney-chat/src/environments/environment.docker.prod.ts new file mode 100644 index 0000000..ea029c3 --- /dev/null +++ b/coney-chat/src/environments/environment.docker.prod.ts @@ -0,0 +1,19 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: true, + baseUrl: 'http://localhost:80', + privacyUrl: 'https://www.cefriel.com/en/privacy', + enterprise: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/coney-chat/src/environments/environment.prod.ts b/coney-chat/src/environments/environment.prod.ts new file mode 100644 index 0000000..5f1d615 --- /dev/null +++ b/coney-chat/src/environments/environment.prod.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + baseUrl: 'http://localhost:80', +}; diff --git a/coney-chat/src/environments/environment.ts b/coney-chat/src/environments/environment.ts new file mode 100644 index 0000000..7ef4b44 --- /dev/null +++ b/coney-chat/src/environments/environment.ts @@ -0,0 +1,5 @@ +export const environment = { + production: false, + baseUrl: 'http://localhost:80', + privacyUrl: 'https://www.cefriel.com/en/privacy' +}; \ No newline at end of file diff --git a/coney-chat/src/favicon.ico b/coney-chat/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..42a72bd0431b52a09781768425262010e56efbe1 GIT binary patch literal 8120 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 S1^^iV0000 + + + + + + + Coney Chat + + + + + + + + + + diff --git a/coney-chat/src/karma.conf.js b/coney-chat/src/karma.conf.js new file mode 100644 index 0000000..8c8d8fa --- /dev/null +++ b/coney-chat/src/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage/coney-chat'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/coney-chat/src/main.ts b/coney-chat/src/main.ts new file mode 100644 index 0000000..b80d115 --- /dev/null +++ b/coney-chat/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import 'hammerjs'; +import { ChatModule } from './app/chat.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(ChatModule) + .catch(err => console.error(err)); diff --git a/coney-chat/src/polyfills.ts b/coney-chat/src/polyfills.ts new file mode 100644 index 0000000..75d6393 --- /dev/null +++ b/coney-chat/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/coney-chat/src/star_empty.svg b/coney-chat/src/star_empty.svg new file mode 100644 index 0000000..d0e356b --- /dev/null +++ b/coney-chat/src/star_empty.svg @@ -0,0 +1,158 @@ + + + + diff --git a/coney-chat/src/star_full.svg b/coney-chat/src/star_full.svg new file mode 100644 index 0000000..f444d49 --- /dev/null +++ b/coney-chat/src/star_full.svg @@ -0,0 +1,202 @@ + + + + diff --git a/coney-chat/src/styles.css b/coney-chat/src/styles.css new file mode 100644 index 0000000..d5f6faa --- /dev/null +++ b/coney-chat/src/styles.css @@ -0,0 +1,202 @@ +@import url("coney-theme.css"); + +html, body { + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; +} + + + +.mat-checkbox-label { + white-space: initial!important; +} + + +.bottom-banner{ + position: fixed; + bottom: 0px; + left: 0px; + right: 0px; + text-align: center; + background-color: white; + z-index: 999; + box-shadow: 0px -1px 10px 2px rgba(10,16,20,.24); +} + +#restartPU{ + height: 100%; + width: 100%; + display: flex; + padding: 5%; + flex-direction: column; + justify-content: center; +} + +.coney-msg{ + text-align: left; + background: white; + padding: 10px; + margin-right:auto; margin-bottom: 0px; + margin-left: 2.5%; + margin-right: 16%; + border-radius: 15px 15px 15px 5px; + box-shadow: 0 5px 10px rgba(0,0,0,.08); + white-space: pre-line; +} +#endButton{ + width: 100%; +} + +#title-container{ + display: flex; + flex-flow: column; + justify-content: center; + vertical-align: middle; + height: 100%; +} + +.answer{ + width: fit-content; + text-align: left; + padding: 10px; + margin-left: auto; + margin-right: 2.5%; + margin-bottom: 0px!important; + background: #0053ff; + color: white; + max-width: 70%; + border-radius: 15px 15px 5px 15px; + box-shadow: 0 5px 10px rgba(0,0,0,.08); +} + +.btn.disabled, .btn:disabled, .custom-file-control:disabled:before, .disabled.custom-file-control:before { + opacity: 0.45!important; + box-shadow: none; +} + +.coney-msg.img-url{ + padding-left: 10px!important; + padding-right: 10px!important; + max-height: 45vh!important; + width: auto!important; +} + +.btn-send-answer{ + margin: 0px; + text-transform: uppercase; + font-size: 18px; +} + +.message{ + width: fit-content; + max-width: 66%; + word-wrap: break-word; + white-space: pre-line; +} + +.chat-in-logo{ + width: 100%; + height: auto; +} + +.chat-msg-date{ + width: 100%; + text-align: right; + font-style: italic; +} + +.chat-li{ + margin-top: 7px; + margin-bottom: 0px; + white-space: pre-line; + display: inline-block; +} + +.chat-li.coney{ + width: 100%; + justify-content: left; + position: relative; +} + +.chat-li.ans{ + width: 100%; + justify-content: right; +} + +#answer-comp{ + margin: 0px; + padding: 10px; + box-shadow: 0px 0px 5px 1px rgba(10,10,10,.10); + background: white; + border-radius: 4px; +} + +#answer-comp-internal{ + width: 100%; + display: flex; + flex-flow: column; + justify-content: center; + vertical-align: middle; + height: 100%; + padding: 10px; +} + +#botImg{ + left: 3%; + top: 5%; + width: 12.2%; + background: #f2f2f2; + border: 1px solid #333333; + padding: 2.2%; + border-radius: 45px; + position: absolute; +} + +/*SLIDER*/ + +.mat-slider-thumb{ + height: 32px!important; + width: 32px!important; + top: -15px!important; +} +.mat-slider-track-fill{ + height: 5px!important; +} +.mat-slider-track-background{ + height: 5px!important; +} +.mat-slider-horizontal .mat-slider-track-wrapper { + height: 5px!important; +} + + +.mat-slider-thumb-label-text{ + color:white!important; + font-size: 14px!important; +} + +#textAreaSendContainer{ + display: flex; + flex-direction: column; + justify-content: center; + } + + +@media only screen and (max-width: 600px) { + #chat{ + box-shadow: none!important; + } + } + + .star { + background-color: #ffc107!important; + } + + .stars-line{ + justify-content: center!important; + } + + .star.zero-star { + background-color: transparent!important; +} + + diff --git a/coney-chat/src/test.ts b/coney-chat/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/coney-chat/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/coney-chat/src/tsconfig.app.json b/coney-chat/src/tsconfig.app.json new file mode 100644 index 0000000..190fd30 --- /dev/null +++ b/coney-chat/src/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/coney-chat/src/tsconfig.spec.json b/coney-chat/src/tsconfig.spec.json new file mode 100644 index 0000000..de77336 --- /dev/null +++ b/coney-chat/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/coney-chat/src/tslint.json b/coney-chat/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/coney-chat/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/coney-chat/tsconfig.json b/coney-chat/tsconfig.json new file mode 100644 index 0000000..8420809 --- /dev/null +++ b/coney-chat/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "es2015", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ], + "paths": { + "chat": [ + "dist/chat" + ], + "chat/*": [ + "dist/chat/*" + ] + } + } +} \ No newline at end of file diff --git a/coney-chat/tslint.json b/coney-chat/tslint.json new file mode 100644 index 0000000..868ecba --- /dev/null +++ b/coney-chat/tslint.json @@ -0,0 +1,75 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/coney-create b/coney-create deleted file mode 160000 index 723c503..0000000 --- a/coney-create +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 723c5039aaaa4f76219f1b7d914b10b7c1c91d17 diff --git a/coney-create/.dockerignore b/coney-create/.dockerignore new file mode 100644 index 0000000..0945208 --- /dev/null +++ b/coney-create/.dockerignore @@ -0,0 +1,5 @@ +node_modules/* +dist/* +.git +.gitignore +package-lock.json \ No newline at end of file diff --git a/coney-create/.editorconfig b/coney-create/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/coney-create/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/coney-create/.gitignore b/coney-create/.gitignore new file mode 100644 index 0000000..be00271 --- /dev/null +++ b/coney-create/.gitignore @@ -0,0 +1,47 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +node_modules.7z +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/coney-create/Dockerfile b/coney-create/Dockerfile new file mode 100644 index 0000000..346de17 --- /dev/null +++ b/coney-create/Dockerfile @@ -0,0 +1,32 @@ +# BUILD +FROM node:10.16.0 as build + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install and cache app dependencies +COPY package.json /app/package.json + +RUN npm install + +# add app +COPY . /app + +# generate build + +RUN ng build --configuration=docker --base-href=$BASE_HREF --output-path=dist + +# DEPLOY +FROM nginx:1.16.0-alpine + +# copy artifact build from the 'build environment' +COPY --from=build /app/dist /usr/share/nginx/html/ + +# expose port 80 +EXPOSE 80 + +# run nginx +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/coney-create/LICENSE b/coney-create/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/coney-create/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/coney-create/README.md b/coney-create/README.md new file mode 100644 index 0000000..6a329e2 --- /dev/null +++ b/coney-create/README.md @@ -0,0 +1,19 @@ +# Coney Create + +Coney Create: Design a conversational survey. Coney Create is one of the components of the [Coney](https://github.com/cefriel/coney) toolkit for conversational surveys. + +### License + +_Copyright 2020 Cefriel._ + +Licensed 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. diff --git a/coney-create/angular.json b/coney-create/angular.json new file mode 100644 index 0000000..10a229c --- /dev/null +++ b/coney-create/angular.json @@ -0,0 +1,212 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "coney-create": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/coney-create", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "preserveSymlinks": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.css", + "node_modules/ngx-toastr/toastr.css" + ], + "scripts": [], + "es5BrowserSupport": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true + }, + "docker":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.docker.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "docker-test":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.docker.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "upm":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.upm.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "coney-create:build" + }, + "configurations": { + "production": { + "browserTarget": "coney-create:build:production" + }, + "docker": { + "browserTarget": "coney-create:build:docker" + }, + "docker-test": { + "browserTarget": "coney-create:build:docker-test" + }, + "upm": { + "browserTarget": "coney-create:build:upm" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "coney-create:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "coney-create-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "coney-create:serve" + }, + "configurations": { + "production": { + "devServerTarget": "coney-create:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "coney-create" +} \ No newline at end of file diff --git a/coney-create/e2e/protractor.conf.js b/coney-create/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/coney-create/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/coney-create/e2e/src/app.e2e-spec.ts b/coney-create/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..8cbf6c8 --- /dev/null +++ b/coney-create/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to coney-create!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/coney-create/e2e/src/app.po.ts b/coney-create/e2e/src/app.po.ts new file mode 100644 index 0000000..5776aa9 --- /dev/null +++ b/coney-create/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/coney-create/e2e/tsconfig.e2e.json b/coney-create/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a6dd622 --- /dev/null +++ b/coney-create/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/coney-create/package-lock.json b/coney-create/package-lock.json new file mode 100644 index 0000000..b356b5e --- /dev/null +++ b/coney-create/package-lock.json @@ -0,0 +1,13406 @@ +{ + "name": "coney-create", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.803.20", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.20.tgz", + "integrity": "sha512-NjyDJ61i9kh8J+qXt0E2j+P5Xsmi2mPasBzwcQyrZZGiho4zC0IFxcdxyzcsXFEupmilJKkjdt2g4QQRC5rUDQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.20", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.803.20", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.20.tgz", + "integrity": "sha512-JDZkZjOqPbOtCMsSKxQf9C+uSTZ7fQGlKGsCpJMzfa4iQ0WrmrhZvnRKQeEpMTTZTpuou/HQeQjyDV+Sx3yumw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.20", + "@angular-devkit/build-optimizer": "0.803.20", + "@angular-devkit/build-webpack": "0.803.20", + "@angular-devkit/core": "8.3.20", + "@babel/core": "7.5.5", + "@babel/preset-env": "7.5.5", + "@ngtools/webpack": "8.3.20", + "ajv": "6.10.2", + "autoprefixer": "9.6.1", + "browserslist": "4.6.6", + "cacache": "12.0.2", + "caniuse-lite": "1.0.30000989", + "circular-dependency-plugin": "5.2.0", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.0.4", + "core-js": "3.2.1", + "file-loader": "4.2.0", + "find-cache-dir": "3.0.0", + "glob": "7.1.4", + "istanbul-instrumenter-loader": "3.0.1", + "jest-worker": "24.9.0", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "5.0.0", + "license-webpack-plugin": "2.1.2", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.8.0", + "minimatch": "3.0.4", + "open": "6.4.0", + "parse5": "4.0.0", + "postcss": "7.0.17", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "3.1.0", + "regenerator-runtime": "0.13.3", + "rxjs": "6.4.0", + "sass": "1.22.9", + "sass-loader": "7.2.0", + "semver": "6.3.0", + "source-map": "0.7.3", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.13", + "speed-measure-webpack-plugin": "1.3.1", + "style-loader": "1.0.0", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser": "4.3.9", + "terser-webpack-plugin": "1.4.1", + "tree-kill": "1.2.1", + "webpack": "4.39.2", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.9.0", + "webpack-merge": "4.2.1", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.2.0" + }, + "dependencies": { + "core-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.803.20", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.20.tgz", + "integrity": "sha512-Vzxf1g1EuzaPBoScDYUhyxemi5chlgnpWmObNo5dzVAVzjxo5gJeDIGpiyDqHvr6LBkprqb6XHcZhMWqIcdIHg==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.7.3", + "tslib": "1.10.0", + "typescript": "3.5.3", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "typescript": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.803.20", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.20.tgz", + "integrity": "sha512-35af8kD3KG/cIv7AB09YNER5HIPlx55ipBxdVk8D+X3MuUcTmD6fFvqXcV0EPlD1vQephthfzSgtNpvuPv4xuA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.20", + "@angular-devkit/core": "8.3.20", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.3.20", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.20.tgz", + "integrity": "sha512-UCfW/BJBJnioJU34QennQhA4o+rLoCXWiSrI2LM7yw8/MEM9I8KbqRETP1My3HjHkQnvP+Qh3noedpcu3Nnt8A==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.6.tgz", + "integrity": "sha512-FGPcVKxNvtdFB0A6oHyxtWeugL83nW+kPATlAimgh1hu7TCP94dDpflCV9o/lgZlH817xTYXrhToXJaMZSnDPw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.0.1.tgz", + "integrity": "sha512-m4shu+wkVquFSKMmTA2Do+e8FhYnxcAiQdW1UtM9Ue1j4yKxUFgHNYauaG8pmzEzheeQqxGlA/cVcEi5XnRebw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.0.1.tgz", + "integrity": "sha512-Ul7rVU/rr4qGHs1w24P/6MHEosYp8AHRxBHrp/yJ50eHbHVS31FyfO8gKfNqPc1bnL1YoYYCs0hIBwNDaz8uDg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + } + }, + "@angular/cli": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.6.tgz", + "integrity": "sha512-COBpeoXyLt8FiOhsmoEnDfQcm0aTdUSUHsH3zNkVTcyxpRzZVspTDGzxhK0UsCpddXS/MMjJiXph6SJ1el3qaQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@schematics/angular": "8.0.6", + "@schematics/update": "0.800.6", + "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.3.1", + "npm-package-arg": "6.1.0", + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@angular/common": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.0.1.tgz", + "integrity": "sha512-gBjgaQmYuX3/9S91RuJnolCFR1Q+yVqY/qVxyiR7Z+lU6EJ0tINsm4Z+W85pEgCc1tFe4JdE04mBZhwSV/69xQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.0.1.tgz", + "integrity": "sha512-AJed1Y3iZSZCq8RA4hfwkYkLcfkHoXAg+rX5WYxZ7D2wY7p3CLgBO4+l+b/2gHge5gjkLME83HhhMjE3ZjEb+A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.0.1.tgz", + "integrity": "sha512-Pu0AxZfZYQlooyZUXit2TG4wzJ7uJJf0S4Wuz/Uq1EY7KwyLInnDsQpZzN1zgD+iX7IvCIKJ9TMhALQJtVtgGw==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "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" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.0.1.tgz", + "integrity": "sha512-lUSYDztaoqpYq169MARIjtTIRuiCAioq875HQpwqApBY3zdSWPeFqU3LohUQnWq6bSVsAup5jn6Dc+juZ4YBNQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.0.1.tgz", + "integrity": "sha512-Hv0EK29ihe5zGu2TJVnQ5gNpRrT0Xu5RZMjbtjHKuVohGnhZfZJDqGvw9RfIOYdpuUs6ofQZuMNO/8NWSX8qvQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.2.0.tgz", + "integrity": "sha512-UDmIRR0ybdafrJLHkSDgc/3PpsA9lnwXqGMSAyyhEF3InORFFkloAb0a6Naz+y8ePgEMfqbpyWjtzo8qGtOmEQ==", + "dev": true + }, + "@angular/material": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.0.1.tgz", + "integrity": "sha512-BozIS+9yiqFTfXBoZfhFUibY8meDUcv/e+CxhSHyv3vZw9XVTNTbiaX7tX/FX0Ai+1VKnwRTGrKvPKGFSqynCA==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/platform-browser": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.0.1.tgz", + "integrity": "sha512-yDTRmZns+X7OPc6BJqzJ2jMLpqJv5Wnpwa/fVz50vcb7YXepkSqBX0ZT1KqBwJ9pFRfGZ1BJj5ZXXf2Shrv8Qg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.1.tgz", + "integrity": "sha512-OWU2ArHFMVRTOIi1Em04Z2yYzPJ3fT8h1zr+5JlK1USYD6PtwqPxnFnWuSJcgbaEf6euzvVTIWY8Bx1Qdi1xzw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.0.1.tgz", + "integrity": "sha512-OfmPi0pa/C3l7cYjQEo6uWp7CCDH/4bDbvU6Bt7FnnVHqUI80Qu7sQq31pjipkZc71Ln5xr1NbKpE60Qn1Xveg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz", + "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", + "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", + "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-call-delegate": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", + "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", + "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", + "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/types": "^7.7.4", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", + "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", + "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", + "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", + "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.4.tgz", + "integrity": "sha512-ehGBu4mXrhs0FxAqN8tWkzF8GSIGAiEumu4ONZ/hD9M88uHcD+Yu2ttKfOCgwzoesJOJrtQh7trI5YPbRtMmnA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-simple-access": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", + "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", + "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-wrap-function": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", + "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", + "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", + "dev": true, + "requires": { + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-wrap-function": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", + "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helpers": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", + "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "dev": true, + "requires": { + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.4.tgz", + "integrity": "sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", + "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.4", + "@babel/plugin-syntax-async-generators": "^7.7.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", + "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.7.4" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", + "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.7.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz", + "integrity": "sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", + "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", + "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", + "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", + "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", + "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", + "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", + "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", + "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-define-map": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-optimise-call-expression": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", + "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", + "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz", + "integrity": "sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", + "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", + "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", + "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", + "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", + "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", + "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.4.tgz", + "integrity": "sha512-/542/5LNA18YDtg1F+QHvvUSlxdvjZoD/aldQwkq+E3WCkbEjNSN9zdrOXaSlfg3IfGi22ijzecklF/A7kVZFQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz", + "integrity": "sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.7.4", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", + "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", + "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", + "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", + "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", + "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz", + "integrity": "sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.7.4", + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", + "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.4.tgz", + "integrity": "sha512-e7MWl5UJvmPEwFJTwkBlPmqixCtr9yAASBqff4ggXTNicZiwbF8Eefzm6NVgfiBp7JdAGItecnctKTgH44q2Jw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", + "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", + "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", + "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", + "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", + "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", + "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", + "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/preset-env": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", + "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.5.5", + "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.5.0", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.5.5", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/runtime": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.4.tgz", + "integrity": "sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/runtime-corejs3": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.7.4.tgz", + "integrity": "sha512-BBIEhzk8McXDcB3IbOi8zQPzzINUp4zcLesVlBSOcyGhzPUU8Xezk5GAG7Sy5GVhGmAO0zGd2qRSeY2g4Obqxw==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.1.4.tgz", + "integrity": "sha512-UtL9GBkAMy0O/0Rkc4DG1WoFDWhAnAdvsQuJ1IFLmlN2v6HAX+E84tgUK0n15WLBhYBXXuhRx0dIW2jafjg1xQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@ngtools/webpack": { + "version": "8.3.20", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.20.tgz", + "integrity": "sha512-2e9Kat6PQEzqtNsZZpnOIvoDzyGwMELiuBYBa9keZeaXOD6TxjSyCRzHHXAldAXqvh4Uj2qjTid54Sy14CxtsQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.20", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.6.tgz", + "integrity": "sha512-F0/MrbvrJQJIjt0GwEkmf9PZUX0xQlCjlDcH6U7yBni0/+R5Gd5g3G0f12fsSa2iAwpwrLkKpiQluj29eFituQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/update": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.6.tgz", + "integrity": "sha512-vrzGIJtMiwLWl96+aJXMYrPgPtktLRpY8ZiNnlLm3pMDmeg08uButRh/pQGt02HuO/apTNJ5g0bmG8K5wS4I5A==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz", + "integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", + "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/jquery": { + "version": "3.3.30", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.30.tgz", + "integrity": "sha512-chB+QbLulamShZAFcTJtl8opZwHFBpDOP6nRLrPGkhC6N1aKWrDXg2Nc71tEg6ny6E8SQpRwbWSi9GdstH5VJA==", + "requires": { + "@types/sizzle": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.4.tgz", + "integrity": "sha512-dSvD36qnQs78G1BPsrZFdPpvLgMW/dnvr5+nTW2csMs5TiP9MOXrjUbnMZOEwnIuBklXtn7b6TPA2Cuq07bDHA==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", + "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "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" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "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-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", + "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "dev": true, + "requires": { + "browserslist": "^4.6.3", + "caniuse-lite": "^1.0.30000980", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.17", + "postcss-value-parser": "^4.0.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==" + }, + "axobject-query": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.1.tgz", + "integrity": "sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.4", + "@babel/runtime-corejs3": "^7.7.4" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "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" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "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": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "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" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "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=", + "dev": true, + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", + "node-releases": "^1.1.25" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "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==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz", + "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, + "caniuse-lite": { + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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=" + }, + "codelyzer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.1.0.tgz", + "integrity": "sha512-QiyY2/oDQnYx4mAVEDqr+z9MwrOto18tQFjExiuRChXCy0yvngS5fQpWIxvAGpbOmZFiR1PRTRLbEI71u10maA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "^2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", + "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==", + "dev": true, + "requires": { + "cacache": "^11.3.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "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" + } + } + } + }, + "core-js": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.7.tgz", + "integrity": "sha512-qaPVGw30J1wQ0GR3GvoPqlGf9GZfKKF4kFC7kiHlcsPTqH3txrs9crCp3ZiMAXuSenhz89Jnl4GZs/67S5VOSg==" + }, + "core-js-compat": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.7.tgz", + "integrity": "sha512-57+mgz/P/xsGdjwQYkwtBZR3LuISaxD1dEwVDtbk8xJMqAmwqaxLOvnNT7kdJ7jYE/NjNptyzXi+IQFMi/2fCw==", + "dev": true, + "requires": { + "browserslist": "^4.8.0", + "semver": "^6.3.0" + }, + "dependencies": { + "browserslist": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.0.tgz", + "integrity": "sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001012", + "electron-to-chromium": "^1.3.317", + "node-releases": "^1.1.41" + } + }, + "caniuse-lite": { + "version": "1.0.30001013", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001013.tgz", + "integrity": "sha512-hOAXaWKuq/UVFgYawxIOdPdyMQdYcwOCDOjnZcKn7wCgFUrhP7smuNZjGLuJlPSgE6aRA4cRJ+bGSrhtEt7ZAg==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.4.7.tgz", + "integrity": "sha512-Am3uRS8WCdTFA3lP7LtKR0PxgqYzjAMGKXaZKSNSC/8sqU0Wfq8R/YzoRs2rqtOVEunfgH+0q3O0BKOg0AvjPw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "3.1.9-1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz", + "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=" + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "dev": true + }, + "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" + } + }, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "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=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "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=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", + "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "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": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.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==", + "dev": true, + "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=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.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==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.2.tgz", + "integrity": "sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "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=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "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" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "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=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "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-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=" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "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" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", + "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "file-saver": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", + "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "globule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", + "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "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" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", + "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.6.tgz", + "integrity": "sha512-WFh77RI8bMIKdOvI/1/IBmgnM+Q7NOLhnwG91QJrM8lW+CIXCjTzhhUsT/svLvAkLmR10uWY4RyYbHMLkTglvg==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + } + }, + "license-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", + "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + } + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "requires": { + "mime-db": "1.42.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "ngx-papaparse": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ngx-papaparse/-/ngx-papaparse-4.0.4.tgz", + "integrity": "sha512-E++WVdVM1LJVOB7V/yYrx6Wb5iJ4XluRCdx3gBRKWC0hzfs7v6ge9IeLQ7ZDTOY8/YjWVfOlwFYZZdiqseTYTA==", + "requires": { + "papaparse": "^5.0.0", + "tslib": "^1.9.0" + } + }, + "ngx-print": { + "version": "1.2.0-beta.3", + "resolved": "https://registry.npmjs.org/ngx-print/-/ngx-print-1.2.0-beta.3.tgz", + "integrity": "sha512-woox8eUCsPnIZgKm36J4dE1gbt5P35nkqmmUqYcWegsfsP/jotAoxDy8W8Tb/LC8KqBoyOxACllG/ndKBBsUvA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "ngx-toastr": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-10.2.0.tgz", + "integrity": "sha512-6ASr5bcvQmtNKb4D2VEsQjCXyROq6GwberBWO0bVt+xcBYPUea4aRTgX8in9apX9buaTafzG+h3HlnIraspoPg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.41", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.41.tgz", + "integrity": "sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "node-sass": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", + "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "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" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "node-sass-tilde-importer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", + "requires": { + "find-parent-dir": "^0.3.0" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", + "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "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" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "papaparse": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.1.1.tgz", + "integrity": "sha512-KPkW4GNQxunmYTeJIjHFrvilcNuHBWrfgbyvmagEmfGOA4hnP1WIkPbv4yABhj1Nam3as4w+7MBiI27BntwqVg==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "print-js": { + "version": "1.0.63", + "resolved": "https://registry.npmjs.org/print-js/-/print-js-1.0.63.tgz", + "integrity": "sha512-WKf79bFeqJpwx5vcjvEuL0J1bRVA5QlKQY+usFksOx0WOApSJwQGgMlgM2PVub/R1uUMF4onc2SWRWPNz4R40g==" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz", + "integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==", + "dev": true, + "requires": { + "@types/node": "^6.0.46", + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.0.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "@types/node": { + "version": "6.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.9.tgz", + "integrity": "sha512-leP/gxHunuazPdZaCvsCefPQxinqUDsCxCR5xaDUrY2MkYxQRFZZwU5e7GojyYsGB7QVtCi7iVEl/hoFXQYc+w==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.5.0.tgz", + "integrity": "sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", + "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz", + "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", + "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "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" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rete": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/rete/-/rete-1.4.2.tgz", + "integrity": "sha512-uiaHX7+Dne/zZLDFMp3r1cnseP0FjK3zlBSiIDoDXKT59StS9/lECaBz5XcXWnUhj33ZS8B3ZG45LRkgSaaptw==" + }, + "rete-area-plugin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rete-area-plugin/-/rete-area-plugin-0.2.1.tgz", + "integrity": "sha512-MOeQRmSC/gjkZIMo0fNuomzunRplALqd86V+jSzuhBYchCw0wshv2/iXu4xRxVZkw9r1HpZxlz9gLkbatCbXMw==" + }, + "rete-connection-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rete-connection-plugin/-/rete-connection-plugin-0.9.0.tgz", + "integrity": "sha512-D+H1yAONBBFYXeMkz0sdpDm76XiqcF2N3FduaqMUqcoThocMaFB2O8TX3nJc76ksuYaLYqo/+OLXTxNa+5HQYQ==" + }, + "rete-context-menu-plugin": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/rete-context-menu-plugin/-/rete-context-menu-plugin-0.5.2.tgz", + "integrity": "sha512-d632OWLoyTgQa7RX2SSZo4mCGkFMFsfi7Z2T6HV7s7lQKt3GOybPM7zGQ/kVRcv8Y8uCdghxEdhE4g+taEyK7w==", + "requires": { + "lodash-es": "^4.17.15", + "vue": "^2.5.17" + } + }, + "rete-history-plugin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rete-history-plugin/-/rete-history-plugin-0.2.1.tgz", + "integrity": "sha512-WaDkAK+zT+ZDxM6QeBzjLVot6abcIaGGQKBQdoxoXVO9JD90xU+KVPlmvitOzHBff7HoM8XuN7wWzM+WSRUkpg==" + }, + "rete-minimap-plugin": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/rete-minimap-plugin/-/rete-minimap-plugin-0.3.1.tgz", + "integrity": "sha512-B89MwDxz0NBngE9bkf0F9jI++Jn/wsOZll88Xoa7snbBAdziVgmHikroSjiMAWlzwSNmHk7Mzo8DmezsAz46Jg==", + "requires": { + "vue": "^2.5.17" + } + }, + "rete-readonly-plugin": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/rete-readonly-plugin/-/rete-readonly-plugin-0.4.1.tgz", + "integrity": "sha512-kDJFWMVzRL2gowtUOExjb6tMfP4ztjcMS5xou45Y/i4KiHlYmKvxkPyqyWN2DQ8F1+fN+nmG5r/cpkbABOJt6w==" + }, + "rete-vue-render-plugin": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/rete-vue-render-plugin/-/rete-vue-render-plugin-0.5.0.tgz", + "integrity": "sha512-CEPp9jGDwgu+HVxwC6X/BLVeo3ZJOXnlBQ2GeI7xoszl9o47VHv9yFwCiGQBu2nGu7x4mYmVjsTZ9C10HZW0Ug==", + "requires": { + "vue": "^2.6.6" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", + "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "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" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.2.0.tgz", + "integrity": "sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "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" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "style-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", + "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", + "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "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" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "terser": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "requires": { + "glob": "^7.1.2" + } + }, + "ts-node": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.0.tgz", + "integrity": "sha512-klJsfswHP0FuOLsvBZ/zzCfUvakOSSxds78mVeK7I+qP76YWtxf16hEZsp3U+b0kIo82R5UatGFeblYMqabb2Q==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz", + "integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==", + "dev": true + }, + "uglify-js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", + "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz", + "integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.39.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.2.tgz", + "integrity": "sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz", + "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml2js": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", + "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "util.promisify": "~1.0.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/coney-create/package.json b/coney-create/package.json new file mode 100644 index 0000000..8fdf189 --- /dev/null +++ b/coney-create/package.json @@ -0,0 +1,77 @@ +{ + "name": "coney-create", + "version": "1.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --configuration=production --base-href=/coney/editor/", + "build-docker": "ng build --configuration=docker --base-href=/coney/create/", + "build-upm": "ng build --configuration=upm --base-href=/coney/create/", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e", + "compile-theme": "node-sass ./src/theme.scss --importer=node_modules/node-sass-tilde-importer ./src/coney-theme.css" + }, + "browser": { + "vue": "vue/dist/vue.min.js" + }, + "private": true, + "dependencies": { + "@angular/animations": "8.0.1", + "@angular/cdk": "8.0.1", + "@angular/common": "8.0.1", + "@angular/compiler": "8.0.1", + "@angular/core": "8.0.1", + "@angular/forms": "8.0.1", + "@angular/material": "8.0.1", + "@angular/platform-browser": "8.0.1", + "@angular/platform-browser-dynamic": "8.0.1", + "@angular/router": "8.0.1", + "@ng-bootstrap/ng-bootstrap": "^5.1.4", + "@types/jquery": "3.3.30", + "babel-polyfill": "^6.26.0", + "core-js": "^3.4.7", + "crypto-js": "^3.1.9-1", + "file-saver": "^2.0.2", + "hammerjs": "^2.0.8", + "jquery": "^3.4.1", + "ngx-papaparse": "^4.0.4", + "ngx-print": "^1.2.0-beta.3", + "ngx-toastr": "^10.2.0", + "node-sass": "^4.13.0", + "node-sass-tilde-importer": "^1.0.2", + "print-js": "^1.0.63", + "rete": "^1.4.2", + "rete-area-plugin": "0.2.1", + "rete-connection-plugin": "^0.9.0", + "rete-context-menu-plugin": "^0.5.2", + "rete-history-plugin": "0.2.1", + "rete-minimap-plugin": "^0.3.1", + "rete-readonly-plugin": "^0.4.1", + "rete-vue-render-plugin": "^0.5.0", + "rxjs": "6.5.2", + "validator": "^10.9.0", + "zone.js": "0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^0.803.20", + "@angular/cli": "8.0.6", + "@angular/compiler-cli": "8.0.1", + "@angular/language-service": "7.2.0", + "@types/jasmine": "2.8.8", + "@types/jasminewd2": "2.0.3", + "@types/node": "8.9.4", + "codelyzer": "5.1.0", + "jasmine-core": "2.99.1", + "jasmine-spec-reporter": "4.2.1", + "karma": "^4.4.1", + "karma-chrome-launcher": "2.2.0", + "karma-coverage-istanbul-reporter": "2.0.6", + "karma-jasmine": "1.1.2", + "karma-jasmine-html-reporter": "0.2.2", + "protractor": "5.4.0", + "ts-node": "7.0.0", + "tslint": "5.11.0", + "typescript": "3.4.2" + } +} diff --git a/coney-create/src/app/app.component.html b/coney-create/src/app/app.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/coney-create/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coney-create/src/app/app.component.spec.ts b/coney-create/src/app/app.component.spec.ts new file mode 100644 index 0000000..2c31d56 --- /dev/null +++ b/coney-create/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'coney-create'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('coney-create'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to coney-create!'); + }); +}); diff --git a/coney-create/src/app/app.component.ts b/coney-create/src/app/app.component.ts new file mode 100644 index 0000000..1bf9273 --- /dev/null +++ b/coney-create/src/app/app.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html' +}) +export class AppComponent { + title = 'coney-create'; +} diff --git a/coney-create/src/app/app.module.ts b/coney-create/src/app/app.module.ts new file mode 100644 index 0000000..054e8d8 --- /dev/null +++ b/coney-create/src/app/app.module.ts @@ -0,0 +1,102 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { AppComponent } from './app.component'; +import { HomeComponent } from './home.component'; +import { AddQuickQuestionDialogComponent } from './dialogs/add-quick-question-dialog.component'; +import { ConfirmDialogComponent } from './dialogs/confirm-dialog.component'; +import { DeleteDialogComponent } from './dialogs/delete-dialog.component'; +import { PrintDialogComponent } from './dialogs/print-dialog.component'; +import { PublishDialogComponent } from './dialogs/publish-dialog.component'; +import { SaveAsDialogComponent } from './dialogs/save-as-dialog.component'; +import { SearchConvDialogComponent } from './dialogs/search-conv-dialog.component'; +import { SearchTagDialogComponent } from './dialogs/search-tag-dialog.component'; +import { TranslationDialogComponent } from './dialogs/translation-dialog.component'; +import { ShareSurveyDialogComponent } from './dialogs/share-survey-dialog.component'; +import { BackendService } from './services/backend.service'; +import { RoutingService } from './services/routing.service'; +import { ReteComponent } from './rete/rete.component'; +import { AppRoutingModule } from './routing.module'; + +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { + MatInputModule, MatDialogModule, MatProgressSpinnerModule, + MatSliderModule, MatSelectModule, MatCheckboxModule, MatRadioModule, + MatButtonModule, MatProgressBarModule +} from '@angular/material'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ToastrModule } from 'ngx-toastr'; +import { NgxPrintModule } from 'ngx-print'; + +import { LoginComponent } from './auth/login/login.component'; +import { LogoutComponent } from './auth/logout/logout.component'; +import { AuthHtppInterceptorService } from './services/auth-http-interceptor.service'; + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + AddQuickQuestionDialogComponent, + ConfirmDialogComponent, + DeleteDialogComponent, + PrintDialogComponent, + PublishDialogComponent, + SaveAsDialogComponent, + SearchConvDialogComponent, + SearchTagDialogComponent, + TranslationDialogComponent, + ShareSurveyDialogComponent, + ReteComponent, + LoginComponent, + LogoutComponent + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + HttpClientModule, + MatDialogModule, + MatProgressSpinnerModule, + MatProgressBarModule, + FormsModule, + ReactiveFormsModule, + AppRoutingModule, + MatSliderModule, + MatSelectModule, + MatCheckboxModule, + MatButtonModule, + MatRadioModule, + MatInputModule, + NgbModule, + RouterModule, + NgxPrintModule, + ToastrModule.forRoot() + ], + exports: [ + MatDialogModule, + MatProgressSpinnerModule + ], + providers: [ + { + provide: HTTP_INTERCEPTORS, useClass: AuthHtppInterceptorService, multi: true + }, + BackendService, + RoutingService, + ], + bootstrap: [AppComponent], + entryComponents: [ + SearchConvDialogComponent, + SaveAsDialogComponent, + DeleteDialogComponent, + ConfirmDialogComponent, + PublishDialogComponent, + AddQuickQuestionDialogComponent, + PrintDialogComponent, + SearchTagDialogComponent, + TranslationDialogComponent, + ShareSurveyDialogComponent + ] +}) +export class AppModule { } diff --git a/coney-create/src/app/auth/login/login.component.css b/coney-create/src/app/auth/login/login.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-create/src/app/auth/login/login.component.html b/coney-create/src/app/auth/login/login.component.html new file mode 100644 index 0000000..50a90fc --- /dev/null +++ b/coney-create/src/app/auth/login/login.component.html @@ -0,0 +1,42 @@ +

    +
    +
    +
    + +
    Coney Create
    +
    +
    +

    Wrong credentials

    +
    + + +
    + +
    +
    + + + + +
    + + + +
    + + + +
    + + +
    +
    + + + +
    +
    + +
    \ No newline at end of file diff --git a/coney-create/src/app/auth/login/login.component.spec.ts b/coney-create/src/app/auth/login/login.component.spec.ts new file mode 100644 index 0000000..d6d85a8 --- /dev/null +++ b/coney-create/src/app/auth/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-create/src/app/auth/login/login.component.ts b/coney-create/src/app/auth/login/login.component.ts new file mode 100644 index 0000000..1b11868 --- /dev/null +++ b/coney-create/src/app/auth/login/login.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { AuthenticationService } from '../../services/authentication.service'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent implements OnInit { + + username = '' + password = '' + invalidLogin = false; + isLogging = false; + + constructor(private router: Router, + private loginservice: AuthenticationService) { } + + ngOnInit() { + if(!environment.enterprise){ + this.router.navigate(['']); + } + } + + checkLogin() { + this.invalidLogin = false; + this.isLogging = true; + (this.loginservice.authenticate(this.username, this.password).subscribe( + data => { + this.isLogging = false; + this.router.navigate(['']) + this.invalidLogin = false + }, + error => { + this.isLogging = false; + this.invalidLogin = true + + } + ) + ); + + } +} diff --git a/coney-create/src/app/auth/logout/logout.component.css b/coney-create/src/app/auth/logout/logout.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-create/src/app/auth/logout/logout.component.html b/coney-create/src/app/auth/logout/logout.component.html new file mode 100644 index 0000000..c6ae40e --- /dev/null +++ b/coney-create/src/app/auth/logout/logout.component.html @@ -0,0 +1 @@ +

    logout works!

    diff --git a/coney-create/src/app/auth/logout/logout.component.spec.ts b/coney-create/src/app/auth/logout/logout.component.spec.ts new file mode 100644 index 0000000..c04dbe2 --- /dev/null +++ b/coney-create/src/app/auth/logout/logout.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogoutComponent } from './logout.component'; + +describe('LogoutComponent', () => { + let component: LogoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LogoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LogoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-create/src/app/auth/logout/logout.component.ts b/coney-create/src/app/auth/logout/logout.component.ts new file mode 100644 index 0000000..a3621e5 --- /dev/null +++ b/coney-create/src/app/auth/logout/logout.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { AuthenticationService } from 'src/app/services/authentication.service'; + +@Component({ + selector: 'app-logout', + templateUrl: './logout.component.html', + styleUrls: ['./logout.component.css'] +}) +export class LogoutComponent implements OnInit { + + constructor( + private authentocationService: AuthenticationService, + private router: Router) { + + } + + ngOnInit() { + this.authentocationService.logOut(); + this.router.navigate(['login']); + } + +} \ No newline at end of file diff --git a/coney-create/src/app/dialogs/add-quick-question-dialog.component.html b/coney-create/src/app/dialogs/add-quick-question-dialog.component.html new file mode 100644 index 0000000..af98782 --- /dev/null +++ b/coney-create/src/app/dialogs/add-quick-question-dialog.component.html @@ -0,0 +1,32 @@ +
    +
    +
    + + + + {{type}} + + +
    +
    + +
    +
    +
    +
    +
    +
    + N° of answers: + +
    +
    +

    Add different answers separated by '-'

    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/add-quick-question-dialog.component.ts b/coney-create/src/app/dialogs/add-quick-question-dialog.component.ts new file mode 100644 index 0000000..271eaa1 --- /dev/null +++ b/coney-create/src/app/dialogs/add-quick-question-dialog.component.ts @@ -0,0 +1,49 @@ +import { Component, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; + +@Component({ + selector: 'app-add-quick-question-dialog', + templateUrl: './add-quick-question-dialog.component.html' +}) + +export class AddQuickQuestionDialogComponent { + + pickedType: string; + types: string[] = ['Open-ended', 'Multiple choice', 'Checkboxes']; + public answersAmount = 1; + public content = ""; + radioText = true; + + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, ) { + + } + + save() { + + if (this.pickedType != "Multiple choice") { + this.answersAmount = 1; + this.content = ""; + } + + var result = { type: "", num: 0, content: "" }; + result.content = this.content; + result.num = this.answersAmount; + + if(this.pickedType=="Checkboxes"){ + result.type = "checkbox"; + } else if(this.pickedType == "Open-ended"){ + result.type = "single"; + } else { + result.type = "multiple"; + } + this.dialogRef.close(result); + } + + discard() { + this.dialogRef.close(); + } + + close() { + this.dialogRef.close(); + } +} diff --git a/coney-create/src/app/dialogs/confirm-dialog.component.html b/coney-create/src/app/dialogs/confirm-dialog.component.html new file mode 100644 index 0000000..bd3100c --- /dev/null +++ b/coney-create/src/app/dialogs/confirm-dialog.component.html @@ -0,0 +1,12 @@ +
    +
    +

    This chat contains unsaved changes. Do you want to save before leaving?

    +
    + + + + + + + +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/confirm-dialog.component.ts b/coney-create/src/app/dialogs/confirm-dialog.component.ts new file mode 100644 index 0000000..a4cc1fd --- /dev/null +++ b/coney-create/src/app/dialogs/confirm-dialog.component.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { BackendService } from '../services/backend.service'; +import { MatDialogRef } from '@angular/material'; + +@Component({ + selector: 'app-confirm-dialog', + templateUrl: './confirm-dialog.component.html' +}) + +export class ConfirmDialogComponent { + + constructor(private backend: BackendService, public dialogRef: MatDialogRef) { } + + save() { + this.dialogRef.close('save'); + } + + discard() { + this.dialogRef.close('discard'); + } + + close() { + this.dialogRef.close(); + } + +} \ No newline at end of file diff --git a/coney-create/src/app/dialogs/delete-dialog.component.html b/coney-create/src/app/dialogs/delete-dialog.component.html new file mode 100644 index 0000000..582314e --- /dev/null +++ b/coney-create/src/app/dialogs/delete-dialog.component.html @@ -0,0 +1,13 @@ +
    +
    +

    Do you confirm to delete this chat?

    +
    + +
    + +
    + +
    + +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/delete-dialog.component.ts b/coney-create/src/app/dialogs/delete-dialog.component.ts new file mode 100644 index 0000000..1ac90e3 --- /dev/null +++ b/coney-create/src/app/dialogs/delete-dialog.component.ts @@ -0,0 +1,32 @@ +import { Component, Inject } from '@angular/core'; +import { BackendService } from '../services/backend.service'; +import { MatDialogRef } from '@angular/material'; +import { MAT_DIALOG_DATA } from '@angular/material'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-delete-dialog', + templateUrl: './delete-dialog.component.html' +}) + +export class DeleteDialogComponent { + constructor(@Inject(MAT_DIALOG_DATA) public data, + private backend: BackendService, + public dialogRef: MatDialogRef, + private router: Router) { } + + delete() { + let endpoint = '/create/deleteConversation?'; + endpoint = endpoint + 'conversationId=' + this.data.conversationId; + endpoint = endpoint + '&status=' + this.data.status; + + this.backend.deleteObject(endpoint).subscribe(res => { + this.dialogRef.close('deleted'); + }); + } + + close() { + this.dialogRef.close(); + } + +} \ No newline at end of file diff --git a/coney-create/src/app/dialogs/print-dialog.component.html b/coney-create/src/app/dialogs/print-dialog.component.html new file mode 100644 index 0000000..a0b66a7 --- /dev/null +++ b/coney-create/src/app/dialogs/print-dialog.component.html @@ -0,0 +1,68 @@ +
    + + +
    +
    +
    {{title}}
    +
    +
    + +
    +
    + + +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/print-dialog.component.ts b/coney-create/src/app/dialogs/print-dialog.component.ts new file mode 100644 index 0000000..217e06e --- /dev/null +++ b/coney-create/src/app/dialogs/print-dialog.component.ts @@ -0,0 +1,80 @@ +import { Component, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import printJS from 'print-js' + +@Component({ + selector: 'app-print-dialog', + templateUrl: './print-dialog.component.html' +}) + +export class PrintDialogComponent { + + res: any; + title: string; + questions = []; + + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data, ) { + + this.title = data.title; + + this.questions = JSON.parse(data.questions); + + for (var i = 0; i < this.questions.length; i++) { + var qElement = this.questions[i]; + + for (var j = 0; j < qElement.answers.length; j++) { + var aElement = qElement.answers[j]; + var questionReteId = aElement.nextQuestionId; + var index = this.questions.findIndex(obj => obj.id == questionReteId); + if (index != -1 && questionReteId != 0) { + this.questions[i].answers[j].nextQuestionId = this.questions[index].order; + } + } + + var answersTmp = qElement.answers.sort((a, b) => (a.order > b.order) ? 1 : -1); + this.questions[i].answers = answersTmp; + } + } + + save() { + + + } + + print(){ + let printContents, popupWin; + printContents = document.getElementById('toPrint').innerHTML; + popupWin = window.open('', '_blank', 'top=0,left=0,height=100%,width=auto'); + popupWin.document.open(); + popupWin.document.write(` + + + Print tab + + + ${printContents} + ` + ); + popupWin.document.close(); + } + + printTest() { + printJS({ + printable: "toPrint", + type: "html", + style: "", + css: ['src/styles.css', 'src/app/home.component.css'] + }); + } + + discard() { + this.dialogRef.close('discard'); + } + + close() { + this.dialogRef.close(); + } + +} diff --git a/coney-create/src/app/dialogs/publish-dialog.component.html b/coney-create/src/app/dialogs/publish-dialog.component.html new file mode 100644 index 0000000..f3d67cb --- /dev/null +++ b/coney-create/src/app/dialogs/publish-dialog.component.html @@ -0,0 +1,17 @@ +
    +
    +

    + Publishing this chat, you won't be able to modify it in the future. + Do you confirm this operation? +

    +
    + +
    + +
    + +
    + +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/publish-dialog.component.ts b/coney-create/src/app/dialogs/publish-dialog.component.ts new file mode 100644 index 0000000..f04ba22 --- /dev/null +++ b/coney-create/src/app/dialogs/publish-dialog.component.ts @@ -0,0 +1,38 @@ +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; +import { BackendService } from '../services/backend.service'; + +@Component({ + selector: 'app-publish-dialog', + templateUrl: './publish-dialog.component.html' +}) + +export class PublishDialogComponent { + + canPress = true; + + constructor(private backend: BackendService, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data) { } + + publish() { + + document.getElementById("publishBtn").innerHTML = "uploading..."; + this.canPress = false; + this.backend.postJson('/create/publishConversation', this.data.conversation).subscribe( + res => { + this.dialogRef.close(res); + this.canPress = true; + document.getElementById("publishBtn").innerHTML = "done"; + }, err => { + this.dialogRef.close(err.status); + this.canPress = true; + document.getElementById("publishBtn").innerHTML = "done"; + } + ); + } + + close() { + this.dialogRef.close(); + } +} diff --git a/coney-create/src/app/dialogs/save-as-dialog.component.html b/coney-create/src/app/dialogs/save-as-dialog.component.html new file mode 100644 index 0000000..5829bc4 --- /dev/null +++ b/coney-create/src/app/dialogs/save-as-dialog.component.html @@ -0,0 +1,44 @@ +
    +

    Save as:

    +

    {{errorMessage}}

    +
    + + + + + +
    + + + Choose a Project + + + {{project.projectName}} + + + + + + Access Level + + + {{level}} + + + + + + Language + + + {{language.lang}} + + + + +
    + +
    + +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/save-as-dialog.component.ts b/coney-create/src/app/dialogs/save-as-dialog.component.ts new file mode 100644 index 0000000..b4de642 --- /dev/null +++ b/coney-create/src/app/dialogs/save-as-dialog.component.ts @@ -0,0 +1,108 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { BackendService } from '../services/backend.service'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-save-as-dialog', + templateUrl: './save-as-dialog.component.html' +}) + +export class SaveAsDialogComponent implements OnInit{ + + oldTitle = ''; + titleValue = ''; + titleFieldEmpty = false; + projectFieldEmpty = false; + languageFieldEmpty = false; + + showProject = environment.enterprise; + + projectValue = {projectName: "", accessLevel: 0}; + levelValue = 1; + errorMessage = "All fields are required"; + projects = []; + levels = [1, 2, 3]; + languageValue = ''; + languages = [{lang:"Afrikaans", tag: "af"},{lang:"Albanian ", tag: "sp"},{lang:"Arabic", tag: "ar"},{lang:"Basque", tag: "eu"}, + {lang:"Byelorussian ", tag: "be"},{lang:"Bulgarian", tag: "bg"},{lang:"Catalan", tag: "va"},{lang:"Croatian", tag: "hr"},{lang:"Czech", tag: "cs"}, + {lang:"Danish", tag: "da"},{lang:"Dutch", tag: "nl"},{lang:"English", tag: "en"},{lang:"Esperanto", tag: "eo"},{lang:"Estonian", tag: "et"}, + {lang:"Finnish", tag: "fi"},{lang:"Faronese", tag: "fo"},{lang:"French", tag: "fr"}, + {lang:"Galician", tag: "gl"},{lang:"German", tag: "de"},{lang:"Greek", tag: "el"},{lang:"Hebrew", tag: "he"},{lang:"Hungarian", tag: "hu"}, + {lang:"Icelandic", tag: "is"},{lang:"Italian", tag: "it"},{lang:"Irish", tag: "ga"},{lang:"Japanese", tag: "ja"},{lang:"Korean", tag: "ko"}, + {lang:"Latvian", tag: "lv"},{lang:"Macedonian", tag: "mk"},{lang:"Maltese", tag: "mt"},{lang:"Norwegian", tag: "nb"}, + {lang:"Polish", tag: "pl"},{lang:"Portuguese", tag: "pt"},{lang:"Romanian", tag: "ro"}, + {lang:"Russian", tag: "ru"},{lang:"Scottish", tag: "gd"},{lang:"Slovak", tag: "sk"},{lang:"Slovenian", tag: "sl"}, + {lang:"Serbian", tag: "sr"},{lang:"Spanish", tag: "es"},{lang:"Swedish", tag: "sv"},{lang:"Turkish", tag: "tr"},{lang:"Ukranian", tag: "uk"}]; + + + constructor(private backend: BackendService, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) { + this.titleValue = data.title; + this.oldTitle = data.title; + } + + + ngOnInit() { + if(environment.enterprise){ + this.getProjects(); + } + console.log("enterprise: "+this.showProject); + } + + getProjects(){ + this.projectValue = {projectName: "", accessLevel: 0}; + let endpoint = '/create/getCustomerProjects'; + this.backend.getRequest(endpoint).subscribe(res => { + const json = JSON.parse(res); + this.projects = json; + this.projectValue = this.projects[0]; + }, err => { + console.log("No projects found"); + }); + } + + projectChanged(){ + if(this.projectValue.accessLevel == 3){ + this.levels = [1, 2, 3]; + } else if(this.projectValue.accessLevel == 2){ + this.levels = [1, 2]; + } else { + this.levels = [1]; + } + } + + changed(){ + this.projectFieldEmpty = false; + this.titleFieldEmpty = false; + } + + save() { + + + this.titleFieldEmpty = this.titleValue === ''; + this.languageFieldEmpty = this.languageValue === ''; + + if(environment.enterprise){ + + this.projectFieldEmpty = this.projectValue.projectName === ""; + + if (!this.titleFieldEmpty && !this.projectFieldEmpty && !this.languageFieldEmpty) { + var resEnterprise = {title : this.titleValue, projectName : this.projectValue.projectName, + accessLevel: this.levelValue, overwrite: false, lang : this.languageValue}; + if(this.oldTitle == this.titleValue){ resEnterprise.overwrite = true; } + this.dialogRef.close(resEnterprise); + } + + } else { + + if (!this.titleFieldEmpty && !this.languageFieldEmpty) { + var resPublic = {title : this.titleValue, overwrite: false, lang : this.languageValue}; + if(this.oldTitle == this.titleValue){ resPublic.overwrite = true; } + this.dialogRef.close(resPublic); + } + + } + + } + +} diff --git a/coney-create/src/app/dialogs/search-conv-dialog.component.html b/coney-create/src/app/dialogs/search-conv-dialog.component.html new file mode 100644 index 0000000..c8f3fd3 --- /dev/null +++ b/coney-create/src/app/dialogs/search-conv-dialog.component.html @@ -0,0 +1,83 @@ + +
    +
    + +

    Open Conversation

    +
    +
    + + + +
    +
    + + Status + + + {{i}} + + + +
    +
    + + Projects + + + {{i}} + + + +
    + +
    + + Status + + + {{i}} + + + +
    +
    +
    + + + + +
    +

    No + chats found

    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/search-conv-dialog.component.ts b/coney-create/src/app/dialogs/search-conv-dialog.component.ts new file mode 100644 index 0000000..98bc0bc --- /dev/null +++ b/coney-create/src/app/dialogs/search-conv-dialog.component.ts @@ -0,0 +1,95 @@ +import { Component } from '@angular/core'; +import { BackendService } from '../services/backend.service'; +import { MatDialogRef } from '@angular/material'; +import { ENUM_CONV_STATUS } from '../model/conversational.model'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-search-conv-dialog', + templateUrl: './search-conv-dialog.component.html' +}) + +export class SearchConvDialogComponent { + + titleValue = ''; + + selectedStatus = "all"; + selectedProject = "all"; + + projects = ["all"]; + chats = []; + noTitleChats = []; + statuses = ["all", "saved", "published", "unpublished"]; + initialChats = []; + chatsFound = true; + isLoading = false; + showProject = environment.enterprise; + + constructor(private backend: BackendService, public dialogRef: MatDialogRef) { + this.isLoading = true; + this.startSearch(); + } + + + selectionChanged(){ + + if (this.selectedProject !== undefined && this.selectedProject !== "" && this.selectedProject!== 'all') { + this.noTitleChats = this.initialChats.filter(x => x.projectName.toLowerCase() == this.selectedProject.toLowerCase()); + } else { + this.noTitleChats = this.initialChats; + } + + if (this.selectedStatus !== undefined && this.selectedStatus !== "" && this.selectedStatus!== 'all') { + this.noTitleChats = this.noTitleChats.filter(x => x.status.toLowerCase() == this.selectedStatus.toLowerCase()); + } + + this.chats = this.noTitleChats; + this.titleSelectionChanged(); + + } + + titleSelectionChanged() { + if (this.titleValue !== "") { + this.chats = this.noTitleChats.filter(x => x.conversationTitle.toLowerCase().includes(this.titleValue.toLowerCase())); + } else { + this.chats = this.noTitleChats; + } + } + + startSearch() { + let endpoint = '/create/searchConversation?'; + + this.backend.getRequest(endpoint).subscribe(json => { + + this.isLoading = false; + this.chats = JSON.parse(json); + this.chats.sort(function(a, b) { + return a.conversationTitle.toLowerCase().localeCompare(b.conversationTitle.toLowerCase()); + }); + + if (this.chats.length > 0) { + this.chatsFound = true; + this.initialChats = this.chats; + this.noTitleChats = this.chats; + if(this.showProject){ + this.getProjects(); + } + } else { + this.chatsFound = false; + } + }); + } + + getProjects(){ + for(var i = 0; i +

    tag your question

    +
    +
    + + + + + +
    +
    +

    new tags will be + displayed after saving the conversation

    +
    +
    +

    No tags found in the database, write one to add + it

    + +

    Looking in database, press + to skip and add this tag

    + +
    + +
    + +
    +
    + +
    +

    No tag added yet

    + + +
    + +
    +
    + +
    +
    + +
    + \ No newline at end of file diff --git a/coney-create/src/app/dialogs/search-tag-dialog.component.ts b/coney-create/src/app/dialogs/search-tag-dialog.component.ts new file mode 100644 index 0000000..d058f39 --- /dev/null +++ b/coney-create/src/app/dialogs/search-tag-dialog.component.ts @@ -0,0 +1,122 @@ +import { Component, ChangeDetectorRef } from '@angular/core'; +import { BackendService } from '../services/backend.service'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { Inject } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { ENUM_OPERATION_FEEDBACK, ENUM_ERROR } from '../model/conversational.model'; + +@Component({ + selector: 'app-search-tag-dialog', + templateUrl: './search-tag-dialog.component.html' +}) +export class SearchTagDialogComponent { + + tags = []; + initial_tags = []; + tagsFound = true; + + tagsAdded = false; + currentTag = ""; + tagToAdd = ""; + + constructor(private cd : ChangeDetectorRef, private backend: BackendService, public dialogRef: MatDialogRef, private toastr: ToastrService, @Inject(MAT_DIALOG_DATA) data) { + this.startSearch(); + if(data!=undefined && data != ""){ + this.tagToAdd = data; + this.tagsAdded = true; + } + } + + startSearch() { + + let endpoint = '/create/searchTags'; + this.backend.getRequest(endpoint).subscribe(json => { + this.tags = JSON.parse(json); + + this.tags.sort(function(a, b) { + return a.text.toLowerCase().localeCompare(b.text.toLowerCase()); + }); + + for(var i = 0; i< this.tags.length; i++){ + this.tags[i].text = this.tags[i].text.toLowerCase(); + } + + this.initial_tags = this.tags; + + if (this.tags.length > 0) { + this.tagsFound = true; + } else { + this.tagsFound = false; + } + }, err => { + if (err.status === 409) { + this.printErr(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.RES_409); + } else { + this.printErr(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.GENERIC); + } + }); + } + + //search bot filter (REEEEAALLY NOT OPTIMIZED) + filterTags(e){ + this.tags = this.initial_tags.filter(x => x.text.includes(e.toLowerCase())); + this.cd.detectChanges(); + } + + //deletes tag box and removes the tag from the returned list + deleteOne(e: MouseEvent) { + this.tagToAdd = ""; + this.tagsAdded = false; + } + + //tag is added by the selectable one + //if it is not already there + addTag(tag: string) { + + + var tmpTag = ""; + if(tag==undefined){ + tmpTag = this.currentTag.toLowerCase(); + } else { + tmpTag = tag.toLowerCase(); + } + this.tagToAdd = tmpTag; + if(this.tagToAdd != "" && this.tagToAdd!=undefined){ + this.tagsAdded = true; + } + + } + + //tag is added from input box + /*if it is not already there + change(e) { + if(this.tagToAdd != e.target.value){ + this.tagsAdded = true; + this.tagToAdd = e.target.value.toLowerCase(); + } + e.target.value=""; + this.tags = this.initial_tags; + }*/ + + //closes the dialog + tagsSelected(e: MouseEvent) { + this.dialogRef.close(this.tagToAdd); + } + + printErr(type: string, msg: string){ + switch (type) { + case ENUM_OPERATION_FEEDBACK.SUCCESS: + this.toastr.success(msg, ''); + break; + case ENUM_OPERATION_FEEDBACK.INFO: + this.toastr.info(msg, ''); + break; + case ENUM_OPERATION_FEEDBACK.WARNING: + this.toastr.warning(msg, ''); + break; + case ENUM_OPERATION_FEEDBACK.ERROR: + this.toastr.error(msg, ''); + break; + } + } +} diff --git a/coney-create/src/app/dialogs/share-survey-dialog.component.html b/coney-create/src/app/dialogs/share-survey-dialog.component.html new file mode 100644 index 0000000..151c2c9 --- /dev/null +++ b/coney-create/src/app/dialogs/share-survey-dialog.component.html @@ -0,0 +1,18 @@ +
    +

    Share link


    +

    Copy this url (click on it) and share it with anyone you want to let them fill your survey!

    + +
    + +
    + +
    +
    +

    {{genericLink}}

    +
    +
    + + + +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/share-survey-dialog.component.ts b/coney-create/src/app/dialogs/share-survey-dialog.component.ts new file mode 100644 index 0000000..51ce801 --- /dev/null +++ b/coney-create/src/app/dialogs/share-survey-dialog.component.ts @@ -0,0 +1,46 @@ +import { Component, ChangeDetectorRef } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { Inject } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-share-survey-dialog', + templateUrl: './share-survey-dialog.component.html' +}) +export class ShareSurveyDialogComponent { + + genericLink = ""; + + constructor(public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) data, + private toastr: ToastrService){ + if(data!=undefined){ + this.genericLink = data; + } + } + + copyText(){ + let selBox = document.createElement('textarea'); + selBox.style.position = 'fixed'; + selBox.style.left = '0'; + selBox.style.top = '0'; + selBox.style.opacity = '0'; + selBox.value = this.genericLink; + document.body.appendChild(selBox); + selBox.focus(); + selBox.select(); + document.execCommand('copy'); + document.body.removeChild(selBox); + + this.printSuccess("Copied to clipboard!"); + } + + close(){ + this.dialogRef.close(); + } + + printSuccess(msg: string){ + this.toastr.info(msg, ''); + } + +} \ No newline at end of file diff --git a/coney-create/src/app/dialogs/translation-dialog.component.html b/coney-create/src/app/dialogs/translation-dialog.component.html new file mode 100644 index 0000000..90ebca5 --- /dev/null +++ b/coney-create/src/app/dialogs/translation-dialog.component.html @@ -0,0 +1,40 @@ +
    + +
    +
    Conversation Translation
    +
    + +
    + +
    +
    +

    {{errorMessage}}

    + + +
    + + Language + + + {{i.lang}} + + + + +
    + +
    + +
    + +
    +
    +
    You are uploading the {{selectedLanguage.lang}} translation
    + +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/dialogs/translation-dialog.component.ts b/coney-create/src/app/dialogs/translation-dialog.component.ts new file mode 100644 index 0000000..653bad1 --- /dev/null +++ b/coney-create/src/app/dialogs/translation-dialog.component.ts @@ -0,0 +1,197 @@ +import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { BackendService } from '../services/backend.service'; +import { saveAs } from 'file-saver'; +import { Papa } from 'ngx-papaparse'; + +@Component({ + selector: 'translation-dialog', + templateUrl: './translation-dialog.component.html' +}) + +export class TranslationDialogComponent { + + @ViewChild('fileImportInput', { static: false }) fileImportInput: any; + + selectedLanguage: any; + languages = [{ lang: "Afrikaans", tag: "af" }, { lang: "Albanian ", tag: "sp" }, { lang: "Arabic", tag: "ar" }, { lang: "Basque", tag: "eu" }, + { lang: "Byelorussian ", tag: "be" }, { lang: "Bulgarian", tag: "bg" }, { lang: "Catalan", tag: "va" }, { lang: "Croatian", tag: "hr" }, { lang: "Czech", tag: "cs" }, + { lang: "Danish", tag: "da" }, { lang: "Dutch", tag: "nl" }, { lang: "English", tag: "en" }, { lang: "Esperanto", tag: "eo" }, { lang: "Estonian", tag: "et" }, + { lang: "Finnish", tag: "fi" }, { lang: "Faronese", tag: "fo" }, { lang: "French", tag: "fr" }, + { lang: "Galician", tag: "gl" }, { lang: "German", tag: "de" }, { lang: "Greek", tag: "el" }, { lang: "Hebrew", tag: "he" }, { lang: "Hungarian", tag: "hu" }, + { lang: "Icelandic", tag: "is" }, { lang: "Italian", tag: "it" }, { lang: "Irish", tag: "ga" }, { lang: "Japanese", tag: "ja" }, { lang: "Korean", tag: "ko" }, + { lang: "Latvian", tag: "lv" }, { lang: "Macedonian", tag: "mk" }, { lang: "Maltese", tag: "mt" }, { lang: "Norwegian", tag: "nb" }, + { lang: "Polish", tag: "pl" }, { lang: "Portuguese", tag: "pt" }, { lang: "Romanian", tag: "ro" }, + { lang: "Russian", tag: "ru" }, { lang: "Scottish", tag: "gd" }, { lang: "Slovak", tag: "sk" }, { lang: "Slovenian", tag: "sl" }, + { lang: "Serbian", tag: "sr" }, { lang: "Spanish", tag: "es" }, { lang: "Swedish", tag: "sv" }, { lang: "Turkish", tag: "tr" }, { lang: "Ukranian", tag: "uk" }]; + + isLoading = false; + isBeingConfirmed = false; + emptyFields = false; + uploadButtonEnabled = false; + areTranslationsPresent = false; + errorMessage = "All fields are required"; + conversationId = ""; + conversationTitle = ""; + csvContent: string; + jsonToReturn: any; + public csvRecords: any[] = []; + + constructor(private backend: BackendService, + private papa: Papa, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data) { + this.conversationId = data.conversationId; + this.conversationTitle = data.conversationTitle; + } + + fileChangeListener($event: any): void { + + this.emptyFields = false; + var files = $event.srcElement.files; + + if (this.isCSVFile(files[0])) { + + this.papa.parse(files[0], { + encoding: "ansi_x3.4-1968", + complete: (result) => { + let headersRow = result.data[0]; + if (!this.isHeaderValid(headersRow)) { + this.emptyFields = true; + this.errorMessage = "The CSV header format is not supported"; + this.fileReset(); + return; + } + + this.csvRecords = this.getDataRecordsArrayFromCSVFile(result.data, headersRow.length); + this.uploadButtonEnabled = true; + } + + }); + } else { + alert("Please import valid .csv file."); + this.fileReset(); + } + } + + getHeaderArray(csvRecordsArr: any) { + let headers = csvRecordsArr[0].split(","); + let headerArray = []; + + for (let j = 0; j < headers.length; j++) { + headerArray.push(headers[j]); + } + return headerArray; + } + + getDataRecordsArrayFromCSVFile(csvRecordsArray: any, headerLength: any) { + let dataArr = []; + + for (let i = 1; i < csvRecordsArray.length; i++) { + + let row = csvRecordsArray[i]; + if (row.length == headerLength) { + let blockRecord: any = {}; + + blockRecord.block_id = row[0].trim().replace(/"/g, ""), + blockRecord.translation = row[3].trim().replace(/"/g, "") + if (blockRecord.translation != "") { + this.areTranslationsPresent = true; + } + dataArr.push(blockRecord); + } + } + return dataArr; + } + + isHeaderValid(header: any) { + return header[0] == "block_id" && header[1] == "type" && header[2] == "text" + && header[3] == "translation"; + } + + isCSVFile(file: any) { + return file.name.endsWith(".csv"); + } + + fileReset() { + this.fileImportInput.nativeElement.value = ""; + this.csvRecords = []; + this.areTranslationsPresent = false; + this.isLoading = false; + this.isBeingConfirmed = false; + this.uploadButtonEnabled = false; + } + + selectSelChanged() { + this.emptyFields = false; + } + + uploadCSV() { + if (this.selectedLanguage == undefined || this.selectedLanguage.tag == undefined || this.csvRecords.length == 0) { + this.errorMessage = "All fields are required"; + this.emptyFields = true; + return; + } else if (!this.areTranslationsPresent) { + this.emptyFields = true; + this.errorMessage = "No translated blocks were found"; + return; + } + + this.jsonToReturn = { + conversationId: this.conversationId, + language: this.selectedLanguage.tag, + blocks: this.csvRecords + }; + + this.emptyFields = false; + this.isBeingConfirmed = true; + } + + goBack() { + this.isBeingConfirmed = false; + } + + sendData() { + + this.isLoading = true; + var json = JSON.parse(JSON.stringify(this.jsonToReturn)); + + let endpoint = '/create/uploadTranslation'; + + this.backend.postJson(endpoint, json).subscribe( + (res) => { + + var r: boolean = (JSON.stringify(res) == "true"); + if (r) { + this.dismissDialog(); + } + this.isLoading = false; + }, err => { + this.isLoading = false; + } + ); + } + + downloadCSV() { + + this.isLoading = true; + + var strt = "translation_"; + let endpoint = '/create/getTranslationCSV'; + endpoint = endpoint + '?conversationId=' + this.conversationId; + + this.backend.getRequest(endpoint).subscribe( + (res) => { + const blob = new Blob([res], { type: 'text/plain' }); + saveAs(blob, strt + this.conversationTitle + ".csv"); + this.isLoading = false; + }, err => { + this.isLoading = false; + } + ); + } + + dismissDialog() { + this.dialogRef.close("translation_uploaded"); + } +} diff --git a/coney-create/src/app/home.component.css b/coney-create/src/app/home.component.css new file mode 100644 index 0000000..68827a6 --- /dev/null +++ b/coney-create/src/app/home.component.css @@ -0,0 +1,259 @@ +.title { + background-color: black; + color: white; + } + + + .buttons { + padding-top: 10px; + padding-left: 10px; + padding-right: 10px; + } + + #low-right-nav{ + display: flex; + position: fixed; + right: 170px; + flex-flow: row; + top: 32px; + } + + #bottom-status{ + font-size: 20px; + bottom: 25px; + left: 35px; + width: fit-content; + position: fixed; + display: inline-flex; + flex-direction: row; + } + + @media only screen and (min-width: 769px){ + #commands-container{ + position: fixed; + left: 4px; + top: 50%; + transform: translate(0%, -50%); + } + } + + + #commands-container > ul{ + list-style: none; + background: white; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); + border-radius: 4px; + } + + .statusCircle{ + height: 30px; + width: 30px; + border-radius: 20px; + } + + + #projectFieldHome{ + font-size: 20px; + text-transform: lowercase; + color: gray; + text-align: right; + font-weight: 400; + line-height: 2.25rem; + background: transparent; + min-width: 1px!important; + width: fit-content!important; + } + + #statusVBar{ + width: 4px; + border-radius: 20px; + + } + + #forminput1{ + + width: fit-content; + font-size: 20px; + font-weight: 400; + background: transparent!important; + outline: none!important; + border: none!important; + } + + #guide{ + position: fixed; + top: 100px; + right: 10px; + padding: 16px; + border-radius: 4px; + background: white; + border: 2px solid lightgray; + } + + #guideCloseBtn{ + padding: 5px 10px; + position: absolute; + top: 5px; + right: 5px; + } + + #guideCloseBtn:hover{ + background: transparent!important; + } + + .navbar-nav{ + padding-left: 7px!important; + padding-bottom: 5px; + } + #forminput2{ + padding-top: 0px; + padding-bottom: 0px; + max-width: 150px; + text-transform: uppercase; + width: fit-content; + background: transparent!important; + } + + #nav-right{ + position: absolute; + right: 6px; + top: 6px; + } + + .forms { + padding: 10px; + } + .node-choice{ + color: #202124!important; + border-color: #FFF!important; + background-color: #FFF!important; + box-shadow: 0 3px 3px 0 rgba(60,64,67,.08), 0 1px 3px 1px rgba(60,64,67,.16)!important; + } + .column{ + padding-top: 20px!important; + } + .row{ + margin-left: 0px!important; + margin-right: 0px!important; + padding-top: 0px!important; + } + .menu { + z-index: 2; + position: relative; + + border-style: solid; + border-color: transparent; + border-width: 4px; + background-color: white!important; + border-radius: 8px; + box-shadow: none; + } + + .rete { + position: relative; + z-index: 0; + } + + + ::ng-deep .toast-top-right { + top: 140px; + right: 12px; + } + + ::ng-deep .toast-warning { + background-color: hsl(48, 100%, 67%); + } + + ::ng-deep .toast-error { + background-color: hsl(348, 100%, 61%); + } + + ::ng-deep .toast-success { + background-color: hsl(141, 71%, 48%); + } + + ::ng-deep .toast-info { + background-color: hsl(204, 86%, 53%); + } + + kbd { + display: inline-block; + margin: 0 .1em; + padding: .1em .6em; + font-family: Arial,"Helvetica Neue",Helvetica,sans-serif; + font-size: 11px; + line-height: 1.4; + color: #242729; + text-shadow: 0 1px 0 #FFF; + background-color: #e1e3e5; + border: 1px solid #adb3b9; + border-radius: 4px; + box-shadow: 0 1px 0 rgba(12,13,14,0.2), 0 0 0 2px #FFF inset; + white-space: nowrap; + } + + + + /*LIST*/ + + #dropdown{ + padding-left: 0px!important; + margin-top: 0px!important; + background: #f5f5f5; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); + left: auto!important; + } + + #lidr { + display: block; + transition-duration: 0.5s; + } + + #lidr > button { + margin-bottom: 0px; + font-size: 13px; + font-weight: normal; + text-transform: capitalize; + width: 100%; + text-align: left; + } + + #dropdown { + visibility: hidden; + opacity: 0; + position: absolute; + transition: all 0.5s ease; + display: none; + background-color: white; + } + + #drbtn:hover > #dropdown { + visibility: visible; + opacity: 1; + display: block!important; + } + + + #drli { + clear: both; + width: 100%; + } + + #selectedFilterTag{ + background: transparent; + border-radius: 10px; + } + + #removeTagFilterBtn{ + border-radius: 10px!important; + display: none; + } + #noTagBtn{ + min-width: 6px!important; + padding: 0px 0px; + } + + .nav-item > .mat-button, .mat-raised-button.mat-warn{ + padding: 0px 0px!important; + min-width: 32px!important; + } \ No newline at end of file diff --git a/coney-create/src/app/home.component.html b/coney-create/src/app/home.component.html new file mode 100644 index 0000000..82a130e --- /dev/null +++ b/coney-create/src/app/home.component.html @@ -0,0 +1,231 @@ +
    + + + + + + + + +
    + +

    CtrlSpace -Quick new node

    +

    CtrlE - Create template

    +

    CtrlQ - Add Template nodes

    +

    CtrlS - Save

    +

    CtrlP - Preview

    +

    CtrlO - Open

    +

    CtrlM - New Conversation

    +

    CtrlL - Connect nodes (2)

    +

    Ctrl - Move Nodes

    +
    + +
    \ No newline at end of file diff --git a/coney-create/src/app/home.component.spec.ts b/coney-create/src/app/home.component.spec.ts new file mode 100644 index 0000000..490e81b --- /dev/null +++ b/coney-create/src/app/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-create/src/app/home.component.ts b/coney-create/src/app/home.component.ts new file mode 100644 index 0000000..8235c1e --- /dev/null +++ b/coney-create/src/app/home.component.ts @@ -0,0 +1,1015 @@ +import { Component, OnInit, ViewChild, HostListener } from '@angular/core'; +import { Params, ActivatedRoute, Router } from '@angular/router'; +import { MatDialog } from '@angular/material'; +import { BackendService } from './services/backend.service'; +import { SearchConvDialogComponent } from './dialogs/search-conv-dialog.component'; +import { SaveAsDialogComponent } from './dialogs/save-as-dialog.component'; +import { DeleteDialogComponent } from './dialogs/delete-dialog.component'; +import { ConfirmDialogComponent } from './dialogs/confirm-dialog.component'; +import { PublishDialogComponent } from './dialogs/publish-dialog.component'; +import { AddQuickQuestionDialogComponent } from './dialogs/add-quick-question-dialog.component'; +import { PrintDialogComponent } from './dialogs/print-dialog.component'; + +import { ENUM_CHAT, ENUM_CONV_STATUS, ENUM_ERROR, RETE_ID, ENUM_OPERATION_FEEDBACK, ENUM_WARNING, ENUM_SUCCESS, ENUM_NODE_COMPONENT } from './model/conversational.model'; +import { Chat } from './model/chat'; +import { saveAs } from 'file-saver'; +import { ToastrService } from 'ngx-toastr'; +import { ReteComponent } from './rete/rete.component'; + + +import * as CryptoJS from 'crypto-js'; +import { environment } from '../environments/environment'; +import { AuthenticationService } from './services/authentication.service'; +import { TranslationDialogComponent } from './dialogs/translation-dialog.component'; +import { ShareSurveyDialogComponent } from './dialogs/share-survey-dialog.component'; + + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) + +export class HomeComponent implements OnInit { + @ViewChild(ReteComponent, { static: false }) + private reteComp: ReteComponent; + + editorJson: JSON; + editedJson: JSON; + newNodeJson: JSON; + + newButtonEnabled = true; + saveButtonEnabled = true; + saveAsButtonEnabled = true; + previewButtonEnabled = true; + publishButtonEnabled = true; + unpublishButtonEnabled = true; + deleteButtonEnabled = true; + + loadingInProgress = false; + showHelp = false; + enterprise = true; + showingMap = true; + + titleEditable = true; + + currentConversationId = ''; + currentConversationStatus = ''; + currentConversationProject = ''; + currentConversationTitle = ''; + currentConversationLanguage = ''; + currentAccessLevel; + + position_x = 80; + position_y = 200; + conversationTags = []; + + genericLink = ""; + + node = { id: 0, type: "", subtype: "", text: "", link: "", value: 0, points: 0, image_url: "" }; + pendingModificationsToSave = false; + + constructor(private backend: BackendService, + public dialog: MatDialog, + private toastr: ToastrService, + private route: ActivatedRoute, + private router: Router) { } + + //prevents page unload if there are changes to be saves + @HostListener('window:beforeunload', ['$event']) + unloadNotification($event: any) { + if (this.pendingModificationsToSave) { + if(!this.reteComp.isConversationNew()){ + $event.returnValue = true; + } + } + } + + ngOnInit() { + this.enterprise = environment.enterprise; + this.currentConversationTitle = ''; + this.currentConversationProject = ''; + this.currentConversationStatus = ''; + this.currentConversationId = ''; + this.updateButtons(); + + if(sessionStorage.getItem("conv") != null + && sessionStorage.getItem("conv") != "" + && sessionStorage.getItem("conv") != "null"){ + + console.log("entered session storage"); + console.log( sessionStorage.getItem("conv")); + var tmp = {conversationId : sessionStorage.getItem("conv")}; + this.openConversation(tmp); + } else { + this.route.queryParams.forEach((params: Params) => { + if(params["data"]!= undefined && params["data"]!= null && params["data"] != ""){ + console.log("entered data param"); + console.log(params["data"]); + var tmp = {conversationId : params["data"]}; + this.openConversation(tmp); + this.getConversationProject(params["data"]); + } + }); + } + this.pendingModificationsToSave = false; + } + + newButtonPressed() { + if (this.pendingModificationsToSave && !this.reteComp.isConversationNew()) { + const dialogRef = this.dialog.open(ConfirmDialogComponent, { + width: '300px', + height: '415px', + }); + + dialogRef.afterClosed().subscribe(status => { + if (status !== undefined) { + if (status === 'save') { + if (this.currentConversationTitle === '') { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.MISSING_TITLE); + } else { + this.saveConversation(); + this.openNewConversation(); + } + } else if (status === 'discard') { + this.openNewConversation(); + } + } + }); + } else { + this.openNewConversation(); + } + } + + async openNewConversation() { + + const firstNode = '{"1": {"id": "1", "name": "Talk [text]","data": {"text": null, "tag":[], "value": null},"inputs": [{"connections": []}], "outputs": [{"connections": []}], "position":[300,250]}}'; + const newChat = {}; + newChat.conversationId = ''; + newChat.status = ''; + newChat.id = RETE_ID; + newChat.title = ''; + newChat.nodes = JSON.parse(firstNode); + + this.currentConversationId = ''; + this.currentConversationStatus = ''; + this.currentConversationTitle = ''; + this.currentConversationProject = ''; + this.currentAccessLevel = undefined; + this.currentConversationLanguage = ''; + this.editorJson = JSON.parse(JSON.stringify(newChat)); + this.node.id = 1; + + sessionStorage.setItem("conv", null); + this.router.navigate([''], { queryParams: { data: ""} }); + this.updateButtons(); + + } + + async toggleMapButtonPressed() { + + var map; + var docs = document.getElementsByClassName("minimap"); + var resetBtn = document.getElementById("resetBtn"); + map = docs[0]; + if (this.showingMap) { + this.showingMap = false; + map.style.display = "none"; + resetBtn.style.bottom = "24px"; + } else { + resetBtn.style.bottom = "180px"; + await this.reteComp.delay(300); + map.style.display = "block"; + this.showingMap = true; + } + } + + helpButtonPressed(cas: string) { + if (this.showHelp) { + this.showHelp = false; + } else { + if (cas == 'btn') { + this.showHelp = true; + } + } + } + + saveButtonPressed() { + if (environment.enterprise && (this.currentConversationTitle === '' || this.currentAccessLevel == undefined || this.currentConversationProject == "")) { + this.saveAsButtonPressed(); + } else if(!environment.enterprise && (this.currentConversationTitle === '' || this.currentConversationLanguage === '')){ + this.saveAsButtonPressed(); + } else { + this.saveConversation(); + } + } + + saveConversation() { + this.editedJson[ENUM_CHAT.CONV_ID] = this.currentConversationId; + this.editedJson[ENUM_CHAT.STATUS] = this.currentConversationStatus; + this.editedJson[ENUM_CHAT.TITLE] = this.currentConversationTitle; + this.editedJson[ENUM_CHAT.PROJECT] = this.currentConversationProject; + this.editedJson[ENUM_CHAT.ACCESS_LEVEL] = this.currentAccessLevel; + this.editedJson[ENUM_CHAT.LANGUAGE] = this.currentConversationLanguage; + + this.reteComp.getConversationTags(); + this.uploadTags(); + + this.backend.postJson('/create/saveConversation', this.editedJson).subscribe(res => { + this.currentConversationId = res[ENUM_CHAT.CONV_ID]; + this.currentConversationStatus = res[ENUM_CHAT.STATUS]; + this.pendingModificationsToSave = false; + + this.updateButtons(); + + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_SUCCESS.SAVED); + + }, err => { + if (err.status === 409) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.RES_409); + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.GENERIC); + } + + }); + } + + uploadTags(){ + + if(this.conversationTags.length < 1){ + return; + } + + var js = "{\"tags\":["; + var mid = ""; + for(var i = 0; i { + }); + + } + + async toggleHidden() { + var el = document.getElementById("publish-hidden-commands"); + var content = document.getElementById("hidden-content"); + + if (el.style.height == "0px") { + el.style.height = "200px"; + el.style.visibility = "visible"; + await this.delay(150); + content.style.visibility = "visible"; + } else { + el.style.height = "0px"; + el.style.visibility = "hidden"; + content.style.visibility = "hidden"; + } + } + + saveAsButtonPressed() { + + const dialogRef = this.dialog.open(SaveAsDialogComponent, { + width: '400px', + height: '550px', + data: { + title: this.currentConversationTitle, + role: this.currentConversationProject + } + }); + + dialogRef.afterClosed().subscribe(res => { + if (res !== undefined) { + + var title = res.title; + + if(environment.enterprise){ + this.currentConversationProject = res.projectName; + this.currentAccessLevel = res.accessLevel; + this.editedJson[ENUM_CHAT.PROJECT] = this.currentConversationProject; + this.editedJson[ENUM_CHAT.ACCESS_LEVEL] = res.accessLevel; + } + + this.currentConversationLanguage = res.lang; + + if (res.overwrite) { + this.saveConversation(); + return; + } + this.editedJson[ENUM_CHAT.CONV_ID] = ''; + this.editedJson[ENUM_CHAT.STATUS] = ''; + this.editedJson[ENUM_CHAT.TITLE] = title; + this.editedJson[ENUM_CHAT.LANGUAGE] = res.lang; + + this.backend.postJson('/create/saveConversation', this.editedJson).subscribe( + res => { + this.currentConversationId = res[ENUM_CHAT.CONV_ID]; + this.currentConversationStatus = res[ENUM_CHAT.STATUS]; + this.currentConversationLanguage = res[ENUM_CHAT.LANGUAGE]; + + if(environment.enterprise){ + this.currentConversationProject = res[ENUM_CHAT.PROJECT]; + this.currentAccessLevel = res[ENUM_CHAT.ACCESS_LEVEL]; + } + + this.currentConversationTitle = title; + + this.editorJson = this.editedJson; + this.updateButtons(); + + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_SUCCESS.SAVED); + + }, err => { + if (err.status === 409) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_ERROR.RES_409); + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.GENERIC); + } + + } + ); + } + }); + } + + previewButtonPressed() { + + this.loadingInProgress = true; + this.previewButtonEnabled = false; + + if (this.currentConversationId === null || this.currentConversationId === "") { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, "Save Conversation first"); + this.loadingInProgress = false; + return; + } + + if (!this.manualCheckButtonPressed()) { + this.loadingInProgress = false; + return; + } + + + this.editedJson[ENUM_CHAT.CONV_ID] = this.currentConversationId; + this.editedJson[ENUM_CHAT.STATUS] = this.currentConversationStatus; + this.editedJson[ENUM_CHAT.TITLE] = this.currentConversationTitle; + this.editedJson[ENUM_CHAT.PROJECT] = this.currentConversationProject; + this.editedJson[ENUM_CHAT.ACCESS_LEVEL] = this.currentAccessLevel; + + this.backend.postJson('/create/previewConversation', this.editedJson).subscribe(res => { + if (res["success"] == true) { + + this.loadingInProgress = false; + var url = this.generateGenericLink("preview"); + window.open(url, "newwindow", "width=350,height=600"); + + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, "Something went wrong :("); + } + this.loadingInProgress = false; + this.previewButtonEnabled = true; + }, err => { + this.loadingInProgress = false; + }); + } + + manualCheckButtonPressed() { + var n: any; var array = []; + + n = this.reteComp.checkForMistakes(); + if (n == 0 || n == 1 || n == 2 || n == 3 || n == 4) { + if (n == 0) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.NO_STARTS); + } else if (n == 1) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.ISOLATED_NODE); + } else if (n == 2) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.MULTIPLE_STARTS); + } else if (n == 3) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.QUESTION_END); + } else if (n == 4) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.FIELD_MISSING); + } + + } /*else if (!this.reteComp.checkForLoops(n, array)) { //TOO HEAVY WITH LONG CONVERSATIONS + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.LOOPS); + } */else { + + var x = this.reteComp.checkForMultipleValues(n); + this.reteComp.globalPath = []; + if (x == 1) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.SAME_VALUE); + return false; + } else if (x == 2) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.NO_TEXT); + return false; + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_WARNING.NO_ERRORS); + return true; + } + + } + + if (this.currentConversationTitle === '') { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.MISSING_TITLE); + return false; + } + } + + publishButtonPressed() { + + if (!this.manualCheckButtonPressed()) { + } else { + this.loadingInProgress = true; + this.editedJson[ENUM_CHAT.CONV_ID] = this.currentConversationId; + this.editedJson[ENUM_CHAT.STATUS] = this.currentConversationStatus; + this.editedJson[ENUM_CHAT.PROJECT] = this.currentConversationProject; + this.editedJson[ENUM_CHAT.TITLE] = this.currentConversationTitle; + + const dialogRef = this.dialog.open(PublishDialogComponent, { + width: '300px', + height: '350px', + data: { + conversation: this.editedJson + } + }); + + dialogRef.afterClosed().subscribe(res => { + this.loadingInProgress = false; + if (res !== undefined && res != 0) { + if (res === 409) { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.RES_409); + } else { + this.currentConversationId = res[ENUM_CHAT.CONV_ID]; + this.currentConversationStatus = res[ENUM_CHAT.STATUS]; + this.currentConversationTitle = res[ENUM_CHAT.TITLE]; + + this.editedJson[ENUM_CHAT.CONV_ID] = this.currentConversationId; + this.editedJson[ENUM_CHAT.STATUS] = this.currentConversationStatus; + this.editedJson[ENUM_CHAT.PROJECT] = this.currentConversationProject; + this.editedJson[ENUM_CHAT.TITLE] = this.currentConversationTitle; + this.editorJson = this.editedJson; + + this.pendingModificationsToSave = false; + + this.updateButtons(); + + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_SUCCESS.PUBLISHED); + } + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.GENERIC); + this.loadingInProgress = false; + } + }); + } + } + + unpublishButtonPressed() { + let endpoint = '/create/unpublishConversation'; + endpoint = endpoint + '?conversationId=' + this.currentConversationId; + + this.backend.getRequest(endpoint).subscribe( + res => { + + if (res) { + this.currentConversationStatus = ENUM_CONV_STATUS.UNPUBLISHED; + } + + this.updateButtons(); + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_SUCCESS.UNPUBLISHED); + } + ); + } + + deleteButtonPressed() { + const dialogRef = this.dialog.open(DeleteDialogComponent, { + width: '300px', + height: '300px', + data: { + conversationId: this.currentConversationId, + status: this.currentConversationStatus + } + }); + + dialogRef.afterClosed().subscribe(res => { + if (res !== undefined) { + if (res === 'deleted') { + const firstNode = '{"1":{"id":1,"data":{"text":""},"inputs":{"in":{"connections":[]}},"outputs":{"out":{"connections":[]}},"position":[80,200],"name":"Talk [text]"}}'; + + const newChat = {}; + newChat.conversationId = ''; + newChat.status = ''; + newChat.id = RETE_ID; + newChat.title = ''; + newChat.projectName = ''; + newChat.nodes = JSON.parse(firstNode); + + this.currentConversationTitle = ''; + this.currentConversationProject = ''; + this.currentConversationStatus = ''; + this.currentConversationId = ''; + this.currentConversationLanguage = ''; + this.currentAccessLevel = undefined; + + this.editorJson = JSON.parse(JSON.stringify(newChat)); + + this.updateButtons(); + + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, ENUM_SUCCESS.DELETED); + } else { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.ERROR, ENUM_ERROR.NOT_DELETED); + } + } + }); + } + + searchButtonPressed() { + const dialogRef = this.dialog.open(SearchConvDialogComponent, { + width: '700px', + maxHeight: '90vh' + }); + + dialogRef.afterClosed().subscribe(selectedChat => { + if (selectedChat !== undefined) { + if (this.pendingModificationsToSave && !this.reteComp.isConversationNew()) { + const dialog = this.dialog.open(ConfirmDialogComponent, { + width: '300px', + height: '415px', + }); + + dialog.afterClosed().subscribe(status => { + if (status !== undefined) { + if (status === 'save') { + if (this.currentConversationTitle === '') { + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.WARNING, ENUM_WARNING.MISSING_TITLE); + } else { + this.saveConversation(); + + this.openConversation(selectedChat); + } + } else if (status === 'discard') { + this.currentConversationProject = selectedChat.projectName; + this.currentAccessLevel = selectedChat.accessLevel; + this.openConversation(selectedChat); + } + } + }); + } else { + this.currentConversationProject = selectedChat.projectName; + this.currentAccessLevel = selectedChat.accessLevel; + this.openConversation(selectedChat); + } + } + }); + + } + + translationDialogButtonPressed(){ + //TODO + + const dialogRef = this.dialog.open(TranslationDialogComponent, { + width: '500px', + maxHeight: '600px', + data: { + conversationId: this.currentConversationId, + conversationTitle: this.currentConversationTitle + } + }); + + dialogRef.afterClosed().subscribe(res => { + if(res=="translation_uploaded"){ + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.SUCCESS, "Translation successfully uploaded"); + } + }); + + + } + + addQuestionButtonPressed() { + + const dialogRef = this.dialog.open(AddQuickQuestionDialogComponent, { + width: '600px', + height: '500px', + data: {} + }); + + dialogRef.afterClosed().subscribe(toAdd => { + if (toAdd != undefined) { + this.reteComp.addBlankQuestion(this.position_x + 300, this.position_y, toAdd.type, toAdd.num, toAdd.content); + this.updateButtons(); + } + }); + } + + addQuickTalk() { + this.reteComp.addEmptyTalk(this.position_x + 300, this.position_y) + } + + getConversationProject(conversationId){ + let endpoint = '/create/getConversationProject'; + endpoint = endpoint + '?conversationId=' + conversationId; + this.backend.getRequest(endpoint).subscribe(res => { + this.currentConversationProject = res.toString(); + }); + } + + openConversation(selectedChat) { + this.loadingInProgress = true; + + + let endpoint = '/create/getConversationJson'; + endpoint = endpoint + '?conversationId=' + selectedChat.conversationId; + this.backend.getRequest(endpoint).subscribe(res => { + + if(res == null || JSON.stringify(res) == ""){ + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.INFO, "Failed to open the file"); + this.loadingInProgress = false; + return; + } + + const json = JSON.parse(res); + + this.currentConversationId = json[ENUM_CHAT.CONV_ID]; + this.currentConversationStatus = json[ENUM_CHAT.STATUS]; + this.currentConversationTitle = json[ENUM_CHAT.TITLE]; + this.currentConversationProject = json[ENUM_CHAT.PROJECT]; + this.currentAccessLevel = json[ENUM_CHAT.ACCESS_LEVEL]; + this.currentConversationLanguage = json[ENUM_CHAT.LANGUAGE]; + + this.editorJson = json; + + this.updateButtons(); + + + sessionStorage.setItem("conv", this.currentConversationId); + this.router.navigate([''], { queryParams: { data: selectedChat.conversationId} }); + + this.delay(500); + this.reteComp.resetView(); + this.getConversationTags(); + this.loadingInProgress = false; + }, err => { + this.loadingInProgress = false; + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_ERROR.GENERIC); + }); + + } + + userLogout(){ + this.router.navigate(['logout']); + } + + delay(time: any) { + return new Promise(resolve => setTimeout(resolve, time)); + } + + async getConversationTags() { + await this.delay(1000); + this.reteComp.getConversationTags(); + } + + reteChangedConversationTags(tags) { + this.conversationTags = tags; + } + + removeTagFilter() { + this.reteComp.highlightTags("@#["); + document.getElementById("noTagBtn").innerHTML = "No tag selected"; + document.getElementById("noTagBtn").classList.remove("col-9"); + document.getElementById("noTagBtn").classList.add("col-12"); + document.getElementById("removeTagFilterBtn").style.display = "none"; + } + + + highlightTags(tag) { + this.reteComp.highlightTags(tag); + } + + updateButtons() { + // unsaved + if (this.currentConversationStatus === '') { + this.newButtonEnabled = true; + this.saveButtonEnabled = true; + this.saveAsButtonEnabled = true; + this.publishButtonEnabled = false; + this.unpublishButtonEnabled = false; + this.deleteButtonEnabled = false; + this.previewButtonEnabled = false; + + this.titleEditable = true; + } + + // saved + if (this.currentConversationStatus === ENUM_CONV_STATUS.SAVED) { + this.newButtonEnabled = true; + this.saveButtonEnabled = true; + this.saveAsButtonEnabled = true; + this.publishButtonEnabled = true; + this.unpublishButtonEnabled = false; + this.deleteButtonEnabled = true; + this.previewButtonEnabled = true; + + this.titleEditable = true; + } + + // published + if (this.currentConversationStatus === ENUM_CONV_STATUS.PUBLISHED) { + this.newButtonEnabled = true; + this.saveButtonEnabled = false; + this.saveAsButtonEnabled = true; + this.publishButtonEnabled = false; + this.unpublishButtonEnabled = true; + this.deleteButtonEnabled = false; + this.previewButtonEnabled = true; + + this.titleEditable = false; + } + + // unpublished + if (this.currentConversationStatus === ENUM_CONV_STATUS.UNPUBLISHED) { + this.newButtonEnabled = true; + this.saveButtonEnabled = false; + this.saveAsButtonEnabled = true; + this.publishButtonEnabled = true; + this.unpublishButtonEnabled = false; + this.deleteButtonEnabled = true; + this.previewButtonEnabled = true; + + this.titleEditable = true; + } + } + + reteChangedPosition(pos: Array) { + this.position_x = pos[0]; + this.position_y = pos[1]; + } + + reteEditedJson(json: JSON) { + if (this.currentConversationStatus === ENUM_CONV_STATUS.SAVED || this.currentConversationStatus === '') { + this.pendingModificationsToSave = true; + } else { + this.pendingModificationsToSave = false; + } + this.editedJson = json; + } + + reteMessage(obj: Object) { + this.operationFeedbackMessage(obj['type'], obj['msg']); + } + + keyPressed($event) { + var focus = this.reteComp.checkForInputFocus(); + if (navigator.platform.match('Mac')) { + this.handleMacKeyEvents($event, focus); + } + else { + this.handleWindowsKeyEvents($event, focus); + } + } + + // if (!this.reteComp.checkForInputFocus()) {} + handleMacKeyEvents($event, focus) { + let charCode = String.fromCharCode($event.which).toLowerCase(); + + if ($event.metaKey && (charCode === 'l' || charCode === 'z' || charCode === 'y' || charCode === ' ' || charCode === 's' || charCode === 'm' || charCode === 'o' || charCode === 'p' || charCode === 'q' || charCode === 'e')) { + $event.preventDefault(); + } + + let charKeyCode = $event.key.toLowerCase(); + var arr = []; + + if($event.metaKey && charKeyCode == 'arrowleft') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "left"); + + } else if($event.metaKey && charKeyCode == 'arrowright') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "right"); + + } else if($event.metaKey && charKeyCode == 'arrowup') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "up"); + + } else if($event.metaKey && charKeyCode == 'arrowdown'){ + + this.reteComp.moveAllFollowingNodes(undefined, arr, "down"); + + } else if ($event.metaKey) { + this.performActionOnKeydown(charCode); + } + } + + handleWindowsKeyEvents($event, focus) { + let charCode = String.fromCharCode($event.which).toLowerCase(); + + if ($event.ctrlKey && (charCode === 'l' || charCode === 'z' || charCode === 'y' || charCode === ' ' || charCode === 's' || charCode === 'm' || charCode === 'o' || charCode === 'p' || charCode === 'q' || charCode === 'e')) { + $event.preventDefault(); + } + + let charKeyCode = $event.key.toLowerCase(); + var arr = []; + if($event.ctrlKey && charKeyCode == 'arrowleft') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "left"); + + } else if($event.ctrlKey && charKeyCode == 'arrowright') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "right"); + + } else if($event.ctrlKey && charKeyCode == 'arrowup') { + + this.reteComp.moveAllFollowingNodes(undefined, arr, "up"); + + } else if($event.ctrlKey && charKeyCode == 'arrowdown'){ + + this.reteComp.moveAllFollowingNodes(undefined, arr, "down"); + + } else if ($event.ctrlKey) { + this.performActionOnKeydown(charCode); + } + } + + performActionOnKeydown(charCode) { + if (charCode === 's') { + this.saveButtonPressed(); + } else if (charCode === 'm') { + this.newButtonPressed(); + } else if (charCode === 'p') { + this.previewButtonPressed(); + } else if (charCode === 'o') { + this.searchButtonPressed(); + } else if (charCode === 'e') { + this.addQuestionButtonPressed(); + } else if (charCode === ' ') { + this.addQuickTalk(); + } else if (charCode === 'l') { + this.reteComp.connectSelectedNodes(); + } + } + + public operationFeedbackMessage(type: string, msg: string) { + let audio = new Audio(); + + switch (type) { + case ENUM_OPERATION_FEEDBACK.SUCCESS: + this.toastr.success(msg, ''); + audio.src = './assets/SuccessSound.mp3'; + break; + case ENUM_OPERATION_FEEDBACK.INFO: + this.toastr.info(msg, ''); + audio.src = './assets/InfoSound.mp3'; + break; + case ENUM_OPERATION_FEEDBACK.WARNING: + this.toastr.warning(msg, ''); + audio.src = './assets/WarningSound.mp3'; + break; + case ENUM_OPERATION_FEEDBACK.ERROR: + this.toastr.error(msg, ''); + audio.src = './assets/ErrorSound.mp3'; + break; + } + + audio.load(); + audio.play(); + } + + generateGenericLink(prev){ + + var chatUrl = environment.baseUrl + "/chat/?data="; + + var str = ""; + if(prev != undefined && prev != null && prev == "preview" ){ + str = CryptoJS.AES.encrypt("preview*&*preview*&*preview*&*"+this.currentConversationId, "Cefriel").toString(); + } else { + str = CryptoJS.AES.encrypt("*&**&**&*" + this.currentConversationId, "Cefriel").toString(); + this.genericLink = chatUrl+str; + this.openShareDialog(); + } + + return chatUrl+str; + } + + openShareDialog(){ + const dialogRef = this.dialog.open(ShareSurveyDialogComponent, { + maxWidth: '60%', + maxHeight: '90vh', + data: this.genericLink + }); + } + + openInspect(){ + if(this.currentConversationStatus == "saved"){ + this.operationFeedbackMessage("warning", "Publish the conversation first"); + return; + } + var url = environment.baseUrl + "/coney/inspect?data="+this.currentConversationId; + sessionStorage.setItem('conv', this.currentConversationId); + window.location.href = url; + } + + copyText(){ + let selBox = document.createElement('textarea'); + selBox.style.position = 'fixed'; + selBox.style.left = '0'; + selBox.style.top = '0'; + selBox.style.opacity = '0'; + selBox.value = this.genericLink; + document.body.appendChild(selBox); + selBox.focus(); + selBox.select(); + document.execCommand('copy'); + document.body.removeChild(selBox); + + this.operationFeedbackMessage(ENUM_OPERATION_FEEDBACK.INFO, "Copied to clipboard!"); + document.getElementById("modal-generic-link").style.display = "none"; + } + + printButtonPressed() { + this.loadingInProgress = true; + let endpoint = "/create/getOrderedConversation?conversationId=" + this.currentConversationId; + this.backend.getRequest(endpoint).subscribe( + res => { + this.loadingInProgress = false; + this.printQuestions(res); + }, err => { + console.error(err); + this.loadingInProgress = false; + }); + } + + oldPrintButtonPressed() { + + var output = []; + var json: JSON; + json = this.editedJson; + var nodes = json["nodes"]; + var count = 0; + for (var i in nodes) { + + var node = nodes[i]; + + if (node["name"].includes("Question")) { + count++; + var n = { order: count, type: "", text: "", tag: "", answers: [] }; + var answers = []; + n.text = node.data.text; + n.type = node.data.visualization; + + n.tag = node.data.tag; + node.outputs.out.connections.forEach(element => { + var answer = { order: 0, value: 0, text: "", nextQuestionId: -1 }; + + //get answers and store them + var res = nodes[element.node + ""]; + if (res.name.includes("multiple")) { + answer.order = res.data.sort; + answer.value = res.data.value; + answer.text = res.data.text; + answers.push(answer); + } else if (res.name.includes("checkbox")) { + var j = 1; + res.data.checkbox.forEach(element => { + var an = { order: j, value: res.data.value, text: element.v }; + j++; + answers.push(an); + });; + + } else { + answers.push(answer); + } + + }); + n.answers = answers; + output.push(n); + } + } + this.printQuestions(JSON.stringify(output)); + } + + printQuestions(input: any) { + + const dialogRef = this.dialog.open(PrintDialogComponent, { + maxWidth: '900px', + maxHeight: '85vh', + data: { + questions: input, + title: this.currentConversationTitle + } + }); + } + + openDeliver(){ + if(!environment.enterprise){ + this.searchButtonPressed(); + return; + } + var url = environment.baseUrl + "/coney/home"; + window.location.href = url; + } + +} diff --git a/coney-create/src/app/model/chat.ts b/coney-create/src/app/model/chat.ts new file mode 100644 index 0000000..1493381 --- /dev/null +++ b/coney-create/src/app/model/chat.ts @@ -0,0 +1,8 @@ +export interface Chat { + conversationId: string; + status: string; + projectName: string; + title: string; + id: string; + nodes: JSON; +} diff --git a/coney-create/src/app/model/conversational.model.ts b/coney-create/src/app/model/conversational.model.ts new file mode 100644 index 0000000..bedd243 --- /dev/null +++ b/coney-create/src/app/model/conversational.model.ts @@ -0,0 +1,104 @@ +export enum ENUM_OPERATION_FEEDBACK { + SUCCESS = 'SUCCESS', + INFO = 'INFO', + WARNING = 'WARNING', + ERROR = 'ERROR' +} + +export enum ENUM_CONV_STATUS { + ALL = 'all', + STATUS = 'status', + PUBLISHED = 'published', + UNPUBLISHED = 'unpublished', + SAVED = 'saved' +} + +export enum ENUM_CHAT { + CONV_ID = 'conversationId', + STATUS = 'status', + TITLE = 'title', + ACCESS_LEVEL = "accessLevel", + PROJECT = 'projectName', + LANGUAGE = 'lang' +} + +export enum ENUM_RETE_COMPONENT { + ALL = 'Any', + ANSWER_MULTIPLE = 'Answer [multiple]', + ANSWER_OPEN = 'Answer [open]', + ANSWER_CHECKBOX = 'Answer [checkbox]', + QUESTION_TEXT = 'Question [text]', + TALK_LINK = 'Talk [link]', + TALK_TEXT = 'Talk [text]', + TALK_URL = 'Talk [imageUrl]' +} + +export enum ENUM_NODE_TYPE{ + ALL = 'Type', + ANSWER = 'Answer', + QUESTION = 'Question', + TALK = 'Talk' +} + +export enum ENUM_NODE_SUBTYPE { + ALL = 'Subtype', + MULTIPLE = 'multiple', + SINGLE = 'single', + CHECKBOX = 'checkbox', + TEXT = 'text', + LINK = 'link', + URL = 'imageUrl' +} + +export enum ENUM_NODE_COMPONENT { + ID = 'block_id', + TYPE = 'type', + SUBTYPE = 'subtype', + TEXT = 'text', + LINK = 'link' +} + +export enum ENUM_SUCCESS { + SAVED = 'Saved succesfully', + PUBLISHED = 'Published succesfully', + UNPUBLISHED = 'Unpublished succesfully', + DELETED = 'Deleted succesfully' +} + +export enum ENUM_TEMPLATE_FEEDBACK{ + TEXT_TYPE = "Text and type are mandatory fields", + NO_DATA = "No data inserted", + MULTIPLE_VALUES = "Multiple same values found in answers" +} + +export enum ENUM_INFO { + MULTI_TYPE = 'You cannot have different answer types for the same question', + MULTI_ELEMENT = 'You can connect just one block of this type', + SINGLE_ANSWER = 'This question requires a single answer', + MULTIPLE_ANSWER = 'This question requires multiple answers', + MAX_RANGE = 'You reached the maximum number of blocks you can connect' +} + +export enum ENUM_WARNING { + MISSING_TYPE = 'Missing type', + MISSING_TITLE = 'Missing title', + MULTIPLE_STARTS = 'More than one starting node found', + ISOLATED_NODE = 'Make sure that all nodes are connected', + NO_STARTS = 'No starting node found', + LOOPS = 'Loops detected, please remove them before publishing', + SAME_VALUE = 'Same order values found in different answers to question', + NO_TEXT = 'Some option-answers are missing the text', + QUESTION_END = 'You can NOT finish a conversation with a question ', + NO_ERRORS = 'Error check completed, OK', + FIELD_MISSING = 'Fill all the necessary fields' +} + +export enum ENUM_ERROR { + RES_409 = 'This name already exists. Please, choose another one.', + RES_404 = 'Resource not Found', + RES_404_NEXT = 'Single block added', + NOT_DELETED = 'An error occurred, chat not deleted', + GENERIC = 'Something went wrong' +} + +export const RETE_ID = 'demo@0.1.0'; diff --git a/coney-create/src/app/rete/components/answer-checkbox.component.ts b/coney-create/src/app/rete/components/answer-checkbox.component.ts new file mode 100644 index 0000000..3a211d6 --- /dev/null +++ b/coney-create/src/app/rete/components/answer-checkbox.component.ts @@ -0,0 +1,59 @@ +import { Component, Input, Output } from 'rete'; +import { QuestionAnswerType, TalkType } from '../sockets'; +import { CheckboxControl } from '../controls/checkbox.control'; +import { ENUM_RETE_COMPONENT } from '../../model/conversational.model'; +import { PointsFieldControl } from '../controls/points-field.control'; +import VueRender from 'rete-vue-render-plugin'; +import { ValueControl } from '../controls/value.control'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.data.subtype}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + + +export class AnswerCheckboxComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.ANSWER_CHECKBOX); + this.data.component = CustomNode; + } + + builder(node) { + + node.data.type = "Answer"; + node.data.subtype = "checkbox"; + + const in1 = new Input('in', 'Question', QuestionAnswerType, false); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node.addInput(in1) + .addControl(new ValueControl(this.editor, 'value')) + .addControl(new CheckboxControl(this.editor, 'checkbox')) + .addControl(new PointsFieldControl(this.editor, "points")) + .addOutput(out1); + } + + worker(node, inputs, outputs) { } + +} diff --git a/coney-create/src/app/rete/components/answer-multiple.component.ts b/coney-create/src/app/rete/components/answer-multiple.component.ts new file mode 100644 index 0000000..4408720 --- /dev/null +++ b/coney-create/src/app/rete/components/answer-multiple.component.ts @@ -0,0 +1,62 @@ +import { Component, Input, Output } from 'rete'; +import { QuestionAnswerType, TalkType } from '../sockets'; +import { NumControl } from '../controls/number.control'; +import { ValueControl } from '../controls/value.control'; +import { TextAreaLimitedControl } from '../controls/text-area-limited.control'; +import { ENUM_RETE_COMPONENT } from '../../model/conversational.model'; +import { PointsFieldControl } from '../controls/points-field.control'; +import VueRender from 'rete-vue-render-plugin'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.data.subtype}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + +export class AnswerMultipleComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.ANSWER_MULTIPLE); + this.data.component = CustomNode; + } + + builder(node) { + + node.data.type = "Answer"; + node.data.subtype = "multiple"; + + const in1 = new Input('in', 'Question', QuestionAnswerType, false); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node.addInput(in1) + .addControl(new NumControl(this.editor, 'sort')) + .addControl(new ValueControl(this.editor, 'value')) + .addControl(new TextAreaLimitedControl(this.editor, 'text')) + .addControl(new PointsFieldControl(this.editor, "points")) + .addOutput(out1); + } + + worker(node, inputs, outputs) { + + } + +} diff --git a/coney-create/src/app/rete/components/answer-open.component.ts b/coney-create/src/app/rete/components/answer-open.component.ts new file mode 100644 index 0000000..5b05810 --- /dev/null +++ b/coney-create/src/app/rete/components/answer-open.component.ts @@ -0,0 +1,56 @@ +import {Component, Input, Output} from 'rete'; +import { QuestionAnswerType, TalkType } from '../sockets'; +import {ENUM_RETE_COMPONENT} from '../../model/conversational.model'; +import { PointsFieldControl } from '../controls/points-field.control'; +import VueRender from 'rete-vue-render-plugin'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.data.subtype}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + +export class AnswerSingleComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.ANSWER_OPEN); + this.data.component = CustomNode; + + + } + + builder(node) { + + node.data.type = "Answer"; + node.data.subtype = "single"; + + const in1 = new Input('in', 'Question', QuestionAnswerType, true); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node.addInput(in1) + .addControl(new PointsFieldControl(this.editor, "points")) + .addOutput(out1); + } + + worker(node, inputs, outputs) { } + +} diff --git a/coney-create/src/app/rete/components/question.component.ts b/coney-create/src/app/rete/components/question.component.ts new file mode 100644 index 0000000..187de4e --- /dev/null +++ b/coney-create/src/app/rete/components/question.component.ts @@ -0,0 +1,60 @@ +import {Component, Input, Output} from 'rete'; +import { QuestionAnswerType, TalkType } from '../sockets'; +import {TextAreaControl} from '../controls/text-area.control'; +import {TagFieldControl} from '../controls/tag-field.control'; +import {MatDialog} from '@angular/material'; +import {ENUM_RETE_COMPONENT} from '../../model/conversational.model'; +import VueRender from 'rete-vue-render-plugin'; + + +var CustomNode = { + template: `
    +
    {{node.data.type}}
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + +export class QuestionComponent extends Component { + + data: any; + constructor(public dialog: MatDialog) { + super(ENUM_RETE_COMPONENT.QUESTION_TEXT); + this.data.component = CustomNode; + } + + builder(node) { + + node.data.type = "Question"; + node.data.subtype = ""; + + const in1 = new Input('in', 'Talk/Answer', TalkType, true); + const out1 = new Output('out', 'Answer', QuestionAnswerType, true); + + const cont = new TextAreaControl(this.editor, "text"); + + return node + .addInput(in1) + .addControl(new TagFieldControl(this.editor, "tag", this.dialog)) + .addControl(cont) + .addOutput(out1); + } + + worker(node, inputs, outputs) { } + +} \ No newline at end of file diff --git a/coney-create/src/app/rete/components/talk-link.component.ts b/coney-create/src/app/rete/components/talk-link.component.ts new file mode 100644 index 0000000..d046514 --- /dev/null +++ b/coney-create/src/app/rete/components/talk-link.component.ts @@ -0,0 +1,56 @@ +import { Component, Input, Output } from 'rete'; +import { TalkType } from '../sockets'; +import { TextFieldControl } from '../controls/text-field.control'; +import { UrlFieldControl } from '../controls/url-field.control'; +import { ENUM_RETE_COMPONENT } from '../../model/conversational.model'; +import VueRender from 'rete-vue-render-plugin'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.data.subtype}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + + +export class TalkLinkComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.TALK_LINK); + this.data.component = CustomNode; + } + + builder(node) { + + node.data.type = "Talk"; + node.data.subtype = "link"; + + const in1 = new Input('in', 'Talk/Answer', TalkType, true); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node.addInput(in1) + .addControl(new TextFieldControl(this.editor, 'title')) + .addControl(new UrlFieldControl(this.editor, 'url')) + .addOutput(out1); + } + + worker() { } +} diff --git a/coney-create/src/app/rete/components/talk-text.component.ts b/coney-create/src/app/rete/components/talk-text.component.ts new file mode 100644 index 0000000..05835d7 --- /dev/null +++ b/coney-create/src/app/rete/components/talk-text.component.ts @@ -0,0 +1,57 @@ +import { Component, Input, Output } from 'rete'; +import { TalkType } from '../sockets'; +import { TextAreaControl } from '../controls/text-area.control'; +import { ENUM_RETE_COMPONENT } from '../../model/conversational.model'; +import VueRender from 'rete-vue-render-plugin'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.data.subtype}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + + +export class TalkTextComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.TALK_TEXT); + this.data.component = CustomNode; + } + + builder(node) { + + node.data.type = "Talk"; + node.data.subtype = "text"; + + + const in1 = new Input('in', 'Talk/Answer', TalkType, true); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node + .addInput(in1) + .addControl(new TextAreaControl(this.editor, 'text')) + .addOutput(out1); + } + + worker(node, inputs, outputs) { } + +} diff --git a/coney-create/src/app/rete/components/talk-url.component.ts b/coney-create/src/app/rete/components/talk-url.component.ts new file mode 100644 index 0000000..128aa7e --- /dev/null +++ b/coney-create/src/app/rete/components/talk-url.component.ts @@ -0,0 +1,56 @@ +import { Component, Input, Output } from 'rete'; +import { TalkType } from '../sockets'; +import { UrlFieldControl } from '../controls/url-field.control'; +import { ENUM_RETE_COMPONENT } from '../../model/conversational.model'; +import VueRender from 'rete-vue-render-plugin'; + +var CustomNode = { + template: `
    +
    +
    {{node.data.type}}
    + {{node.label}} +
    + +
    +
    {{output.name}}
    + +
    + +
    + +
    + +
    {{input.name}}
    +
    +
    +
    `, + mixins: [VueRender.mixin], + components: { + Socket: VueRender.Socket + } +} + +export class TalkUrlComponent extends Component { + data: any; + constructor() { + super(ENUM_RETE_COMPONENT.TALK_URL); + this.data.component = CustomNode; + } + + builder(node) { + + node.type = "Talk"; + node.subtype = "imageUrl"; + node.label = "image/gif"; + + + const in1 = new Input('in', 'Talk/Answer', TalkType, true); + const out1 = new Output('out', 'Talk/Question', TalkType, false); + return node + .addInput(in1) + .addControl(new UrlFieldControl(this.editor, 'url')) + .addOutput(out1); + } + + worker(node, inputs, outputs) { } +} diff --git a/coney-create/src/app/rete/controls/checkbox.control.ts b/coney-create/src/app/rete/controls/checkbox.control.ts new file mode 100644 index 0000000..300a405 --- /dev/null +++ b/coney-create/src/app/rete/controls/checkbox.control.ts @@ -0,0 +1,165 @@ +import { Control } from 'rete'; +import Vue from 'vue'; + +const VueCheckboxControl = Vue.component('text', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: `
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + + + +
    + Value of no answer + +
    + +
    +
    `, + data() { + return { + noOpValue: 0, + noOpText: "None of the above", + noOpChecked: false, + values: [] + }; + }, + methods: { + change() { + }, + update() { + + if (this.ikey) { + this.putData(this.ikey, this.values); + } + this.emitter.trigger('process'); + + var n = this.emitter.selected.list[0]; + return new Promise(resolve => { + setTimeout(() => { + this.emitter.view.updateConnections({ node: n }); + }, 10); + }); + }, + addRow(e) { + + if(this.values.length == 15){ + return; + } + this.values.push({ v: "" }); + + if (e == undefined) { + return; + } + var index = this.values.length - 1; + + var n = this.emitter.selected.list[0]; + return new Promise(resolve => { + setTimeout(() => { + var x = document.getElementById(index + ""); + if (x != undefined) { + document.getElementById(index + "").focus(); + } else { + index--; + document.getElementById(index + "").focus(); + } + this.emitter.view.updateConnections({ node: n }); + }, 10); + }); + + }, + deleteRow(index) { + if (this.values.length > 1) { + this.values.splice(index, 1); + + var n = this.emitter.selected.list[0]; + return new Promise(resolve => { + setTimeout(() => { + this.emitter.view.updateConnections({ node: n }); + }, 10); + }); + } + }, + insertData() { + for (var i = 0; i < this.values.length; i++) { + if (this.values[i].n != undefined) { + this.noOpChecked = true; + this.noOpText = this.values[i].v; + this.noOpValue = this.values[i].value; + + } + } + }, + manageNone() { + return new Promise(resolve => { + setTimeout(() => { + + var text = this.noOpText; + if (this.noOpText == "") { + text = "None of the above"; + } + + var isPresent = false; + var position = 0; + for (var i = 0; i < this.values.length; i++) { + if (this.values[i].n != undefined) { + isPresent = true; + position = i; + this.values[i].value = this.noOpValue; + this.values[i].v = text; + } + } + + if (isPresent && !this.noOpChecked) { + this.values.splice(position, 1); + } + if (!isPresent && this.noOpChecked) { + var it = { v: this.noOpText, value: this.noOpValue, n: 1 }; + this.values.push(it); + } + }, 20); + }); + + } + }, + mounted() { + + this.values = this.getData(this.ikey); + if (this.values == undefined) { + this.values = []; + this.values.push({ v: "" }); + } + this.insertData(); + } +}) + +export class CheckboxControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + this.component = VueCheckboxControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.values = val; + } +} diff --git a/coney-create/src/app/rete/controls/number.control.ts b/coney-create/src/app/rete/controls/number.control.ts new file mode 100644 index 0000000..1aaaa56 --- /dev/null +++ b/coney-create/src/app/rete/controls/number.control.ts @@ -0,0 +1,52 @@ +import { Control } from 'rete'; +import Vue from 'vue';; + +const VueNumControl = Vue.component('num', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: `
    + Order + +
    `, + + data() { + return { + value: 1 + }; + }, + methods: { + change(e) { + this.value = +e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.value); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.value = this.getData(this.ikey); + if(this.value == undefined){ + this.value = 0; + } + } +}) + + +export class NumControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + this.component = VueNumControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/points-field.control.ts b/coney-create/src/app/rete/controls/points-field.control.ts new file mode 100644 index 0000000..6fb747b --- /dev/null +++ b/coney-create/src/app/rete/controls/points-field.control.ts @@ -0,0 +1,52 @@ +import { Control } from 'rete'; +import Vue from 'vue';; +const VueNumControl = Vue.component('num', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: `
    + PT: + +
    `, + data() { + return { + value: 0 + }; + }, + methods: { + change(e) { + this.value = +e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.value); + } + this.emitter.trigger('process'); + } + }, + mounted() { + var tmp = this.getData(this.ikey); + if(tmp == undefined){ + tmp = 0; + } + this.value = tmp; + this.update(); + } +}) + + +export class PointsFieldControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + + this.component = VueNumControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/tag-field.control.ts b/coney-create/src/app/rete/controls/tag-field.control.ts new file mode 100644 index 0000000..e13370e --- /dev/null +++ b/coney-create/src/app/rete/controls/tag-field.control.ts @@ -0,0 +1,81 @@ +import { Control } from 'rete'; +import Vue from 'vue';; +import { SearchTagDialogComponent } from '../../dialogs/search-tag-dialog.component'; +import { MatDialog } from '@angular/material'; + +var dialog: MatDialog; + +const VueTagFieldControl = Vue.component('txt-field', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '
    ' + + ' {{ text }}
    ' + + '
    ', + data() { + return { + text: "", + } + }, + methods: { + deleteOne(e: any) { + var el = e.toElement; + if (el.tagName.toLowerCase() != "span") { + return; + } + el.textContent = ""; + this.text = ""; + this.update(); + }, + change(e) { + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + var n = this.emitter.selected.list[0]; + return new Promise(resolve => { + setTimeout(() => { + this.emitter.view.updateConnections({ node: n }); + }, 10); + }); + }, + openTagDialog(e: any) { + + if(this.text == undefined || this.text == ""){ + this.text = ""; + } + const dialogRef = dialog.open(SearchTagDialogComponent, { + width: '500px', + maxHeight: '80vh', + data: this.text + }); + + dialogRef.afterClosed().subscribe(selectedTag => { + if (selectedTag !== undefined) { + this.text = selectedTag; + } + this.update(); + }); + } + }, + mounted() { + this.text = this.getData(this.ikey); + } +}); + +export class TagFieldControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, public dialogMod: MatDialog, readonly = false) { + super(key); + dialog = dialogMod; + this.component = VueTagFieldControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/text-area-limited.control.ts b/coney-create/src/app/rete/controls/text-area-limited.control.ts new file mode 100644 index 0000000..ba23240 --- /dev/null +++ b/coney-create/src/app/rete/controls/text-area-limited.control.ts @@ -0,0 +1,45 @@ +import { Control } from 'rete'; +import Vue from 'vue';; + +const VueTextAreaLimitedControl = Vue.component('txt-area', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '', + data() { + return { + text: '' + } + }, + methods: { + change(e) { + this.text = e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.text = this.getData(this.ikey); + } +}) + +export class TextAreaLimitedControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + + this.component = VueTextAreaLimitedControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/text-area.control.ts b/coney-create/src/app/rete/controls/text-area.control.ts new file mode 100644 index 0000000..a3a45e3 --- /dev/null +++ b/coney-create/src/app/rete/controls/text-area.control.ts @@ -0,0 +1,46 @@ +import { Control } from 'rete'; +import Vue from 'vue';; + +const VueTextAreaControl = Vue.component('txt-area', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '', + data() { + return { + text: '' + } + }, + methods: { + change(e) { + this.text = e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.text = this.getData(this.ikey); + } +}) + +export class TextAreaControl extends Control { + component: any; + props: any; + vueContext: any; + remChar = "asd"; + + constructor(public emitter, public key, readonly = false) { + super(key); + + this.component = VueTextAreaControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/text-field.control.ts b/coney-create/src/app/rete/controls/text-field.control.ts new file mode 100644 index 0000000..2aec72c --- /dev/null +++ b/coney-create/src/app/rete/controls/text-field.control.ts @@ -0,0 +1,45 @@ +import { Control } from 'rete'; +import Vue from 'vue'; + +const VueTextFieldControl = Vue.component('txt-field', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '', + data() { + return { + text: '' + } + }, + methods: { + change(e) { + this.text = e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.text = this.getData(this.ikey); + } +}); + +export class TextFieldControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + + this.component = VueTextFieldControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/text-type.control.ts b/coney-create/src/app/rete/controls/text-type.control.ts new file mode 100644 index 0000000..91aa977 --- /dev/null +++ b/coney-create/src/app/rete/controls/text-type.control.ts @@ -0,0 +1,57 @@ +import { Control } from 'rete'; +import Vue from 'vue';; + +const VueTextTypeControl = Vue.component('txt-field', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '
    '+ + '
    ', + data() { + return { + text: '' + } + }, + methods: { + change(e) { + this.text = e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + } + }, + mounted() { + + if (this.getData(this.ikey) == undefined || this.getData(this.ikey) == "") { + this.text = "text"; + this.update(); + } else { + this.text = this.getData(this.ikey); + } + } +}) + +export class TextTypeControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + + this.component = VueTextTypeControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} \ No newline at end of file diff --git a/coney-create/src/app/rete/controls/url-field.control.ts b/coney-create/src/app/rete/controls/url-field.control.ts new file mode 100644 index 0000000..ca95b03 --- /dev/null +++ b/coney-create/src/app/rete/controls/url-field.control.ts @@ -0,0 +1,44 @@ +import { Control } from 'rete'; +import Vue from 'vue'; + +const VueUrlFieldControl = Vue.component('url', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '', + data() { + return { + text: '' + }; + }, + methods: { + change(e) { + this.text = e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.text); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.text = this.getData(this.ikey); + } +}); + +export class UrlFieldControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + this.component = VueUrlFieldControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/value.control.ts b/coney-create/src/app/rete/controls/value.control.ts new file mode 100644 index 0000000..c43ca3e --- /dev/null +++ b/coney-create/src/app/rete/controls/value.control.ts @@ -0,0 +1,52 @@ +import { Control } from 'rete'; +import Vue from 'vue';; + +const VueValueControl = Vue.component('num', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: `
    + Value + +
    `, + data() { + return { + value: 1 + }; + }, + methods: { + change(e) { + this.value = +e.target.value; + this.update(); + }, + update() { + if (this.ikey) { + this.putData(this.ikey, this.value); + } + this.emitter.trigger('process'); + } + }, + mounted() { + this.value = this.getData(this.ikey); + if(this.value == undefined){ + this.value = 0; + this.update(); + } + } +}) + + +export class ValueControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor(public emitter, public key, readonly = false) { + super(key); + this.component = VueValueControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} diff --git a/coney-create/src/app/rete/controls/visualization.control.ts b/coney-create/src/app/rete/controls/visualization.control.ts new file mode 100644 index 0000000..cbdc655 --- /dev/null +++ b/coney-create/src/app/rete/controls/visualization.control.ts @@ -0,0 +1,99 @@ +import { Control } from 'rete'; +import Vue from 'vue'; + +const VueVisualizationControl = Vue.component('txt-field', { + props: ['readonly', 'emitter', 'ikey', 'getData', 'putData'], + template: '
    '+ + '

    {{ error }}

    '+ + '
    ', + data() { + return { + text: '', + error: '' + } + }, + methods: { + change(e) { + + + var answers = this.emitter.selected.list[0].outputs.get("out").connections.length; + + if(e.target.value == "emoji"){ + if(answers>5){ + this.error = "Max of 5 answers for "+e.target.value; + e.target.value = this.text; + return; + } + } else if(e.target.value == "options"){ + if(answers>6){ + this.error = "Max of 6 answers for "+e.target.value; + e.target.value = this.text; + return; + } + } else if(e.target.value == "slider"){ + if(answers>9){ + this.error = "Max of 9 answers for "+e.target.value; + e.target.value = this.text; + return; + } + } else if(e.target.value == "star"){ + if(answers>10){ + this.error = "Max of 10 answers for "+e.target.value; + e.target.value = this.text; + return; + } + } else { + if(answers>25){ + this.error = "Max of 25 answers for "+e.target.value; + e.target.value = this.text; + return; + } + } + this.error = ""; + + this.text = e.target.value; + this.update(); + }, + update() { + + if (this.ikey) { + this.putData(this.ikey, this.text); + } + + this.emitter.trigger('process'); + } + }, + mounted() { + + if (this.getData(this.ikey) == undefined || this.getData(this.ikey) == "") { + this.text = "star"; + this.update(); + } else { + this.text = this.getData(this.ikey); + } + } +}) + +export class VisualizationControl extends Control { + component: any; + props: any; + vueContext: any; + + constructor( + public emitter, public key, readonly = false) { + super(key); + + this.component = VueVisualizationControl; + this.props = { emitter, ikey: key, readonly }; + } + + setValue(val) { + this.vueContext.value = val; + } +} \ No newline at end of file diff --git a/coney-create/src/app/rete/rete.component.css b/coney-create/src/app/rete/rete.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-create/src/app/rete/rete.component.html b/coney-create/src/app/rete/rete.component.html new file mode 100644 index 0000000..74b7743 --- /dev/null +++ b/coney-create/src/app/rete/rete.component.html @@ -0,0 +1,14 @@ +
    +
    + + + +
    +
    +
    \ No newline at end of file diff --git a/coney-create/src/app/rete/rete.component.ts b/coney-create/src/app/rete/rete.component.ts new file mode 100644 index 0000000..66da715 --- /dev/null +++ b/coney-create/src/app/rete/rete.component.ts @@ -0,0 +1,876 @@ +import { + AfterViewInit, Component, ElementRef, EventEmitter, + Input, OnChanges, Output, ViewChild, ViewEncapsulation, NgZone +} from '@angular/core'; + +import { Engine, NodeEditor, Node } from 'rete'; +import ConnectionPlugin from 'rete-connection-plugin'; +import VueRenderPlugin from 'rete-vue-render-plugin'; +import HistoryPlugin from 'rete-history-plugin'; +import AreaPlugin from 'rete-area-plugin'; +import ContextMenuPlugin from 'rete-context-menu-plugin'; +import ReadonlyPlugin from 'rete-readonly-plugin'; +import MinimapPlugin from 'rete-minimap-plugin'; + + +import { MatDialog } from '@angular/material'; + +import { QuestionComponent } from './components/question.component'; +import { AnswerSingleComponent } from './components/answer-open.component'; +import { TalkTextComponent } from './components/talk-text.component'; +import { AnswerMultipleComponent } from './components/answer-multiple.component'; +import { AnswerCheckboxComponent } from './components/answer-checkbox.component'; +import { TalkUrlComponent } from './components/talk-url.component'; +import { TalkLinkComponent } from './components/talk-link.component'; +import { VisualizationControl } from './controls/visualization.control'; +import { + ENUM_CONV_STATUS, ENUM_RETE_COMPONENT, + RETE_ID, ENUM_INFO, ENUM_OPERATION_FEEDBACK +} from '../model/conversational.model'; +import { Transform } from 'rete/types/view/area'; +import { TextTypeControl } from './controls/text-type.control'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-rete', + templateUrl: './rete.component.html', + styleUrls: ['./rete.component.css'] +}) +export class ReteComponent implements AfterViewInit, OnChanges { + + static editor: NodeEditor; + static engine: Engine; + + retePosition = { x: 200, y: 200 }; + readonly = { enabled: false }; + lastNode: Node; + components; + createLink; + checkValue; + globalPath; + errorFound: boolean; + + translateCheck = true; + translateX = 0; + translateY = 0; + + @ViewChild('nodeEditor', { static: false }) el: ElementRef; + @Input() sourceJson: any; + @Output() changedPosition: EventEmitter> = new EventEmitter>(); + @Output() editedJson: EventEmitter = new EventEmitter(); + @Output() reteObject: EventEmitter = new EventEmitter(); + @Output() conversationTags: EventEmitter = new EventEmitter(); + + constructor(public dialog: MatDialog, private ngZone: NgZone) { }; + + async ngAfterViewInit() { + const container = this.el.nativeElement; + this.createLink = true; + this.checkValue = true; + this.errorFound = false; + + this.components = [ + new QuestionComponent(this.dialog), + new AnswerSingleComponent(), + new AnswerMultipleComponent(), + new AnswerCheckboxComponent(), + new TalkTextComponent(), + new TalkUrlComponent(), + new TalkLinkComponent() + ]; + + + this.ngZone.runOutsideAngular(() => { + ReteComponent.editor = new NodeEditor(RETE_ID, container); + + ReteComponent.editor.use(ConnectionPlugin); + ReteComponent.editor.use(VueRenderPlugin); + ReteComponent.editor.use(ReadonlyPlugin, this.readonly); + ReteComponent.editor.use(HistoryPlugin, { keyboard: true }); + ReteComponent.editor.use(MinimapPlugin); + ReteComponent.editor.use(AreaPlugin, { scaleExtent: { min: 0.1, max: 1.5 } }); + ReteComponent.editor.use(ContextMenuPlugin, { + searchBar: false, + allocate() { + return [] + }, + }); + + }); + + ReteComponent.engine = new Engine(RETE_ID); + + this.components.map(c => { + ReteComponent.editor.register(c); + ReteComponent.engine.register(c); + }); + + const n = await this.components[4].createNode({ text: '' }); + + n.position = [80, 200]; + ReteComponent.editor.addNode(n); + ReteComponent.editor.on('connectioncreated', async (connection) => { + + var n: Node; + n = connection.output.node; + const outputConnections = connection.output.connections; + + //adds and removes the viz selector and field whenever different types of answers are connected + if (outputConnections.length == 1 && n.name.includes("Question")) { + if (connection.input.node.name.includes("multiple")) { + if(n.controls.get("text_type") != undefined){ + n.data.text_type = ""; + n.controls.delete("text_type"); + await this.delay(100); + } + + if (n.controls.get("visualization") == undefined) { + console.log("no visualization found"); + var tmp = n.data.vizualization; + + n.addControl(new VisualizationControl(ReteComponent.editor, "visualization")); + if(tmp!=undefined){ + n.data.visualization = tmp; + } + n.data.subtype="multiple"; + await this.delay(200); + ReteComponent.editor.view.updateConnections({ node: n }); + } + + } else if (connection.input.node.name.includes("open") || connection.input.node.name.includes("checkbox")) { + + if (n.controls.get("visualization") != undefined) { + n.data.visualization = ""; + n.controls.delete("visualization"); + await this.delay(100); + ReteComponent.editor.view.updateConnections({ node: n }); + } + + if(connection.input.node.name.includes("open")){ + n.data.subtype="single"; + n.data.visualization="text"; + n.addControl(new TextTypeControl(ReteComponent.editor, "text_type")); + + } else { + + if(n.controls.get("text_type") != undefined){ + delete n.data.text_type; + n.controls.delete("text_type"); + } + + n.data.subtype="checkbox"; + n.data.visualization="checkbox"; + + } + } + } + + //calls the method to automatically set order and value values + if (connection.input.node.name === ENUM_RETE_COMPONENT.ANSWER_MULTIPLE) { + if (this.checkValue) { + this.checkValue = false; + this.setValue(outputConnections, connection); + } + } + + //checks on connections + if (outputConnections.length > 1) { + if (outputConnections[0].input.node.name !== connection.input.node.name) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MULTI_TYPE); + } + else if (connection.input.node.name === ENUM_RETE_COMPONENT.TALK_TEXT) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MULTI_ELEMENT); + } + else if (connection.input.node.name === ENUM_RETE_COMPONENT.TALK_URL) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MULTI_ELEMENT); + } + else if (connection.input.node.name === ENUM_RETE_COMPONENT.TALK_LINK) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MULTI_ELEMENT); + } + else if (connection.input.node.name !== ENUM_RETE_COMPONENT.ANSWER_MULTIPLE) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MULTI_ELEMENT); + } + else if (connection.output.node.data.visualization === "emoji" && outputConnections.length > 5) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MAX_RANGE); + } + else if (connection.output.node.data.visualization === "options" && outputConnections.length > 6) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MAX_RANGE); + } + else if (connection.output.node.data.visualization === "slider" && outputConnections.length > 9) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MAX_RANGE); + } + else if (connection.output.node.data.visualization === "star" && outputConnections.length > 10) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MAX_RANGE); + } + else if (connection.input.node.name === ENUM_RETE_COMPONENT.ANSWER_MULTIPLE && outputConnections.length > 25) { + ReteComponent.editor.removeConnection(connection); + this.reteMessage(ENUM_OPERATION_FEEDBACK.INFO, ENUM_INFO.MAX_RANGE); + } + } + }); + + + //disables the zoom on double click if the user is focusing an input or textarea + ReteComponent.editor.on('zoom', ({ source }) => { + if (this.checkForInputFocus()) { + return source !== 'dblclick'; + } + }); + + /* disables node translation if the input is focused (HEAVY) + ReteComponent.editor.on('nodetranslate', ({ node }) => { + return !this.checkForInputFocus(); + }); + */ + + /*ReteComponent.editor.on('translate', ({transform, x, y}) => { + // var x = document.getElementsByClassName('connection'); + + });*/ + + //saves edits on the "Rete json" + ReteComponent.editor.on(['process', 'nodecreated', 'connectioncreated', 'noderemoved', 'connectionremoved'], async () => { + this.reteEditedJson(ReteComponent.editor.toJSON()); + }); + + + + /* + manages the changes in node selection and the connection creation on node creation: + - if the new node is created left of the old node, no connections are created + - if the new node is a answer, the question retaines the selection (in order to keep creating connected answers) + and they get connected + - else the new node is connected to the previously selected one and the selection shifts to the new one + */ + + ReteComponent.editor.on('nodecreated', (n: Node) => { + + if(n.name.includes("Talk")){ + if(n.name.includes("link")){ + n.data.type = "Talk"; + n.data.subtype = "link"; + } else if(n.name.includes("imageUrl")){ + n.data.type = "Talk"; + n.data.subtype = "imageUrl"; + } else if(n.name.includes("text")){ + n.data.type = "Talk"; + n.data.subtype = "text"; + } + } + + this.lastNode = n; + this.reteChangedPosition(n.position); + if (this.createLink && (ReteComponent.editor.nodes.length > 1)) { + var sel = []; var selNode: Node; + sel = ReteComponent.editor.selected["list"]; + + if (sel.length == 1) { + var oldNode = sel[0]; + + if (oldNode.position[0] > n.position[0]) { + sel.pop(); + return; + } + + selNode = sel.pop(); + ReteComponent.editor.connect(selNode.outputs.get("out"), n.inputs.get("in")); + var isQuestion = (oldNode.name.includes("Question")); + if (!isQuestion) { + sel.push(n); + } else { + sel.push(oldNode); + } + } else if (sel.length > 1) { + for (var i = (sel.length - 1); i >= 0; i--) { + var on = sel[i]; + sel.pop(); + ReteComponent.editor.connect(on.outputs.get("out"), n.inputs.get("in")); + } + sel.push(n); + } + } + }); + + ReteComponent.editor.on('keyup', e => { + + if (e.key == "Delete" && !this.checkForInputFocus()) { + var sel = []; + sel = ReteComponent.editor.selected["list"]; + if (sel.length > 0) { + sel.forEach(element => { + ReteComponent.editor.removeNode(element); + }); + } + } + }), + + ReteComponent.editor.view.resize(); + ReteComponent.editor.trigger('process'); + } + + //method to zoom in (i=0) or out (i=1) called by buttons + public zoom(i) { + var tmpTransf = ReteComponent.editor.view.area.transform; + if (i == 0) { + ReteComponent.editor.view.area.zoom(tmpTransf.k + 0.10, 0, 0, "touch"); + } else { + ReteComponent.editor.view.area.zoom(tmpTransf.k - 0.10, 0, 0, "touch"); + } + } + + + //fits all the nodes on the screen + public async resetView() { + AreaPlugin.zoomAt(ReteComponent.editor); + } + + //turns the border of the node with an error red and sets the view on it + public async setViewOnNode(n: Node) { + var el; + ReteComponent.editor.selectNode(n); + var selEl = document.getElementsByClassName("selected"); + await this.delay(700); + el = selEl[0]; + el.classList.add("errorNode"); + this.errorFound = true; + var arr = []; + arr.push(n); + AreaPlugin.zoomAt(ReteComponent.editor, arr); + } + + delay(time: any) { + return new Promise(resolve => setTimeout(resolve, time)); + } + + //sets value and order field in newly created nodes + async setValue(out, connection) { + if (connection.input.node.data.sort !== undefined && connection.input.node.data.sort !== 0) { + this.checkValue = true; + return; + } + + var valueList = []; var valueToSet = 1; + for (var i = 0; i < out.length; i++) { + var value = out[i].input.node.data.sort; + valueList.push(value); + } + valueList.sort(); + for (var i = 1; i <= valueList.length; i++) { + if (valueList[i - 1] != i) { + valueToSet = i; + break; + } + } + + //just to avoid it running 3 times + await this.delay(10); + this.checkValue = true; + + connection.input.node.data.sort = valueToSet; + connection.input.node.data.value = valueToSet; + var n: Node; n = connection.input.node; + var control: any; + control = n.controls.get("sort"); + control.setValue(valueToSet); + var conntrolValue: any; + conntrolValue = n.controls.get("value"); + conntrolValue.setValue(valueToSet); + } + + /*//methods to generate nodes, get the XY coordinates, the first nodes and an array of the answers if any + public async addTemplateNode(node: any, nextNodes: any, posX: number, posY: number) { + + var firstNode: Node; + posX += 300; + if (node.tags == undefined) { + node.tags = ""; + } + firstNode = await this.createNode(node.temp_type, node.temp_subtype, node.text, node.tags, node.sort, node.value, node.image_url, node.url, posX, posY); + await ReteComponent.editor.addNode(firstNode); + this.createLink = false; + posY -= 400; + for (var i = 0; i < nextNodes.length; i++) { + var temp = nextNodes[i]; var nextNode: Node; + nextNode = await this.createNode(temp.temp_type, temp.temp_subtype, temp.text, "", temp.sort, temp.value, temp.image_url, temp.url, posX + 300, posY + (i * 200)) + await ReteComponent.editor.addNode(nextNode); + await ReteComponent.editor.connect(firstNode.outputs.get("out"), nextNode.inputs.get("in")); + } + this.createLink = true; + }*/ + + //method for node "quick" creation, add a talk or an answer depending on the sel node + public async addEmptyTalk(posX: number, posY: number) { + var sel = []; var selNode: Node; + sel = ReteComponent.editor.selected["list"]; + + if (sel.length == 1) { + selNode = sel[0]; + posX = selNode.position[0] + 300; + posY = selNode.position[1]; + + var i = selNode.getConnections().length % 5; + if (selNode.name.includes("Question")) { + var nAnswer: Node; + nAnswer = await this.createNode("Answer", "multiple", "", "", undefined, undefined, "", "", posX, posY - 200 + (i * 100)); + + await ReteComponent.editor.addNode(nAnswer); + return; + } + } + + var nTalk: Node; + nTalk = await this.createNode("Talk", "text", "", "", 0, 0, "", "", posX, posY); + await ReteComponent.editor.addNode(nTalk); + } + + //adds the tagged class to the nodes with a tag, which changes the border color and centers them in the view + public async highlightTags(tag) { + + var selEl = document.getElementsByClassName("tagged"); + await this.delay(500); + + for (var j = 0; j < selEl.length; j++) { + selEl[j].classList.remove("tagged"); + } + + var toFocus = []; + var first = true; + var nodes = []; nodes = ReteComponent.editor.nodes; + + for (var i = 0; i < nodes.length; i++) { + if (nodes[i].data.tag != undefined && nodes[i].data.tag == tag) { + if (first) { + ReteComponent.editor.selectNode(nodes[i]); + first = false; + } else { + ReteComponent.editor.selectNode(nodes[i], true); + } + toFocus.push(nodes[i]); + } + } + var selEl = document.getElementsByClassName("selected"); + await this.delay(1000); + + for (var j = 0; j < selEl.length; j++) { + selEl[j].classList.add("tagged"); + } + if (toFocus.length > 0) { + AreaPlugin.zoomAt(ReteComponent.editor, toFocus); + } + } + + //gathers all the conversation tags from the editor + public getConversationTags() { + + var tags = []; + var nodes: any; + nodes = ReteComponent.editor.nodes; + for (var i = 0; i < nodes.length; i++) { + if (nodes[i].data.tag != undefined && nodes[i].data.tag != "") { + if (!tags.includes(nodes[i].data.tag.toLowerCase())) { + tags.push(nodes[i].data.tag.toLowerCase()); + } + } + } + this.reteChangedConversationTags(tags); + } + + //event emitter for changes in the tags + public reteChangedConversationTags(tags) { + this.conversationTags.emit(tags); + } + + //method to manage questions creation with the option of addint "ansNumber" answers and filling their content + //calls "createNode" to actually create the nodes + public async addBlankQuestion(posX: number, posY: number, type: string, ansNumber: number, content: string) { + //overrides standard linking of nodes + this.createLink = false; + //creates question + var nQuestion: Node; + if (type == "multiple") { + nQuestion = await this.createNode("Question", "star", "", "", 0, 0, "", "", posX, posY); + } else if (type == "checkbox") { + nQuestion = await this.createNode("Question", "checkbox", "", "", 0, 0, "", "", posX, posY); + } else { + nQuestion = await this.createNode("Question", "text", "", "", 0, 0, "", "", posX, posY); + } + + await ReteComponent.editor.addNode(nQuestion); + + //create talk + var nTalk: Node; + nTalk = await this.createNode("Talk", "text", "", "", 0, 0, "", "", posX + 600, posY); + await ReteComponent.editor.addNode(nTalk); + + posY -= 300; + //creates answers and link them + + var answerContent = content.split("-"); + + for (var i = 1; i <= ansNumber; i++) { + var txt = ""; + if (answerContent[i - 1] != undefined) { + txt = answerContent[i - 1]; + } + var nAnswer: Node; + nAnswer = await this.createNode("Answer", type, txt, "", i, i, "", "", posX + 300, posY + (i * 200)); + await ReteComponent.editor.addNode(nAnswer); + //link nodes + await ReteComponent.editor.connect(nQuestion.outputs.get("out"), nAnswer.inputs.get("in")); + await ReteComponent.editor.connect(nAnswer.outputs.get("out"), nTalk.inputs.get("in")); + } + this.createLink = true; + + } + + //creates a node in the conversation + public async createNode(type: string, subtype: string, text: string, tag: string, sort: number, value: number, + image_url: string, url: string, posX: number, posY: number) { + var n: Node; + if (type == "Question") { + n = await this.components[0].createNode({ text: text, visualization: subtype, tag: tag }); + } else if (type == "Answer") { + if (subtype == "multiple") { + n = await this.components[2].createNode({ text: text, sort: sort, value: value, points: 0 }); + } else if (subtype == "single") { + n = await this.components[1].createNode({ text: text, points: 0 }); + } else { + n = await this.components[3].createNode({ text: [], points: 0 }); + } + } else { + if (subtype == "text") { + n = await this.components[4].createNode({ text: text, tag: tag }); + } else if (subtype == "imageUrl") { + n = await this.components[5].createNode({ imageUrl: image_url, tag: tag }); + } else { + n = await this.components[6].createNode({ title: text, url: url, tag: tag }); + } + } + n.position = [posX, posY]; + return n; + } + + async ngOnChanges() { + + if (this.sourceJson != null) { + this.createLink = false; + await ReteComponent.engine.abort(); + await ReteComponent.editor.fromJSON(this.sourceJson); + + if (this.sourceJson['status'] === ENUM_CONV_STATUS.PUBLISHED || this.sourceJson['status'] === ENUM_CONV_STATUS.UNPUBLISHED) { + this.readonly.enabled = true; + } else { + this.readonly.enabled = false; + } + + ReteComponent.editor.trigger('process'); + } this.createLink = true; + } + + /*checks some stuff + returns: + - 0: no starting node found + - 1: isolated node found + - 2: multiple starting points found + - 3: there is a question at the end + - 4: empty fields in talk or question box + */ + public checkForMistakes() { + this.globalPath = []; + + var n: Node; + var count = 0; + var output: Node; + var list = ReteComponent.editor.nodes; + for (var i = 0; i < list.length; i++) { + + //console.log("NODE: " + list[i].id + ", with name: " + list[i].name); + + n = list[i]; + var conns = n.getConnections(); + if (undefined == conns[0]) { + this.setViewOnNode(n); + //isolated nodes + return 1; + } + + //if there is only one output and it points to self, then it's a starting + if (n.id == conns[0].output.node.id) { + count += 1; + output = n; + } + + //if there is only one input and it points to self, then it's an ending node + if ((n.id ==conns[0].input.node.id) + && (n.name.includes("Question")) + && (conns[1] == undefined)) { + this.setViewOnNode(n); + return 3; + } + + if (count > 1) { + this.setViewOnNode(n); + //more than one starting points + return 2; + } + + //empty fields + if(n.name.includes("Question") || n.name.includes("Talk")){ + if(n.data == undefined){ + this.setViewOnNode(n); + return 4; + } + if(n.name.includes("text") && (n.data.text == "" || n.data.text == undefined)){ + this.setViewOnNode(n); + return 4; + } + if((n.name.includes("link") || n.name.includes("imageUrl")) && (n.data.url == "" || n.data.url == undefined)){ + this.setViewOnNode(n); + return 4; + } + } + } + + if (count == 0) { + //no beginning + return 0; + } + + if (output.name.includes("Answer")) { + //starts with an answer + return false; + } + return output; + } + + //checks for loops in the graph + //currently DISABLED due to the high time complexity (n^2) + //TODO: aprire il libro di algoritmi che non ricordo nulla + public checkForLoops(n: Node, path: any) { + + var conns = n.getConnections(); + var prev: Node; + var res: any; + res = true; + + if (path.includes(n.id)) { + this.setViewOnNode(n); + res = false; + return res; + } + path.push(n.id); + + for (var i = 0; i < conns.length; i++) { + prev = conns[i].input.node; + if (n.id != prev.id) { + var stop = false; + for (var j = path.length - 1; j >= 0; j--) { + if (path[j] == n.id) { + stop = true; + } + if (!stop) { + path.pop(); + } + } + res = res && this.checkForLoops(prev, path); + } + } + return res; + } + + //returns the first selected node and, if it's a question, all the answers + public getSelectedNode() { + var res = []; + var list = ReteComponent.editor.selected["list"]; + if (list.length == 1) { + var n: Node; + n = list[0]; + res.push(n); + if (n.name.includes("Question")) { + var prev: Node; + var conns = n.getConnections(); + for (var i = 0; i < conns.length; i++) { + prev = conns[i].input.node; + if (n.id != prev.id) { + res.push(prev); + } + } + } + return res; + } + } + + //for the reload/close check in home.component + //returns true if there is just one block (Talk) with no content (i.e. new conv) + public isConversationNew() { + var nodes = ReteComponent.editor.nodes; + if (nodes.length == 1) { + if (nodes[0].name == "Talk [text]" && (nodes[0].data.text == undefined || nodes[0].data.text == "")) { + return true; + } + } + return false; + } + + /* + checks that + - all the answers to a question have different "order values" (if not returns 1) + - all the options and select answers have text content (if not returns 2) + */ + public checkForMultipleValues(n: Node) { + + var next: any; + var res = 0; + var nodes = ReteComponent.editor.nodes; + for (var c = 0; c < nodes.length; c++) { + + var element = nodes[c]; + if (element.name.includes("Question")) { + var conns = element.getConnections(); + var values = []; + + for (var i = 0; i < conns.length; i++) { + + next = conns[i].input.node; + + + if (element.id != next.id && next.name.includes("Answer") && !next.name.includes("checkbox")) { + + if ((element.data.visualization == "options" || element.data.visualization == "select") && (next.data.text == "" || next.data.text == null)) { + //case when answers are options and the text is empty + this.setViewOnNode(next); + return 2; + } + + if (values.includes(next.data.sort)) { + + this.setViewOnNode(next); + return 1; + } + values.push(next.data.sort); + } else if (next.name.includes("checkbox")) { + if (next.data.checkbox == undefined || next.data.checkbox.length < 1) { + this.setViewOnNode(next); + return 2; + } else if (next.data.checkbox.length >= 1) { + var tmp = next.data.checkbox; + for (var z = 0; z < tmp.length; z++) { + if (tmp[z].v == undefined || tmp[z].v == "") { + //if(tmp[z].value == undefined) + this.setViewOnNode(next); + return 2; + } + } + } else { + break; + } + } + } + } else if (element.name.includes("Talk")) { + //TODO include talk check + } + } + return res; + } + + //returns true if the user is focusing an input/textarea field + public checkForInputFocus() { + var res = false; + + var txtarea = document.getElementsByTagName("textarea"); + var input = document.getElementsByTagName("input"); + for (var i = 0; i < txtarea.length; i++) { + if (document.activeElement == txtarea[i]) { + res = true; + } + } + for (var i = 0; i < input.length; i++) { + if (document.activeElement == input[i]) { + res = true; + } + } + return res; + } + + //moves all the nodes following a selected one either up, down, right of left + public moveAllFollowingNodes(n: Node, path, dir) { + + var check = true; + var prev: Node; + if (n == undefined) { + var list = ReteComponent.editor.selected["list"]; + n = list[0]; + check = false; + } + + path.push(n); + + var amountX = 0; + var amountY = 0; + + if (dir == "up") { + amountY = -200; + } else if (dir == "down") { + amountY = +200; + } else if (dir == "right") { + amountX = 200; + } else if (dir == "left") { + amountX = -200; + } + + ReteComponent.editor.view.nodes.get(n).translate(n.position[0] + amountX, n.position[1] + amountY); + if (check || list.length == 1) { + var conns = n.getConnections(); + for (var i = 0; i < conns.length; i++) { + prev = conns[i].input.node; + + if (n.id != prev.id) { + if (!path.includes(prev) && prev != undefined) { + this.moveAllFollowingNodes(prev, path, dir); + } + } + } + } else { + return; + } + } + + //connect nodes if possible and if only 2 are selected + public connectSelectedNodes(){ + var selectedNodes = ReteComponent.editor.selected["list"]; + //only works if 2 are selected + if (selectedNodes.length == 2){ + + var n1: Node = selectedNodes[0]; + var n2: Node = selectedNodes[1]; + + if(n1.position[0] < n2.position[0]){ + ReteComponent.editor.connect(n1.outputs.get("out"), n2.inputs.get("in")); + } else { + ReteComponent.editor.connect(n2.outputs.get("out"), n1.inputs.get("in")); + } + } + } + + public reteChangedPosition(pos: Array) { + this.changedPosition.emit(pos); + } + + public reteEditedJson(json: any) { + this.editedJson.emit(json); + } + + public reteMessage(type: string, msg: string) { + const obj = { 'type': type, 'msg': msg }; + this.reteObject.emit(obj); + } +} diff --git a/coney-create/src/app/rete/sockets.ts b/coney-create/src/app/rete/sockets.ts new file mode 100644 index 0000000..413b09d --- /dev/null +++ b/coney-create/src/app/rete/sockets.ts @@ -0,0 +1,5 @@ +import { Socket } from 'rete'; + +export const AnyType = new Socket('Any type'); +export const QuestionAnswerType = new Socket('QuestionAnswer'); +export const TalkType = new Socket('Talk'); diff --git a/coney-create/src/app/routing.module.ts b/coney-create/src/app/routing.module.ts new file mode 100644 index 0000000..cd10c09 --- /dev/null +++ b/coney-create/src/app/routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { HomeComponent } from './home.component'; +import { LoginComponent } from './auth/login/login.component'; +import { LogoutComponent } from './auth/logout/logout.component'; +import { AuthGaurdService } from './services/auth-guard.service'; + +const routes: Routes = [ + { path: '', component: HomeComponent, canActivate:[AuthGaurdService] }, + { path: 'login', component: LoginComponent }, + { path: 'logout', component: LogoutComponent,canActivate:[AuthGaurdService] }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, {useHash: true}) + ], + exports: [ RouterModule ], + declarations: [] +}) +export class AppRoutingModule { } diff --git a/coney-create/src/app/services/auth-guard.service.ts b/coney-create/src/app/services/auth-guard.service.ts new file mode 100644 index 0000000..860c85e --- /dev/null +++ b/coney-create/src/app/services/auth-guard.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; +import { AuthenticationService } from './authentication.service'; +import { environment } from '../../environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGaurdService implements CanActivate { + + constructor(private router: Router, + private authService: AuthenticationService) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + if (this.authService.isUserLoggedIn() || !environment.enterprise) + return true; + + this.router.navigate(['login']); + return false; + + } + +} \ No newline at end of file diff --git a/coney-create/src/app/services/auth-http-interceptor.service.ts b/coney-create/src/app/services/auth-http-interceptor.service.ts new file mode 100644 index 0000000..115096f --- /dev/null +++ b/coney-create/src/app/services/auth-http-interceptor.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http'; +import { AuthenticationService } from './authentication.service'; +import { environment } from '../../environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthHtppInterceptorService implements HttpInterceptor { + + constructor() { } + + intercept(req: HttpRequest, next: HttpHandler) { + + if (environment.enterprise && sessionStorage.getItem('username') && sessionStorage.getItem('token')) { + req = req.clone({ + setHeaders: { + Authorization: sessionStorage.getItem('token') + } + }) + } + + return next.handle(req); + + } +} \ No newline at end of file diff --git a/coney-create/src/app/services/authentication.service.ts b/coney-create/src/app/services/authentication.service.ts new file mode 100644 index 0000000..86491f3 --- /dev/null +++ b/coney-create/src/app/services/authentication.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { map } from 'rxjs/operators'; +import { environment } from '../../environments/environment' + +export class User { + constructor( + public status: string, + ) { } + +} + +@Injectable({ + providedIn: 'root' +}) +export class AuthenticationService { + + url = environment.baseUrl + "/coney-api"; + + constructor(private http: HttpClient) {} + + authenticate(username, password) { + const headers = new HttpHeaders({ Authorization: username + ':' + password }); + return this.http.post(this.url + '/authenticate', {}, { headers }).pipe( + map( + userData => { + sessionStorage.setItem('username', username); + let tokenStr = 'Bearer ' + userData.token; + sessionStorage.setItem('token', tokenStr); + return userData; + } + ) + ); + } + + + isUserLoggedIn() { + let user = sessionStorage.getItem('username') + console.log(!(user === null)) + return !(user === null) + } + + logOut() { + sessionStorage.removeItem('username') + } +} \ No newline at end of file diff --git a/coney-create/src/app/services/backend.service.ts b/coney-create/src/app/services/backend.service.ts new file mode 100644 index 0000000..c74a000 --- /dev/null +++ b/coney-create/src/app/services/backend.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { environment } from '../../environments/environment' + +@Injectable() +export class BackendService { + + url = environment.baseUrl + "/coney-api"; + + + constructor(private http: HttpClient) { + } + + postJson(endpoint: string, json: JSON): Observable { + return this.http.post(this.url + endpoint, json); + } + + deleteObject(endpoint: string) { + return this.http.delete(this.url + endpoint); + } + + putObject(endpoint: string) { + return this.http.put(this.url + endpoint, null); + } + + getRequest(endpoint: string) { + return this.http.get(this.url + endpoint, {responseType: 'text'}); + } + + postRequest(endpoint: string, json: JSON): Observable { + return this.http.post(this.url + endpoint, json); + } +} diff --git a/coney-create/src/app/services/routing.service.ts b/coney-create/src/app/services/routing.service.ts new file mode 100644 index 0000000..61f79c6 --- /dev/null +++ b/coney-create/src/app/services/routing.service.ts @@ -0,0 +1,11 @@ +export class RoutingService { + chat: JSON; + + getChat() { + return this.chat; + } + + setChat(chat: JSON) { + this.chat = chat; + } +} diff --git a/coney-create/src/assets/.gitkeep b/coney-create/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/coney-create/src/assets/ErrorSound.mp3 b/coney-create/src/assets/ErrorSound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..de5f37424b7298c546010c7616d0cee91fa41557 GIT binary patch literal 7941 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 L|6k(2<-q>{D^J(Z literal 0 HcmV?d00001 diff --git a/coney-create/src/assets/InfoSound.mp3 b/coney-create/src/assets/InfoSound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a1571a4c57d9f756a17fa2d890e8364f08525165 GIT binary patch literal 29257 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 literal 0 HcmV?d00001 diff --git a/coney-create/src/assets/WarningSound.mp3 b/coney-create/src/assets/WarningSound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6066e62e7df2d06add6063f59e28900919784ff8 GIT binary patch literal 15882 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 + + \ No newline at end of file diff --git a/coney-create/src/assets/create-ui.PNG b/coney-create/src/assets/create-ui.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7dd1f860d7408b2bc2a4e127444498e7c455873c GIT binary patch literal 315085 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⋙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%0D>3>HvST{?Y9Nj;$RAO+Sx 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 + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/coney_create.png b/coney-create/src/assets/navbar/coney_create.png new file mode 100644 index 0000000000000000000000000000000000000000..858bb1c3e572932437c6f9610ba493b693a9623b GIT binary patch literal 29536 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 RaPcLDp{^P1own=!{{@l&Sk3?d literal 0 HcmV?d00001 diff --git a/coney-create/src/assets/navbar/create.png b/coney-create/src/assets/navbar/create.png new file mode 100644 index 0000000000000000000000000000000000000000..01492e289309f16607cb977162601d5979852d02 GIT binary patch literal 6948 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 literal 0 HcmV?d00001 diff --git a/coney-create/src/assets/navbar/delete.svg b/coney-create/src/assets/navbar/delete.svg new file mode 100644 index 0000000..90d33ec --- /dev/null +++ b/coney-create/src/assets/navbar/delete.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/file.svg b/coney-create/src/assets/navbar/file.svg new file mode 100644 index 0000000..36f2b6d --- /dev/null +++ b/coney-create/src/assets/navbar/file.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/information.svg b/coney-create/src/assets/navbar/information.svg new file mode 100644 index 0000000..0818089 --- /dev/null +++ b/coney-create/src/assets/navbar/information.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/inspect_pie.svg b/coney-create/src/assets/navbar/inspect_pie.svg new file mode 100644 index 0000000..0f53b50 --- /dev/null +++ b/coney-create/src/assets/navbar/inspect_pie.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/link.svg b/coney-create/src/assets/navbar/link.svg new file mode 100644 index 0000000..190facc --- /dev/null +++ b/coney-create/src/assets/navbar/link.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/list.svg b/coney-create/src/assets/navbar/list.svg new file mode 100644 index 0000000..2a62fbe --- /dev/null +++ b/coney-create/src/assets/navbar/list.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/logout.svg b/coney-create/src/assets/navbar/logout.svg new file mode 100644 index 0000000..65a7c16 --- /dev/null +++ b/coney-create/src/assets/navbar/logout.svg @@ -0,0 +1,3 @@ + + + diff --git a/coney-create/src/assets/navbar/map.svg b/coney-create/src/assets/navbar/map.svg new file mode 100644 index 0000000..aec7342 --- /dev/null +++ b/coney-create/src/assets/navbar/map.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/open.svg b/coney-create/src/assets/navbar/open.svg new file mode 100644 index 0000000..86b2b75 --- /dev/null +++ b/coney-create/src/assets/navbar/open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/plus.svg b/coney-create/src/assets/navbar/plus.svg new file mode 100644 index 0000000..81c8a0d --- /dev/null +++ b/coney-create/src/assets/navbar/plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/preview.svg b/coney-create/src/assets/navbar/preview.svg new file mode 100644 index 0000000..103f73b --- /dev/null +++ b/coney-create/src/assets/navbar/preview.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/print.svg b/coney-create/src/assets/navbar/print.svg new file mode 100644 index 0000000..822759d --- /dev/null +++ b/coney-create/src/assets/navbar/print.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/save.svg b/coney-create/src/assets/navbar/save.svg new file mode 100644 index 0000000..242297f --- /dev/null +++ b/coney-create/src/assets/navbar/save.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/save_as.svg b/coney-create/src/assets/navbar/save_as.svg new file mode 100644 index 0000000..096b1a3 --- /dev/null +++ b/coney-create/src/assets/navbar/save_as.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/statistics.svg b/coney-create/src/assets/navbar/statistics.svg new file mode 100644 index 0000000..4dc3465 --- /dev/null +++ b/coney-create/src/assets/navbar/statistics.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/tag.svg b/coney-create/src/assets/navbar/tag.svg new file mode 100644 index 0000000..3012938 --- /dev/null +++ b/coney-create/src/assets/navbar/tag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/template.svg b/coney-create/src/assets/navbar/template.svg new file mode 100644 index 0000000..7609c4a --- /dev/null +++ b/coney-create/src/assets/navbar/template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coney-create/src/assets/navbar/translation.svg b/coney-create/src/assets/navbar/translation.svg new file mode 100644 index 0000000..073f5b5 --- /dev/null +++ b/coney-create/src/assets/navbar/translation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/coney-create/src/assets/pattern.png b/coney-create/src/assets/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6d31d5fe85d644b449b000d76b9b1a062fc8c GIT binary patch literal 41534 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

    QyKiYiCn7&=8$&n;E(5vVh)cH?5 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

    J{=siX@Zh4}XUAjJ^)z)4br#W8&+ZD0IJ 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

    INIU@e5nJ^Kw-nO$`m&51&B`+6dKAm?u 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 ybxEhib + + \ No newline at end of file diff --git a/coney-create/src/assets/zoom-in.svg b/coney-create/src/assets/zoom-in.svg new file mode 100644 index 0000000..6a2927c --- /dev/null +++ b/coney-create/src/assets/zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-create/src/assets/zoom-out.svg b/coney-create/src/assets/zoom-out.svg new file mode 100644 index 0000000..bd67c58 --- /dev/null +++ b/coney-create/src/assets/zoom-out.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-create/src/browserslist b/coney-create/src/browserslist new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/coney-create/src/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/coney-create/src/coney-theme.css b/coney-create/src/coney-theme.css new file mode 100644 index 0000000..e4abee9 --- /dev/null +++ b/coney-create/src/coney-theme.css @@ -0,0 +1,3856 @@ +/* Theme for the ripple elements.*/ +/* stylelint-disable material/no-prefixes */ +/* stylelint-enable */ +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; } + +.mat-expansion-panel-header { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px); + -ms-transform: translateY(-1.28125em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px); + -ms-transform: translateY(-1.28124em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px); + -ms-transform: translateY(-1.28123em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28122em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28121em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.2812em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59374em) scale(0.75); + width: 133.33334%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; } + +.mat-radio-button { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-slider-thumb-label-text { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tab-label, .mat-tab-link { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0; } + +.mat-tooltip { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-option { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-simple-snackbar { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Segoe UI; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Segoe UI; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Segoe UI; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Segoe UI; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Segoe UI; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Segoe UI; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Segoe UI; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Segoe UI; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Segoe UI; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Segoe UI; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Segoe UI; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Segoe UI; } + +.mat-card { + font-family: Segoe UI; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Segoe UI; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Segoe UI; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Segoe UI; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Segoe UI; } + +.mat-expansion-panel-header { + font-family: Segoe UI; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Segoe UI; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Segoe UI; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px); + -ms-transform: translateY(-1.28119em) scale(0.75); + width: 133.33339%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px); + -ms-transform: translateY(-1.28118em) scale(0.75); + width: 133.3334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px); + -ms-transform: translateY(-1.28117em) scale(0.75); + width: 133.33341%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28116em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28115em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28114em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59372em) scale(0.75); + width: 133.33336%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Segoe UI; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Segoe UI; + font-size: 12px; } + +.mat-radio-button { + font-family: Segoe UI; } + +.mat-select { + font-family: Segoe UI; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Segoe UI; } + +.mat-slider-thumb-label-text { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Segoe UI; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Segoe UI; } + +.mat-tab-label, .mat-tab-link { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Segoe UI; + margin: 0; } + +.mat-tooltip { + font-family: Segoe UI; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Segoe UI; } + +.mat-list-option { + font-family: Segoe UI; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Segoe UI; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Segoe UI; } + +.mat-simple-snackbar { + font-family: Segoe UI; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Segoe UI; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.mat-option { + color: rgba(0, 0, 0, 0.87); } + .mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #0097a7; } + +.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffc107; } + +.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .mat-pseudo-checkbox::after { + color: #fafafa; } + +.mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.mat-pseudo-checkbox-checked, +.mat-pseudo-checkbox-indeterminate, +.mat-accent .mat-pseudo-checkbox-checked, +.mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffc107; } + +.mat-primary .mat-pseudo-checkbox-checked, +.mat-primary .mat-pseudo-checkbox-indeterminate { + background: #0097a7; } + +.mat-warn .mat-pseudo-checkbox-checked, +.mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-content { + color: white; + background: #0097a7; } + @media (-ms-high-contrast: active) { + .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.mat-badge-accent .mat-badge-content { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.mat-badge { + position: relative; } + +.mat-badge-hidden .mat-badge-content { + display: none; } + +.mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.ng-animate-disabled .mat-badge-content, +.mat-badge-content._mat-animation-noopable { + transition: none; } + +.mat-badge-content.mat-badge-active { + transform: none; } + +.mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-button, .mat-icon-button, .mat-stroked-button { + color: inherit; + background: transparent; } + .mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary { + color: #0097a7; } + .mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent { + color: #ffc107; } + .mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn { + color: #f44336; } + .mat-button.mat-primary[disabled], .mat-button.mat-accent[disabled], .mat-button.mat-warn[disabled], .mat-button[disabled][disabled], .mat-icon-button.mat-primary[disabled], .mat-icon-button.mat-accent[disabled], .mat-icon-button.mat-warn[disabled], .mat-icon-button[disabled][disabled], .mat-stroked-button.mat-primary[disabled], .mat-stroked-button.mat-accent[disabled], .mat-stroked-button.mat-warn[disabled], .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #0097a7; } + .mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffc107; } + .mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .mat-button[disabled] .mat-button-focus-overlay, .mat-icon-button[disabled] .mat-button-focus-overlay, .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.mat-button-focus-overlay { + background: black; } + +.mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + color: white; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + color: white; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + background-color: #0097a7; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + background-color: #ffc107; } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + background-color: #f44336; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.mat-stroked-button:not([class*='mat-elevation-z']), .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([class*='mat-elevation-z']), .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-fab[disabled]:not([class*='mat-elevation-z']), .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone, +.mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +[dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-checkmark { + fill: #fafafa; } + +.mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.mat-checkbox-mixedmark { + background-color: #fafafa; } + +.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #0097a7; } + +.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffc107; } + +.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .mat-checkbox-background { + background: none; } } + +.mat-checkbox .mat-ripple-element { + background-color: black; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #0097a7; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffc107; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .mat-chip.mat-standard-chip::after { + background: black; } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #0097a7; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.mat-table { + background: white; } + +.mat-table thead, .mat-table tbody, .mat-table tfoot, +mat-header-row, mat-row, mat-footer-row, +[mat-header-row], [mat-row], [mat-footer-row], +.mat-table-sticky { + background: inherit; } + +mat-row, mat-header-row, mat-footer-row, +th.mat-header-cell, td.mat-cell, td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.mat-cell, .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.mat-datepicker-toggle, +.mat-datepicker-content .mat-calendar-next-button, +.mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.mat-calendar-body-selected { + background-color: #0097a7; + color: white; } + +.mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(0, 151, 167, 0.4); } + +.mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 193, 7, 0.4); } + .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-datepicker-toggle-active { + color: #0097a7; } + .mat-datepicker-toggle-active.mat-accent { + color: #ffc107; } + .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.mat-expansion-panel-header-description, +.mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.mat-form-field.mat-focused .mat-form-field-label { + color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.mat-focused .mat-form-field-required-marker { + color: #ffc107; } + +.mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #0097a7; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffc107; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.mat-error { + color: #f44336; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #0097a7; } + +.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffc107; } + +.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.mat-icon.mat-primary { + color: #0097a7; } + +.mat-icon.mat-accent { + color: #ffc107; } + +.mat-icon.mat-warn { + color: #f44336; } + +.mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-input-element:disabled, +.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-input-element { + caret-color: #0097a7; } + .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-accent .mat-input-element { + caret-color: #ffc107; } + +.mat-warn .mat-input-element, +.mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.mat-list-item-disabled { + background-color: #eeeeee; } + +.mat-list-option:hover, .mat-list-option:focus, +.mat-nav-list .mat-list-item:hover, +.mat-nav-list .mat-list-item:focus, +.mat-action-list .mat-list-item:hover, +.mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.mat-menu-panel { + background: white; } + .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .mat-menu-item[disabled], .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-menu-item .mat-icon-no-color, +.mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-menu-item:hover:not([disabled]), +.mat-menu-item.cdk-program-focused:not([disabled]), +.mat-menu-item.cdk-keyboard-focused:not([disabled]), +.mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.mat-paginator { + background: white; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.mat-paginator-decrement, +.mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-paginator-first, +.mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-icon-button[disabled] .mat-paginator-decrement, +.mat-icon-button[disabled] .mat-paginator-increment, +.mat-icon-button[disabled] .mat-paginator-first, +.mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-progress-bar-background { + fill: #00838f; } + +.mat-progress-bar-buffer { + background-color: #00838f; } + +.mat-progress-bar-fill::after { + background-color: #0097a7; } + +.mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffc107; } + +.mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.mat-progress-spinner circle, .mat-spinner circle { + stroke: #0097a7; } + +.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle { + stroke: #ffc107; } + +.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #0097a7; } + +.mat-radio-button.mat-primary .mat-radio-inner-circle, +.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #0097a7; } + +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffc107; } + +.mat-radio-button.mat-accent .mat-radio-inner-circle, +.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffc107; } + +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.mat-radio-button.mat-warn .mat-radio-inner-circle, +.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button .mat-ripple-element { + background-color: black; } + +.mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.mat-select-panel { + background: white; } + .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #0097a7; } + +.mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffc107; } + +.mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-drawer.mat-drawer-push { + background-color: white; } + .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +[dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffc107; } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 193, 7, 0.54); } + +.mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffc107; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #0097a7; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(0, 151, 167, 0.54); } + +.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #0097a7; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-primary .mat-slider-track-fill, +.mat-primary .mat-slider-thumb, +.mat-primary .mat-slider-thumb-label { + background-color: #0097a7; } + +.mat-primary .mat-slider-thumb-label-text { + color: white; } + +.mat-accent .mat-slider-track-fill, +.mat-accent .mat-slider-thumb, +.mat-accent .mat-slider-thumb-label { + background-color: #ffc107; } + +.mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.mat-warn .mat-slider-track-fill, +.mat-warn .mat-slider-thumb, +.mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.mat-warn .mat-slider-thumb-label-text { + color: white; } + +.mat-slider-focus-ring { + background-color: rgba(255, 193, 7, 0.2); } + +.mat-slider:hover .mat-slider-track-background, +.cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-disabled .mat-slider-track-background, +.mat-slider-disabled .mat-slider-track-fill, +.mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-step-header:hover { + background: none; } } + +.mat-step-header .mat-step-label, +.mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.mat-step-header .mat-step-icon-selected, +.mat-step-header .mat-step-icon-state-done, +.mat-step-header .mat-step-icon-state-edit { + background-color: #0097a7; + color: white; } + +.mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.mat-stepper-horizontal, .mat-stepper-vertical { + background-color: white; } + +.mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.mat-horizontal-stepper-header::before, +.mat-horizontal-stepper-header::after, +.mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-sort-header-arrow { + color: #757575; } + +.mat-tab-nav-bar, +.mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.mat-tab-group-inverted-header .mat-tab-nav-bar, +.mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.mat-tab-label, .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-tab-group[class*='mat-background-'] .mat-tab-header, +.mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #0097a7; } + +.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffc107; } + +.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-background-primary .mat-tab-header, .mat-tab-group.mat-background-primary .mat-tab-links, .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #0097a7; } + +.mat-tab-group.mat-background-primary .mat-tab-label, .mat-tab-group.mat-background-primary .mat-tab-link, .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-background-accent .mat-tab-header, .mat-tab-group.mat-background-accent .mat-tab-links, .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffc107; } + +.mat-tab-group.mat-background-accent .mat-tab-label, .mat-tab-group.mat-background-accent .mat-tab-link, .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-background-warn .mat-tab-header, .mat-tab-group.mat-background-warn .mat-tab-links, .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.mat-tab-group.mat-background-warn .mat-tab-label, .mat-tab-group.mat-background-warn .mat-tab-link, .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-primary { + background: #0097a7; + color: white; } + .mat-toolbar.mat-accent { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .mat-toolbar .mat-form-field-underline, + .mat-toolbar .mat-form-field-ripple, + .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .mat-toolbar .mat-form-field-label, + .mat-toolbar .mat-focused .mat-form-field-label, + .mat-toolbar .mat-select-value, + .mat-toolbar .mat-select-arrow, + .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.mat-tree { + background: white; } + +.mat-tree-node, +.mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-simple-snackbar-action { + color: #ffc107; } + +.alternate-theme .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-option { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option:hover:not(.mat-option-disabled), .alternate-theme .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #03a9f4; } + +.alternate-theme .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffee58; } + +.alternate-theme .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.alternate-theme .mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-pseudo-checkbox::after { + color: #fafafa; } + +.alternate-theme .mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.alternate-theme .mat-pseudo-checkbox-checked, +.alternate-theme .mat-pseudo-checkbox-indeterminate, +.alternate-theme .mat-accent .mat-pseudo-checkbox-checked, +.alternate-theme .mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffee58; } + +.alternate-theme .mat-primary .mat-pseudo-checkbox-checked, +.alternate-theme .mat-primary .mat-pseudo-checkbox-indeterminate { + background: #03a9f4; } + +.alternate-theme .mat-warn .mat-pseudo-checkbox-checked, +.alternate-theme .mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.alternate-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.alternate-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.alternate-theme .mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-app-background, .alternate-theme.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.alternate-theme .mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-content { + color: white; + background: #03a9f4; } + @media (-ms-high-contrast: active) { + .alternate-theme .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.alternate-theme .mat-badge-accent .mat-badge-content { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.alternate-theme .mat-badge { + position: relative; } + +.alternate-theme .mat-badge-hidden .mat-badge-content { + display: none; } + +.alternate-theme .mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.alternate-theme .ng-animate-disabled .mat-badge-content, +.alternate-theme .mat-badge-content._mat-animation-noopable { + transition: none; } + +.alternate-theme .mat-badge-content.mat-badge-active { + transform: none; } + +.alternate-theme .mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.alternate-theme .mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.alternate-theme .mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.alternate-theme .mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.alternate-theme .mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.alternate-theme .mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.alternate-theme .mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button, .alternate-theme .mat-icon-button, .alternate-theme .mat-stroked-button { + color: inherit; + background: transparent; } + .alternate-theme .mat-button.mat-primary, .alternate-theme .mat-icon-button.mat-primary, .alternate-theme .mat-stroked-button.mat-primary { + color: #03a9f4; } + .alternate-theme .mat-button.mat-accent, .alternate-theme .mat-icon-button.mat-accent, .alternate-theme .mat-stroked-button.mat-accent { + color: #ffee58; } + .alternate-theme .mat-button.mat-warn, .alternate-theme .mat-icon-button.mat-warn, .alternate-theme .mat-stroked-button.mat-warn { + color: #f44336; } + .alternate-theme .mat-button.mat-primary[disabled], .alternate-theme .mat-button.mat-accent[disabled], .alternate-theme .mat-button.mat-warn[disabled], .alternate-theme .mat-button[disabled][disabled], .alternate-theme .mat-icon-button.mat-primary[disabled], .alternate-theme .mat-icon-button.mat-accent[disabled], .alternate-theme .mat-icon-button.mat-warn[disabled], .alternate-theme .mat-icon-button[disabled][disabled], .alternate-theme .mat-stroked-button.mat-primary[disabled], .alternate-theme .mat-stroked-button.mat-accent[disabled], .alternate-theme .mat-stroked-button.mat-warn[disabled], .alternate-theme .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #03a9f4; } + .alternate-theme .mat-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffee58; } + .alternate-theme .mat-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .alternate-theme .mat-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-icon-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .alternate-theme .mat-button .mat-ripple-element, .alternate-theme .mat-icon-button .mat-ripple-element, .alternate-theme .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.alternate-theme .mat-button-focus-overlay { + background: black; } + +.alternate-theme .mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-flat-button, .alternate-theme .mat-raised-button, .alternate-theme .mat-fab, .alternate-theme .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + color: white; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + color: white; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + background-color: #03a9f4; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + background-color: #f44336; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-flat-button.mat-primary .mat-ripple-element, .alternate-theme .mat-raised-button.mat-primary .mat-ripple-element, .alternate-theme .mat-fab.mat-primary .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .alternate-theme .mat-flat-button.mat-accent .mat-ripple-element, .alternate-theme .mat-raised-button.mat-accent .mat-ripple-element, .alternate-theme .mat-fab.mat-accent .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .alternate-theme .mat-flat-button.mat-warn .mat-ripple-element, .alternate-theme .mat-raised-button.mat-warn .mat-ripple-element, .alternate-theme .mat-fab.mat-warn .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-stroked-button:not([class*='mat-elevation-z']), .alternate-theme .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab[disabled]:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone, +.alternate-theme .mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.alternate-theme .mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .alternate-theme .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .alternate-theme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.alternate-theme .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme [dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-checkmark { + fill: #fafafa; } + +.alternate-theme .mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .alternate-theme .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.alternate-theme .mat-checkbox-mixedmark { + background-color: #fafafa; } + +.alternate-theme .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #03a9f4; } + +.alternate-theme .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffee58; } + +.alternate-theme .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.alternate-theme .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .alternate-theme .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-background { + background: none; } } + +.alternate-theme .mat-checkbox .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #03a9f4; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffee58; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.alternate-theme .mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip::after { + background: black; } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #03a9f4; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-table { + background: white; } + +.alternate-theme .mat-table thead, .alternate-theme .mat-table tbody, .alternate-theme .mat-table tfoot, +.alternate-theme mat-header-row, .alternate-theme mat-row, .alternate-theme mat-footer-row, +.alternate-theme [mat-header-row], .alternate-theme [mat-row], .alternate-theme [mat-footer-row], +.alternate-theme .mat-table-sticky { + background: inherit; } + +.alternate-theme mat-row, .alternate-theme mat-header-row, .alternate-theme mat-footer-row, +.alternate-theme th.mat-header-cell, .alternate-theme td.mat-cell, .alternate-theme td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-cell, .alternate-theme .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-datepicker-toggle, +.alternate-theme .mat-datepicker-content .mat-calendar-next-button, +.alternate-theme .mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.alternate-theme .mat-calendar-body-selected { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(3, 169, 244, 0.4); } + +.alternate-theme .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 238, 88, 0.4); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-datepicker-toggle-active { + color: #03a9f4; } + .alternate-theme .mat-datepicker-toggle-active.mat-accent { + color: #ffee58; } + .alternate-theme .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.alternate-theme .mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.alternate-theme .mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-expansion-panel-header-description, +.alternate-theme .mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.alternate-theme .mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-label { + color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.alternate-theme .mat-focused .mat-form-field-required-marker { + color: #ffee58; } + +.alternate-theme .mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #03a9f4; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffee58; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.alternate-theme .mat-error { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #03a9f4; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffee58; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.alternate-theme .mat-icon.mat-primary { + color: #03a9f4; } + +.alternate-theme .mat-icon.mat-accent { + color: #ffee58; } + +.alternate-theme .mat-icon.mat-warn { + color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-input-element:disabled, +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-input-element { + caret-color: #03a9f4; } + .alternate-theme .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-accent .mat-input-element { + caret-color: #ffee58; } + +.alternate-theme .mat-warn .mat-input-element, +.alternate-theme .mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-list-item-disabled { + background-color: #eeeeee; } + +.alternate-theme .mat-list-option:hover, .alternate-theme .mat-list-option:focus, +.alternate-theme .mat-nav-list .mat-list-item:hover, +.alternate-theme .mat-nav-list .mat-list-item:focus, +.alternate-theme .mat-action-list .mat-list-item:hover, +.alternate-theme .mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-menu-panel { + background: white; } + .alternate-theme .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-menu-item[disabled], .alternate-theme .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-menu-item .mat-icon-no-color, +.alternate-theme .mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-menu-item:hover:not([disabled]), +.alternate-theme .mat-menu-item.cdk-program-focused:not([disabled]), +.alternate-theme .mat-menu-item.cdk-keyboard-focused:not([disabled]), +.alternate-theme .mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-paginator { + background: white; } + +.alternate-theme .mat-paginator, +.alternate-theme .mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-decrement, +.alternate-theme .mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-first, +.alternate-theme .mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-icon-button[disabled] .mat-paginator-decrement, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-increment, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-first, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-progress-bar-background { + fill: #b3e5fc; } + +.alternate-theme .mat-progress-bar-buffer { + background-color: #b3e5fc; } + +.alternate-theme .mat-progress-bar-fill::after { + background-color: #03a9f4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffee58; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.alternate-theme .mat-progress-spinner circle, .alternate-theme .mat-spinner circle { + stroke: #03a9f4; } + +.alternate-theme .mat-progress-spinner.mat-accent circle, .alternate-theme .mat-spinner.mat-accent circle { + stroke: #ffee58; } + +.alternate-theme .mat-progress-spinner.mat-warn circle, .alternate-theme .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.alternate-theme .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-primary .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-accent .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-warn .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-select-panel { + background: white; } + .alternate-theme .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #03a9f4; } + +.alternate-theme .mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffee58; } + +.alternate-theme .mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-drawer.mat-drawer-push { + background-color: white; } + .alternate-theme .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +.alternate-theme [dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + .alternate-theme [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 238, 88, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(3, 169, 244, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.alternate-theme .mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-primary .mat-slider-track-fill, +.alternate-theme .mat-primary .mat-slider-thumb, +.alternate-theme .mat-primary .mat-slider-thumb-label { + background-color: #03a9f4; } + +.alternate-theme .mat-primary .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-accent .mat-slider-track-fill, +.alternate-theme .mat-accent .mat-slider-thumb, +.alternate-theme .mat-accent .mat-slider-thumb-label { + background-color: #ffee58; } + +.alternate-theme .mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-warn .mat-slider-track-fill, +.alternate-theme .mat-warn .mat-slider-thumb, +.alternate-theme .mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.alternate-theme .mat-warn .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-slider-focus-ring { + background-color: rgba(255, 238, 88, 0.2); } + +.alternate-theme .mat-slider:hover .mat-slider-track-background, +.alternate-theme .cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-disabled .mat-slider-track-background, +.alternate-theme .mat-slider-disabled .mat-slider-track-fill, +.alternate-theme .mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.alternate-theme .mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-step-header.cdk-keyboard-focused, .alternate-theme .mat-step-header.cdk-program-focused, .alternate-theme .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-step-header:hover { + background: none; } } + +.alternate-theme .mat-step-header .mat-step-label, +.alternate-theme .mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-selected, +.alternate-theme .mat-step-header .mat-step-icon-state-done, +.alternate-theme .mat-step-header .mat-step-icon-state-edit { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.alternate-theme .mat-stepper-horizontal, .alternate-theme .mat-stepper-vertical { + background-color: white; } + +.alternate-theme .mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-horizontal-stepper-header::before, +.alternate-theme .mat-horizontal-stepper-header::after, +.alternate-theme .mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-sort-header-arrow { + color: #757575; } + +.alternate-theme .mat-tab-nav-bar, +.alternate-theme .mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group-inverted-header .mat-tab-nav-bar, +.alternate-theme .mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.alternate-theme .mat-tab-label, .alternate-theme .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-group[class*='mat-background-'] .mat-tab-header, +.alternate-theme .mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-primary { + background: #03a9f4; + color: white; } + .alternate-theme .mat-toolbar.mat-accent { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .alternate-theme .mat-toolbar .mat-form-field-underline, + .alternate-theme .mat-toolbar .mat-form-field-ripple, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .alternate-theme .mat-toolbar .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-select-value, + .alternate-theme .mat-toolbar .mat-select-arrow, + .alternate-theme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .alternate-theme .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.alternate-theme .mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.alternate-theme .mat-tree { + background: white; } + +.alternate-theme .mat-tree-node, +.alternate-theme .mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-simple-snackbar-action { + color: #ffee58; } diff --git a/coney-create/src/environments/environment.docker.prod.ts b/coney-create/src/environments/environment.docker.prod.ts new file mode 100644 index 0000000..68db38b --- /dev/null +++ b/coney-create/src/environments/environment.docker.prod.ts @@ -0,0 +1,6 @@ +export const environment = { + production: true, + baseUrl: 'https://ns3056488.ip-213-32-26.eu/v2', + privacyUrl: 'https://www.cefriel.com/en/privacy', + enterprise: true +}; \ No newline at end of file diff --git a/coney-create/src/environments/environment.docker.ts b/coney-create/src/environments/environment.docker.ts new file mode 100644 index 0000000..09f0404 --- /dev/null +++ b/coney-create/src/environments/environment.docker.ts @@ -0,0 +1,5 @@ +export const environment = { + production: false, + baseUrl: 'http://localhost:80', + enterprise: false +}; \ No newline at end of file diff --git a/coney-create/src/environments/environment.prod.ts b/coney-create/src/environments/environment.prod.ts new file mode 100644 index 0000000..9db7b9d --- /dev/null +++ b/coney-create/src/environments/environment.prod.ts @@ -0,0 +1,5 @@ +export const environment = { + production: true, + baseUrl: 'http://localhost:80', + enterprise: false +}; diff --git a/coney-create/src/environments/environment.ts b/coney-create/src/environments/environment.ts new file mode 100644 index 0000000..601300b --- /dev/null +++ b/coney-create/src/environments/environment.ts @@ -0,0 +1,19 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, + baseUrl: 'http://localhost:80', + privacyUrl: 'https://www.cefriel.com/en/privacy', + enterprise: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/coney-create/src/favicon.ico b/coney-create/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..42a72bd0431b52a09781768425262010e56efbe1 GIT binary patch literal 8120 zcmV;pA4lK-00962000000096X0HPlN02TlM0EtjeM-2)Z3IG5A4M|8uQUCw}00001 z00;yC008!TVC?_^A8AQMK~#9!?Ol1CRMnM!z1wsH&7vSKKr3i)8e9^LLd21T`JqOM zL39jZF=JQ~6GH~cL~sa`h`>yYqB21uAxeVAKnEp)felw|dEM{4fBa$Bd*|Kry?f7o45Pyk!mnHup&v>x29xn1mS81Hu@yV9 z2bDOEIy9jTCbiLj)zQCH(*M~>e^E+*xrBZ(nSNP9cPOGeh27gFu42z7aSg;MOu>9S zi%obRRbFAYAYN+mf})D*3>*~UQgW$Vk2=2jR`bs}RE$pINdfFy>>OJ)I?k*5?h&~SkFb)f`nKtQ0 z=%Pk?`ex!{9C4H9!oVKU7m#8$4Xa6Es|OdVCvH{~S0%)q3xl+Yz6*xo0j#I5t`!`q zl{i~Z91bH+T^OWP_&FF%-`6@+!vpT*AuiVuw}Xjm7X&Hz?t9~QtUyHqhMZ1nA&yrN z=e^y%AaUVmla4(H+sPhxD%BD9bLcIyT@b`8{6gG>W!Ue4EkE{=u%F)KCVC?m1d77% zf$><26X-~Eg5GF6y_pMw7{c$3Nn}~qp(9cqz1gI8t-vKw`1hhrqg%%w*HIb0r3(Vd zwm%Wu(1gxFP4uP{-Q%EL`~?_?jW~PAFjm}7?>CH#d3UodY z1UCLbSd1EUW~!kT7}UuQgFqm68g{`Y&?-#x2bDXE@G~(2rD$+v@1q7JKMxq1EY_N@2j&Gp~~?eX*6od44xh#}ogx z*x<0BuAV^h23o0(0|B4#^D!M2u5=Ztf>tZPLx8|1{{C3XD1*-lR8K3`-|-OeiT`?( zxe`r)%4p@B3xPoT_EdN4PvR(;>Q6U!rue&IfsN%F9g%8j1-m&80zUBSz0iXD9M7b-s6jC{@s1qRIbN5bg6~8nngcB?`F?aFj zU?z^b@=608rIpQL3<00nH`~?w(`XaSw#-7V;?Kw24w}-esf*%+YEuZEYv}t;Wyh={WPe9 zv$Y$AKDWA$u+V1v;{QYVZObdptWwd9V*J z>ZyBaCTZB^74V(@Q+1ert@u4ka4&W;tSxILuD*q##Gw}6YDpsYXac@OZ!Nn2LEMc@ zoP%5O8ne>k2E2~15@(sj;Xz&Y!1Xo&z*pu`re~j9iSvEFr{Q=Gr`U-96rLxJtg6oQ ziAznHuw_;$N&3S+OZB|p$GADDgY01Z97kA){|Fu_@gKlL#7Qt;J&03Hz3%EsI_c8{d=uX81`1@dst~WY}J0dQ%c@^P7RNKl?HRjM$qw#cy zE`NYYTda0dsT6-EZ7iDHZyuE5!l;XF;5;m{vA_HYdfIt0IJ%Iy)~24elC&~Y1_AH; zjL_HE?GzpeAJ-|lit#I(?9+OBQgKXvvhf3*uBu9sSZV;^Q)^50y-PWU$6RhJIpI|s zbkr7l%GFBz4A+}1QEC||sR6(=eO65ieQ&*#7CZ~L;+-^ayB>PNt^QViF|J<3xyImi z14%7;0Qg!uYwYQJ4EG5Oo{PT0gF1r-3w}4v%3w7;p^N0nd8Bpa3V^(ixYtO#tTxoi zTmOr7zQsRqjj-H9@EB>?xe`H~kEhe93Dn~$UpOipkY6K?E*Jj&8sc6nEl$!S;C+jc zI(vJz;y1yg_k0G)Bvj!oGIld1!nlTPptiK|(nfc_M)Jf=;$%B<^i6@E-o(Au%!L|~ zUg7}oP4ifz^9^b-ORxZn=qqob>lLXomQ8|4Pl)IM-8oyTd~Wda^R(a@$i@$KmrSg& zrjjHMfN^@Kc~syl!h-)3{u(gHE|&TPo=C$nP>;uPuH-W52Lj$xiO7&9DyNwGEHp*wy-8upnNQ1ohuvy8C+e+k}% zX4+_lD-#32M7<@St@vL-!1;J2DB8XkcT0@2Jlvn+a;2lB{pU#x&%22OKQ$6(`NDDa zOWpa4XGx0j1Hh-lXwLgTBk=)VgqMT9?l#&ZJ}>z)2jKT9w82~GZUZDw`8++nEohfm zj|(LJz%#n{fNco`h`rq3t9y>$r?_2M^lR~c*xCG~f6zvVX8v{TPZ=Nk>29LM(TAQK zs%yL_@mb!ke>h4LNiseF_`ZMbEuPCIX4gH!=6(oMB-;6TSe_#MHqo8VlUN&5=*gjU zgt!yU(sF30vN-nuFXxl=4{_ZfX!$w#PeCm)?en3M4ftUVqPz1}qTVy_ZDDO8G$gm3|q!Q}F%ElF`OQNc-F@ zn60_=77U75>PVt$0Pu2Mh_(88K8bG&s@LZu#HE_BLZS-x!m=dwfF?XGiADCIr^)a8 zuAsGKVj8^(16oT`Re^vnula<2j;nE-u=HOQ6fZx0LYjKG8zzJPJ~>a^KHMs~>-dPy z=7S-{D}Fnmngak%Sb6m-0LZ2fhXL)ymxQlrDvn3A)mKX*b$#hy6F-4l>DPUQd-kJ$ zjpSoEMz%rtu5|;KCMwHJV@c)vACf{7Iw>QtL=s$ytePCcUBcpLVloaV%)w#$wRp$7 zBJM)wQ9DcUOb*36JOHqtBpYiF@NztdM*)5r28JzV0TxC%(_8SIusel8p`kp95$+4}Le|BB2Q6si+R#{dC@D2wM2O1PvOqFLSPN z{@)&Tdu$;Ny9&pC-I!hf7xULnx=N?!U^=odT{rhvpa{0ouf+KO zh?wb-FA5n7dI7bND&Pc$jJwd+; zSLe>bLos7}FAEXDZnWxb08nAIGKiJ{-oga{PYLM-n{B{TsUpTFN73~feHbNO57<3t~XZ3c?h)NS&24rC#qup z@^!&>$;0D(005G37exI2hw*S)SpaxU0Kg@9L&16b3qcPz4}tjHu_rNI@BnlrLB@70 zZJ z04z_y3a}1=pIgcBA?~1uSOiwji_5K&Xy78HbGVImie7>j?Sq+#k zcoTcmfusVTCOj(W9|QS~Rj3au81wSEkQP14i7I!8Vx3Jbz9)ooE>-X&nzTi*A+qRhYGvM) z_?iSfpYj7hRZw=2ui&PU8;{2^N!W^2zv5;*A)LiUq@l+?$J^+yiUi%`3B|UL;_i`w z$r1AyHBzHh#MBOe#r$}zBh5SfJpG(&>IbRT#^Bm>n+$ZTRGEO1bS!G#BA=g(Fs|)0ieSznYt53|t3I72w zmgn@}KMS3=GI75mtDi}XITd|;x8xN62Hj0f^}Ju$Juc^x6D%@2)_Vwextzt5$KALg zVS}s=KNK{G%N5+gZwsJ{UX2iHw}{5)4JoKkOcTxW10WmAd2)D^RMiZjMU8UG^*=BRnetF03J zkn1uoWmYmeX;!|NTu$L>s9GQ$n{Z_Rt&nMcmMiGLVz`1DB~2*?)14CYJg8<7Xmhko zu>dfiFOO&N?}9Gh8^2b{3fL(`1at7?7{^Dw#QQje?i8C^iK||c=;awOruilSa`7x* z4$WolDJ<*#O0ziLv+|!qf;vBlVbImlUxWvdt_*8T7s-S8T>(11u!`ZB>mYg-xuy-U zi8GHo$nXo_SVt-)dG8jw_GMyb3^!6OW(cmF;YybL2UcV5Fq3r$SkopHnGG-A=geab zCP-@ZUsTYo_ek;y?u!Y4f0OtRW9Q1Xk%8GaN>^j1^gjAAO9q#zWlIFTJR9FvI0W_z z<=q*WiqFtQ_mp2vI7)g^H~?-8>IWS80QkOe02JWA`Nh~nsR|`#$Ft+SxqMxcFXfkH6;8)7#=vBr;p%oeDCrp76Dwkt zG4GZLC6jdCyeL<$q$lvTF+)f##7$30cd$d;0Z@m@1|H;65FYsucvL77%fvTgp06KB zzUD-(t7EF1)x=GvP!RSg_XEI0?t=y$vFvH9;LJh>B)JL@Bby zlJEbUPWt}oq%@qwZ7ZFw10?~Tucl}~Ts*WJw@Cs=1Bt^{CoL%)1psr~oheibSpC55 z-N@STykwYU4rcHz1BnQLHYc&`!JCpHk@2;GObs6|NhTBxCGI@Vl7E|nlt7D)NQyo$ zS4`YaCA}ro5Sm4#M;!M3n@V7vvpBAl43qn3g`AyK(_VUNI3Kq;#j6%#1|D}7$Kq&4 zv;UXM0d@RfsyG_*LZr>Eu!&8%N@8UQLC5)5iL1b-!T z;w-{1HJD!JXzL0f-$+l+6()<9Itu_x98eh2PAym}*Z}&Pu*e$N zbR`a3oFjg3VaR0X_yX%B?IMa5N4cbf#KiM#;?O~^Rc~q780RRihjF)H0}PLIAY3Zx z1EKmbgE&0w8~}KWLra{K!SInJ1@jJ#6*x8YbTLi!Bj*6XTOQ85K}0Z>3B_Jnn5D7H zZ7n@LODH5Oa}EH!4I-GghzVA@#8Qs}{6b?1Rx>@lKxkq0JLjZWcw5A9nMQ(+~}*Ai?yOP_L9pT%L9c0OqrA6d6pP z;#NWB8XX}Oqyg_?N7(hA^4K`_-|i(2!g;!tt=aa8XjD>NQeeUQBpzd z1Av(p(#wfyA&c1$j}9i;6u?WOq=MK705dJ*l7uG>Y9nEI^bp=z0f!}11FnlQN!(5V ze26a!cEDZS(?WvB#~YSUg>`T9kA&e5(NjU}@&sCcFM@3Z_q34BrvJ(a0)T;qocY}* zw2L-VK_WL}Jc2nGg&TveQTUN!^M<4Jm*Kyi6Q%I`j3g~&FmcS976yI)hJUnnJy&kq z@LNeL$m3Chn9cNE9wZyR{W?hhq89Xw_qWZ&NrBL_Rvckfep&!Z$6Xl_YJ*0Khgu{9RnBoC>0YWN9H+@=Xh=vS!>G0t5=M zo+rl}C6)LOF$%fL(n2mKu9?z$Q)e|K05I?X$1Z2Bct%JC>6TPikVfpquCQxw61lvs zlA-fO#5Kzk)k9J?A^~8S;$(K4zpr`1_Z2x6M1_uE2EA(NH6y7OZ(>?V4sp#gEu`8? zU@)W*=)y6Kbu6w_5EZJCw3@pusS-0;TF7KZT1pVDGiUG_5ddIX0_?(A`=nh#4kZPE z+a+TjlL5dXE4w1BTL{CnkQRvr5CVX~jI67OR(1xx#VJ+*I7J*~F!odgS*(L20>H42 zt`*#LmUR+8+rp&$Y^eu8BXJb&tGs|XXQxxIFx4p|3INQNU=_-4#uI|4y%$y|FoojD_*M(n35W+34aAWCt;7cK0E!OE|a3P5{XAh_2_A7P3Di z3n&T%vayU0*IRLET&Wp;?- zeJVJ23)xH(RRw?#0+TrGUhha!L6`{%izF>XbArXj zxb%Mk0^@YHy>wc^1;YZC(?StgoB$}m8hzZqBAltLd}|VG>rugPc`?0(Mp|PfQy57= zV5F{w{B8KPwR?pOhyPk1)uL$)vS-77|s)B@0;JZRnh&Cm#)N)H2DT2TV9b@MIPiPQt;B$DH zX$!U%67>*)->dNt9n4gc#8M-E!*77kv;Qco#+`yEFbiYwI>T-@^~BW};rq{^H_%XS z*-FyNOc?-t5a@#~_S@BqgfuHNW$_yP6kAb2Ft28CRT3v#iKAck&_z-aqD0^5b6OMlMVAbbh8VH|_&HsWNE1gKWzLc>g>8Y?r!NI3wqXk)SY_&tdS zagKCpop9x2j{VbkT1ZM+DF;9xK)k{Jc))dz1;F(>x`uB^DEO-kfots!Zk@$5LPWqB z*Tq<2e>A;Ezo1oE-e?)R#~!$OHT z@2ejj#2OqYOD*4d8p->1{q0W|J%T66%*u6y@Uw9>o=U3YP=Zuu1tQW+KJBK${@v|O zd>h3QTbq~g2jV_5!!=aZR9NN7hAjXvFxCDsQ*Ahmm+=6;h`zMbWeGk)eOCr?lTTcI z5#Pgl;!;EKr5*03jrI& zKR@kZpSU5=1q)mV*d+c1Rt6d)@6yxrsmMAeif_gK1X%=Ca!SCFKDZ*oawrT(&YA;$-?kca1Bjx9mHvH`cBa9_K7P-Q0~esg;cK5=bvz-&@7ZgCLNP>F!Yw$JRgH-yp3+5d4+J z8<@8D;Y2O8O4oKE;fFw=H|FW;JL(Xsp%v=g;lv*Vfh>&17N!#)bW%xHg~sSZi- zx0}*ZJI$ObX;u1kVBv>AAQK}{s-ycTQ)-~q7~$_U-{C1R{AZe;9>nZu7p+A1P9ppe z2$*fC7k6@{u!dG3Fn7LFQ9vmii8VT>l4zvU^yVWww9=;tf&z@g#!i+_dY0aJoHfm( zlL|lVFzA7a*rt0UGH2HK`;rMJ7{Wo z9lhBkSNJN&!Fa4?JQpGnIzewV-re@qK~RXBunhZkHr`1QdFU;c(c2Wd!jBgO*%*R3 z*zVv1p^mtpLvNAo3O`X0m|DT@Sb++M1(I8c;}yhtP?KYq5{E$!24fo5q1pjQf`_AAIgoYW9LI7={P19#u@k$*siMdg5?c@c0myQVoLwl+gFJ8haRJ8P*dwtBI=; zzi-bKeY#=Vm($hB+7vqSVJXiGg!@vwG55YZHj7|8&#uAiTdfFy> z>OJ)I?!o-HqzedLQH-&eh2_|a12~z6lC);J>jAp^a(c>GdRkXk@cdw4`VNXP5Th^! z^YJWwrSH=weVpv^mIMsBI{IZ5-C+~mX+GU?6y3Qfd|-h~T%lkfm&DbN6tgjyj0dp< zD^W^c@J>?LD!rg+^7VFaqyI96T}l6EC;de!{pAw+#bo+r3EiPc997bB=>GxRv`r9^ S1^^iV0000 + + + + Coney Create + + + + + + + + + + diff --git a/coney-create/src/karma.conf.js b/coney-create/src/karma.conf.js new file mode 100644 index 0000000..ea23870 --- /dev/null +++ b/coney-create/src/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage/coney-create'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/coney-create/src/main.ts b/coney-create/src/main.ts new file mode 100644 index 0000000..ed0cc41 --- /dev/null +++ b/coney-create/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import 'hammerjs'; +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/coney-create/src/polyfills.ts b/coney-create/src/polyfills.ts new file mode 100644 index 0000000..fa46c8c --- /dev/null +++ b/coney-create/src/polyfills.ts @@ -0,0 +1,44 @@ +/** IE10 and IE11 requires the following +import 'core-js/es6/symbol'; +import 'core-js/es6/object'; +import 'core-js/es6/function'; +import 'core-js/es6/parse-int'; +import 'core-js/es6/parse-float'; +import 'core-js/es6/number'; +import 'core-js/es6/math'; +import 'core-js/es6/string'; +import 'core-js/es6/date'; +import 'core-js/es6/array'; +import 'core-js/es6/regexp'; +import 'core-js/es6/map'; +import 'core-js/es6/weak-map'; +import 'core-js/es6/set'; +*/ +//Evergreen browsers +//import 'core-js/es6/reflect'; + +import 'babel-polyfill'; + +import 'core-js/es/reflect'; + + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +//import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. +(window as any).__zone_symbol__UNPATCHED_EVENTS = ['pointermove', 'mousemove']; // disable patch specified eventNames + */ + + +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/coney-create/src/styles-mobile.css b/coney-create/src/styles-mobile.css new file mode 100644 index 0000000..c7ec98d --- /dev/null +++ b/coney-create/src/styles-mobile.css @@ -0,0 +1,43 @@ +@media only screen and (max-width: 768px){ + .topBarImg { + height: 20px!important; + } + + + .hideOnMobile{ + display: none!important; + } + + #commandsUl{ + display: flex; + justify-content: space-around; + } + + #commands-container { + position: fixed; + left: 0px; + justify-content: space-around; + right: 0px; + bottom: 0px; + } + + #statusVBarMobile{ + height: 4px; + border-radius: 20px; + color: transparent; + margin-left: 4px!important; + margin-right: 4px!important; + display: flex!important; + width: 100%; + } + + .fullWidthOnMobile{ + width: 100%; + padding-left: 1rem!important + } + + .minimap{ + display: none; + } + +} \ No newline at end of file diff --git a/coney-create/src/styles-rete.css b/coney-create/src/styles-rete.css new file mode 100644 index 0000000..154a8dd --- /dev/null +++ b/coney-create/src/styles-rete.css @@ -0,0 +1,264 @@ +/*NODE*/ +.node { + border: 2px solid transparent; + border-radius: 4px; + cursor: pointer; + min-width: 180px; + max-width: 260px; + height: auto; + padding-bottom: 6px; + box-sizing: content-box; + position: relative; + user-select: text!important; + box-shadow: 5px 5px 2px 0 rgba(60,64,67,.08),5px 5px 3px 1px rgba(60,64,67,.16); +} +.title { + color: #202124!important; + text-align: center; + font-family: inherit; + font-size: 18px; + padding: 8px; + margin: 1px 1px 10px 1px; + border-radius: 4px; + background: rgba(255, 255, 255, 0.5); +} +.output { + text-align: right; +} +.input{ + text-align: left; +} + +.customInput{ + border-radius: 4px!important; + height: 32px!important; + position: relative; + flex: 1 1 auto; + width: 1%; + border: 1px solid #a9a9a9; +} + + + +.input-title, .output-title{ + vertical-align: middle; + display: inline-block; + font-family: inherit; + font-size: 14px; + line-height: 24px; + vertical-align: middle; +} +.socket.output.questionanswer{ + background-color: #dcedc8!important; +} +.socket.input.questionanswer{ +background-color: #ffecb3!important; +} + +.socket:hover{ +border: 4px solid #FFF!important; +} + +.socket.input.talk{ +background: linear-gradient(0deg, #dcedc8 50%, #b3e5fc 50%)!important; +} + +.socket.output.talk{ +background: linear-gradient(0deg, #ffecb3 50%, #b3e5fc 50%)!important; +} + + +textarea { + overflow-y: scroll; + /* Firefox: scrollbar-width: none; */ + /* IE 10+ : -ms-overflow-style: none;*/ +} +/* textarea::-webkit-scrollbar { + width: 0; + height: 0; +}*/ +.input-control { + z-index: 1; + width: calc(100% - 36px); + vertical-align: middle; + display: inline-block; +} +.control{ + padding: 6px 18px; + display: block!important; +} + +.answerNode{ +background: #dcedc8; +} +.questionNode{ +background: #ffecb3; +} +.talkNode{ +background: #b3e5fc; +} + +.selected{ +border-color: #7c7c7c; +} +.wrapper{ + width: 100%; + height: 100%; +} + +#pointsFieldInputGr{ + width: auto; + width: -moz-fit-content; + width: -webkit-fit-content; + position: fixed; + right: 20px; + width: 60px; +} + +.context-menu{ +color: #202124!important; +border-color: #FFF!important; +background-color: #FFF!important; +border-radius: 4px!important; +margin:2px!important; +text-align: center!important; +width: 200px!important; +padding: 10px!important; +justify-content: center; +text-align: center; +box-shadow: 0 3px 3px 0 rgba(60,64,67,.08), 0 1px 3px 1px rgba(60,64,67,.16)!important; + +} + +.item{ +background-color: transparent!important; +border:0px solid transparent!important; +color: #202124!important; +padding: 2px!important; +border-radius: 4px!important; +text-align: center!important; +} + + +.item:hover{ +background-color:lightblue!important; +} + + + +#results > span{ + color: #686868; + background-color: white; + border-color: white; + display: inline-block; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 2px 12px; + margin: 0px; + font-size: 0.7rem; + border-radius: 4px; + box-shadow: 0 1px 1px 0 rgba(0,0,0,.14); + text-transform: uppercase; + font-weight: 600; +} + +#tags > span{ + color: #fff; + background-color: #009688; + border-color: #009688; + display: inline-block; + text-align: center; + white-space: nowrap; + vertical-align: middle; + user-select: none; + border: 1px solid transparent; + padding-left: 5px; + padding-right: 5px; + padding-top: 2px; + padding-bottom: 2px; + margin: 5px; + font-size: 1rem; + border-radius: 4px; + box-shadow: 0 1px 1px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); +} + +#results > span:hover{ + opacity:0.7; + background-color: #fd6257; + color: white; +} +#results > span:after{ + position:absolute; +} + +#tagsIn{ + position: fixed; + box-shadow: 3px 3px 3px 0 rgba(60,64,67,.08); + bottom: 12px; + right: 20px; + color: #686868; + font-size: 0.7rem; + background: white; + border-radius: 4px; + padding: 2px 10px; +} + +.tag-btn{ + border: none; + cursor: pointer; +} + +#aboutToBeAddedTag:hover{ + background-color: #f57e76; + border-color: #f57e76; +} + + + + +.checkboxInput{ + border-radius: 4px!important; + border: 1px solid #a9a9a9; + height: 65px!important; + width: 100%!important; +} + +#noneCheckbox{ + height: 16px; + width: 16px; + vertical-align: middle; + position: absolute; + z-index: 2; + top: 9px; + left: 10px; + background-color: white; + border: 2px solid white; + background: white; +} + +.add-checkbox{ + color:#464646; + border-radius: 4px; + background: white; + border: none; + box-shadow: 3px 3px 3px 0 rgba(60,64,67,.08); + cursor: pointer; +} + +.del-cb-line-btn{ + position: absolute; + right: 18px; + top: 0px; + font-size: 10px; + border: none; + padding: 2px 5px; + background: transparent; + color: darkred; + cursor: pointer; +} \ No newline at end of file diff --git a/coney-create/src/styles.css b/coney-create/src/styles.css new file mode 100644 index 0000000..961e042 --- /dev/null +++ b/coney-create/src/styles.css @@ -0,0 +1,374 @@ +@import url("coney-theme.css"); +@import url("styles-rete.css"); +@import url("styles-mobile.css"); + +html, body { + display: block; + height: 100%; + margin: 0; + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; +} + +body{ + background: url(./assets/pattern.png); +} +app-root{ + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; +} + +.mat-button, .mat-select, .mat-option, .mat-input, .mat-form-field{ + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important; +} + +textarea{ + resize: none!important; +} + +/*TOOLS (sninner, minimap..)*/ +#loadingSpinner{ + position: absolute; + top: 30%; + left: 50%; + z-index: 5; +} + +.example-radio-group { + display: flex; + flex-direction: column; + margin: 15px 0; +} + +.example-radio-button { + margin: 5px; +} + +.statusSquare{ + color: white; + height: 3px; + margin: 5px 0px 5px 0px; + border-radius: 4px; +} + +.minimap.middle{ + height: 150px!important; + border-radius: 4px!important; + border: 0px solid #ccc!important; + background: rgba(255, 255, 255, 1)!important; + box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12); +} +.minimap.middle:hover{ + background: rgba(245, 245, 245, 0.9)!important; +} + +.minimap .mini-viewport{ + border-radius: 4px!important; +} +.minimap .mini-node{ + border-radius: 4px!important; + background: rgba(170, 170, 170, 0.8)!important; +} + +.mat-dialog-container{ + border-radius: 4px!important; +} +.mat-select-panel{ + margin-top: 1rem!important; +} + +/*NAVBAR*/ +.navbar-collapse.collapse { + display: block!important; + flex-basis: auto!important; +} + +.navbar-nav>li, .navbar-nav { + float: left !important; +} + +.navbar-nav.navbar-right:last-child { + margin-right: -15px !important; +} + +.navbar-right { + float: right!important; +} + +#nav-right{ + width: fit-content; + float: right; +} +.navbar-nav{ + flex-direction: row!important; +} + + + +.row{ + margin-left:0px!important; + margin-right:0px!important; +} +p{ + margin: 0px 5px; +} + +.btn:disabled:hover{ + cursor:not-allowed!important; +} + +.row.buttons{ + justify-content: center; + margin-top: -12px; +} + +.topBarImg{ + height:19px; +} + +.wrapper{ + height: 100vh!important; + position: fixed; + top: 0px; +} +.rete{ + position: fixed!important; +} + +.bg-light { + background-color: white!important; +} + +.node-editor{ + height: 100%!important; + background: #fcfcfcad!important; +} +#bottom_panel{ + margin: 0px!important; + width: 400px; + left: 35%; + padding: 16px; + position: fixed; + background: #f5f5f5!important; + border-radius: 4px; + box-shadow: 5px 5px 5px 5px rgba(0,0,0,.14); + bottom: 30px; +} +#preview_float_div{ + position: fixed; + bottom: 90px; + right: 20px; +} +#template_float_div{ + position: fixed; + bottom: 170px; + right: 20px; +} + +#prev_float{ + width: 60px; + height: 60px; +} + +#logoutBtn:hover{ + background-color: transparent!important; +} +#logoutBtn > .mat-button-focus-overlay{ + background-color: transparent!important;; +} + +#resetBtn{ + z-index: 6; + position: fixed; + bottom: 180px; + right: 25px; + background-color: white; + transition: all .3s linear; +} + +.node.selected.errorNode{ + border: 4px solid #fd594d!important; +} + +.gray-italic{ + font-style: italic!important; + color: gray!important; +} + +.mat-option-text { + font-size: 15px!important; +} + +#start-rating{ + outline: none!important; +} +.columns:not(.is-desktop){ + background-color: black; +} + +.cdk-overlay-container .mat-dialog-container { + border-radius: 8px; + background-color: whitesmoke; + height: fit-content; +} + +.cdk-overlay-container .message-body { + border-style: none; +} + +.menu{ + background-color: white!important; + border-style: solid!important; + border-width: 4px 4px 0px 4px!important; + border-color: transparent!important; +} + +.row{ + width: 100%!important; +} + +.radio-addQ{ + padding: 10px; + background: rgb(176, 196, 222); + margin: 3px; + border-radius: 4px; + padding-right: 25px; + text-transform: uppercase; +} + +.btn-success{ + color: #fff!important; + background-color: #16c98d!important; + border-color:#16c98d!important; +} +.btn-info{ + color: #fff!important; + background-color: #288ad6!important; + border-color: #288ad6!important; +} +.btn-warning{ + color: black!important; + background-color: #feef6d!important; + border-color: #feef6d!important; +} + +.btn-danger{ + color: #fff!important; + background-color: #fa5e5b!important; + border-color: #fa5e5b!important; +} + +.btn-success:hover{ + background-color: #16c98dcb!important; + border-color:#16c98dcb!important; +} +.btn-info:hover{ + background-color: #288bd6cb!important; + border-color: #288ad6cb!important; +} +.btn-warning:hover{ + background-color: #feef6dcb!important; + border-color: #feef6dcb!important; +} + +.btn-danger:hover{ + background-color: #fa5e5bcb!important; + border-color: #fa5e5bcb!important; +} + +.radio-addQ:hover{ + background: rgb(152, 181, 219); + cursor: pointer; +} + +.radio-addQ > input{ + visibility: hidden!important; +} + +.preview{ + margin: 0px!important; +} + +#print{ + float: right; +} + +.form-control{ + line-height: 1.15!important; +} + +.add-template-label{ + width:100%; + font-size: 13px; + text-align: left; + padding-left: 2px; +} + +.add-template-pos-left{ + position: absolute; + z-index: 1; + top: 6px; + left: 6px; + color: #7c7c7c; +} + +.tagListBtn{ + color: #686868; + background-color: white!important; + border-color: 1px solid lightblue; + text-transform: lowercase!important; + padding: 0px 10px!important; + line-height: 20px!important; + margin: 3px!important; + font-size: 0.8rem; +} +.tagListBtn:hover{ + background: whitesmoke!important; +} + +button{ + border: none; + background: transparent; + cursor: pointer; + text-transform: uppercase; +} + +button:hover{ + background: #70707030; +} + +.mat-checkbox-label{ + white-space: initial!important; +} + +.pr-sc{ + color: gray; + margin-top: -1rem; + margin-bottom: -10px; + font-size: 13px; + text-transform: lowercase; +} + +#statusVBarMobile{ + display: none; +} + +.vertically-centered{ + flex-direction: column; + justify-content: center; + display: flex; +} + +.span-square{ + border-radius: 4px; + padding: 0px 0.3rem; + padding-bottom: 0.15rem; + border: 2px solid gray; + background-color: rgb(255, 255, 255); +} + +.order-square{ + color: white; + background: gray; + padding: 0px 4px; + border-radius: 4px; + padding-bottom: 0.12rem; +} \ No newline at end of file diff --git a/coney-create/src/test.ts b/coney-create/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/coney-create/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/coney-create/src/theme.scss b/coney-create/src/theme.scss new file mode 100644 index 0000000..be28f7a --- /dev/null +++ b/coney-create/src/theme.scss @@ -0,0 +1,18 @@ +@import '~@angular/material/theming'; +@include mat-core(); +$coney-create-primary: mat-palette($mat-cyan, 700, 800); +$coney-create-accent: mat-palette($mat-amber, 500, 900, A200); +$coney-create-warn: mat-palette($mat-red); +$coney-create-theme: mat-light-theme($coney-create-primary, $coney-create-accent, $coney-create-warn); +$custom-typography: mat-typography-config( + $font-family: "Segoe UI" +); +@include mat-core($custom-typography); + +@include angular-material-theme($coney-create-theme); +.alternate-theme { + $alternate-primary: mat-palette($mat-light-blue); + $alternate-accent: mat-palette($mat-yellow, 400); + $alternate-theme: mat-light-theme($alternate-primary, $alternate-accent); + @include angular-material-theme($alternate-theme); +} \ No newline at end of file diff --git a/coney-create/src/tsconfig.app.json b/coney-create/src/tsconfig.app.json new file mode 100644 index 0000000..190fd30 --- /dev/null +++ b/coney-create/src/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/coney-create/src/tsconfig.spec.json b/coney-create/src/tsconfig.spec.json new file mode 100644 index 0000000..de77336 --- /dev/null +++ b/coney-create/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/coney-create/src/tslint.json b/coney-create/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/coney-create/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/coney-create/tsconfig.json b/coney-create/tsconfig.json new file mode 100644 index 0000000..d7601a1 --- /dev/null +++ b/coney-create/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "es2015", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "importHelpers": true, + "target": "es5", + "allowJs": true, + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/coney-create/tslint.json b/coney-create/tslint.json new file mode 100644 index 0000000..dc3a255 --- /dev/null +++ b/coney-create/tslint.json @@ -0,0 +1,131 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} \ No newline at end of file diff --git a/coney-inspect b/coney-inspect deleted file mode 160000 index 0329f20..0000000 --- a/coney-inspect +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0329f207162d6736121186eedab8fc7ba4a9cdd6 diff --git a/coney-inspect/.dockerignore b/coney-inspect/.dockerignore new file mode 100644 index 0000000..0945208 --- /dev/null +++ b/coney-inspect/.dockerignore @@ -0,0 +1,5 @@ +node_modules/* +dist/* +.git +.gitignore +package-lock.json \ No newline at end of file diff --git a/coney-inspect/.editorconfig b/coney-inspect/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/coney-inspect/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/coney-inspect/.gitignore b/coney-inspect/.gitignore new file mode 100644 index 0000000..f4f46a5 --- /dev/null +++ b/coney-inspect/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/coney-inspect/Dockerfile b/coney-inspect/Dockerfile new file mode 100644 index 0000000..346de17 --- /dev/null +++ b/coney-inspect/Dockerfile @@ -0,0 +1,32 @@ +# BUILD +FROM node:10.16.0 as build + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install and cache app dependencies +COPY package.json /app/package.json + +RUN npm install + +# add app +COPY . /app + +# generate build + +RUN ng build --configuration=docker --base-href=$BASE_HREF --output-path=dist + +# DEPLOY +FROM nginx:1.16.0-alpine + +# copy artifact build from the 'build environment' +COPY --from=build /app/dist /usr/share/nginx/html/ + +# expose port 80 +EXPOSE 80 + +# run nginx +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/coney-inspect/LICENSE b/coney-inspect/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/coney-inspect/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/coney-inspect/README.md b/coney-inspect/README.md new file mode 100644 index 0000000..b9e06d8 --- /dev/null +++ b/coney-inspect/README.md @@ -0,0 +1,19 @@ +# Coney Inspect + +The Coney Inspect component offers a set of pre-defined visualizations to inspect the results of your survey. Coney Inspect is one of the components of the [Coney](https://github.com/cefriel/coney) toolkit for conversational surveys. + +### License + +_Copyright 2020 Cefriel._ + +Licensed 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. diff --git a/coney-inspect/angular.json b/coney-inspect/angular.json new file mode 100644 index 0000000..6dbb98b --- /dev/null +++ b/coney-inspect/angular.json @@ -0,0 +1,190 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "coney-inspect": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/coney-inspect", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.css" + ], + "scripts": [], + "es5BrowserSupport": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "docker":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.docker.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + }, + "upm":{ + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.upm.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "coney-inspect:build" + }, + "configurations": { + "production": { + "browserTarget": "coney-inspect:build:production" + }, + "docker": { + "browserTarget": "coney-inspect:build:docker" + }, + "upm": { + "browserTarget": "coney-inspect:build:upm" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "coney-inspect:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.css" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "coney-inspect-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "coney-inspect:serve" + }, + "configurations": { + "production": { + "devServerTarget": "coney-inspect:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "coney-inspect" +} \ No newline at end of file diff --git a/coney-inspect/e2e/protractor.conf.js b/coney-inspect/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/coney-inspect/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/coney-inspect/e2e/src/app.e2e-spec.ts b/coney-inspect/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..7352ec3 --- /dev/null +++ b/coney-inspect/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to coney-inspect!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/coney-inspect/e2e/src/app.po.ts b/coney-inspect/e2e/src/app.po.ts new file mode 100644 index 0000000..5776aa9 --- /dev/null +++ b/coney-inspect/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/coney-inspect/e2e/tsconfig.e2e.json b/coney-inspect/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a6dd622 --- /dev/null +++ b/coney-inspect/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/coney-inspect/package-lock.json b/coney-inspect/package-lock.json new file mode 100644 index 0000000..ac84ced --- /dev/null +++ b/coney-inspect/package-lock.json @@ -0,0 +1,10810 @@ +{ + "name": "coney-inspect", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.800.6.tgz", + "integrity": "sha512-b6WPGN8PReRizeTe5sR3XS2sqTqfCeFIDXI4sPy3T3XdmO1dB/UP8trsHXifuNTNSVIID4X0hDwXuz36Lk+4Jw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/build-optimizer": "0.800.6", + "@angular-devkit/build-webpack": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@ngtools/webpack": "8.0.6", + "ajv": "6.10.0", + "autoprefixer": "9.5.1", + "browserslist": "4.5.5", + "caniuse-lite": "1.0.30000974", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", + "file-loader": "3.0.1", + "glob": "7.1.3", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.1.1", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.6.0", + "minimatch": "3.0.4", + "open": "6.2.0", + "parse5": "4.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "1.0.0", + "rxjs": "6.4.0", + "sass": "1.19.0", + "sass-loader": "7.1.0", + "semver": "6.0.0", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.12", + "speed-measure-webpack-plugin": "1.3.1", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.3", + "tree-kill": "1.2.1", + "webpack": "4.30.0", + "webpack-dev-middleware": "3.6.2", + "webpack-dev-server": "3.3.1", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.800.6.tgz", + "integrity": "sha512-f8u9c5VA+bxbYREKX6EY8QsbIT8ziDRHlhJ1n6H2nUTaQi+THtbPfrDsf3S3aVACfkkY+LEGGl135XEPr5PoxA==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.4.4", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "typescript": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.800.6.tgz", + "integrity": "sha512-FwNGa99dxL9dACv/eLTP6u50tlPLG01yqp/JFAgxS0OmDkEMjSBLNgS8b8qhTo8XMhMsMWzb8yIUwV1PcSj6qg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0", + "webpack-merge": "4.2.1" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.0.6.tgz", + "integrity": "sha512-FGPcVKxNvtdFB0A6oHyxtWeugL83nW+kPATlAimgh1hu7TCP94dDpflCV9o/lgZlH817xTYXrhToXJaMZSnDPw==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.1.1.tgz", + "integrity": "sha512-9P9Yyf2/IUMs0MR4CfthBaMdizbTh8dDSLJHhMw1PjxPQ3c6mn74uY46NyxcJnCxII9oA2pnnV/O+10JFUFKMw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.0.2.tgz", + "integrity": "sha512-Tv9M0vuTp7Ogk7mRiEpzBG9x5289FXe+WH0VKqN4zTzF/taTgGEuJBLDcFrwQMW0mFpGP7acVOiopgH+nClytg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + }, + "dependencies": { + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "optional": true + } + } + }, + "@angular/cli": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.0.6.tgz", + "integrity": "sha512-COBpeoXyLt8FiOhsmoEnDfQcm0aTdUSUHsH3zNkVTcyxpRzZVspTDGzxhK0UsCpddXS/MMjJiXph6SJ1el3qaQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.800.6", + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@schematics/angular": "8.0.6", + "@schematics/update": "0.800.6", + "@yarnpkg/lockfile": "1.1.0", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.3.1", + "npm-package-arg": "6.1.0", + "open": "6.2.0", + "pacote": "9.5.0", + "read-package-tree": "5.2.2", + "semver": "6.0.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.800.6.tgz", + "integrity": "sha512-946ceRci/1yx09g8iRvULLoVihcB2RW9nhpCCMum4L9wheip8t4FWso3pd3JtPQGJV9dmsnwPzR9s12bncmj3g==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@angular/common": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.1.1.tgz", + "integrity": "sha512-kgLtexfPhAyNFlwJHKBkpwKyt/19pfULIJWJpUahFqXdYE3LkRNMJQqgfz7DCNpAQxG7B6u4ocq1j2Hx206kxw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.1.1.tgz", + "integrity": "sha512-wz8Mc45EGax5RKRYYqgXI8lr1d0w+f9BDbHui7b3hQtKM5Mj1QxLXiSOYX0dt3lG4VzrxpO0Xku5tS3D4T1xxQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.1.1.tgz", + "integrity": "sha512-nGN+AqNgi4qsh+4c2Tmtg7/v/mG62sDkjPttra1pUPI6cJS9Y4bA+PBEIW1UsR5OcD85qvNK4vliw2YdLtaeuw==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "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" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.1.1.tgz", + "integrity": "sha512-B6x8IZeu0Qm2H13leEcNzsx0pGKHMvowziurvDnm7W97MaVrYrgbelNsnly4wNX91FzdBtSVXqbe3jijAD9kjA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.1.1.tgz", + "integrity": "sha512-jz05UIiIY2Zz/nEveL4Pm9mVCAd5O6JwVDWTHKQ64nKYIN9Nepzgb0ASeOBEZA4qP82KTGJtUm2AN4L7fXN6Pw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.1.1.tgz", + "integrity": "sha512-72ILJBDGhmXUsufxjDT1dzt0oOV7EHWUePgk4xv2s9/gg/xeB0XEDv+AH4LNcYKrbUWyZj7/z7wPzJe+K5PfKQ==", + "dev": true + }, + "@angular/material": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.0.2.tgz", + "integrity": "sha512-Q6YxX7zLsfI1kv0dSJSENSyCuwq7GdHjHzOGeogGfjQRvX3N/ty/z8YfwhQFzZ3XtIysbhuGcpAUWazgWeIKgw==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/platform-browser": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.1.1.tgz", + "integrity": "sha512-uP9UIhi9NYTEbfvNj4misBspXkItFopA2pRk083AhHEhOKs79WvMI15w5H5ziIFeH+4UiCvyKrSnPfcjP+Yrvg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.1.1.tgz", + "integrity": "sha512-yUazvP4IBNgXjbzo+NKmu7lVYrrplAN3HSkgYszXwd9uvWLtk1CtXER5hSJE5ZE3Lawoh7PU5hOfMYbqtdAbwg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.1.1.tgz", + "integrity": "sha512-UTL/TjokRUd3hdePBrj1ITmBGq+EcVNz3D18lFi96461ZLQeXSbbf3vjQfL6SE53E4+hfKKR7/tOqQOgb5br7A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@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/generator": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz", + "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==", + "dev": true, + "requires": { + "@babel/types": "^7.5.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "@babel/parser": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz", + "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==", + "dev": true + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz", + "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.5.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.0", + "@babel/types": "^7.5.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz", + "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@ngtools/webpack": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.0.6.tgz", + "integrity": "sha512-ulu+5lLt4RjmcCXbmaGCjqjuOWt18DVek/Sq4HFE9E7zP+n7HercsU6h+9PrtaZThj9NB0B7A+afRB5aAQN/bQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.0.6.tgz", + "integrity": "sha512-F0/MrbvrJQJIjt0GwEkmf9PZUX0xQlCjlDcH6U7yBni0/+R5Gd5g3G0f12fsSa2iAwpwrLkKpiQluj29eFituQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/update": { + "version": "0.800.6", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.800.6.tgz", + "integrity": "sha512-vrzGIJtMiwLWl96+aJXMYrPgPtktLRpY8ZiNnlLm3pMDmeg08uButRh/pQGt02HuO/apTNJ5g0bmG8K5wS4I5A==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.0.6", + "@angular-devkit/schematics": "8.0.6", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.0", + "rxjs": "6.4.0", + "semver": "6.0.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.0.6.tgz", + "integrity": "sha512-gbKEVsQuYqBJPzgaxEitvs0aN9NwmUHhTkum28mRyPbS3witay/q8+3ls48M2W+98Da/PQbfndxFY4OCa+qHEA==", + "dev": true, + "requires": { + "ajv": "6.10.0", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.2", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "@types/d3": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-5.7.2.tgz", + "integrity": "sha512-7/wClB8ycneWGy3jdvLfXKTd5SoTg9hji7IdJ0RuO9xTY54YpJ8zlcFADcXhY1J3kCBwxp+/1jeN6a5OMwgYOw==", + "dev": true, + "requires": { + "@types/d3-array": "^1", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-collection": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-voronoi": "*", + "@types/d3-zoom": "*" + } + }, + "@types/d3-array": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.7.tgz", + "integrity": "sha512-51vHWuUyDOi+8XuwPrTw3cFqyh2Slg9y8COYkRfjCPG9TfYqY0hoNPzv/8BrcAy0FeQBzqEo/D/8Nk2caOQJnA==", + "dev": true + }, + "@types/d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-BZISgSD5M8TgURyNtcPAmUB9sk490CO1Thb6/gIn0WZTt3Y50IssX+2Z0vTccoqZksUDTep0b+o4ofXslvNbqg==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-brush": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.0.10.tgz", + "integrity": "sha512-J8jREATIrfJaAfhJivqaEKPnJsRlwwrOPje+ABqZFgamADjll+q9zaDXnYyjiGPPsiJEU+Qq9jQi5rECxIOfhg==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-chord": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.9.tgz", + "integrity": "sha512-UA6lI9CVW5cT5Ku/RV4hxoFn4mKySHm7HEgodtfRthAj1lt9rKZEPon58vyYfk+HIAm33DtJJgZwMXy2QgyPXw==", + "dev": true + }, + "@types/d3-collection": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.8.tgz", + "integrity": "sha512-y5lGlazdc0HNO0F3UUX2DPE7OmYvd9Kcym4hXwrJcNUkDaypR5pX+apuMikl9LfTxKItJsY9KYvzBulpCKyvuQ==", + "dev": true + }, + "@types/d3-color": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.2.2.tgz", + "integrity": "sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw==", + "dev": true + }, + "@types/d3-contour": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-1.3.0.tgz", + "integrity": "sha512-AUCUIjEnC5lCGBM9hS+MryRaFLIrPls4Rbv6ktqbd+TK/RXZPwOy9rtBWmGpbeXcSOYCJTUDwNJuEnmYPJRxHQ==", + "dev": true, + "requires": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "@types/d3-dispatch": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.7.tgz", + "integrity": "sha512-M+z84G7UKwK6hEPnGCSccOg8zJ3Nk2hgDQ9sCstHXgsFU0sMxlIZVKqKB5oxUDbALqQG6ucg0G9e8cmOSlishg==", + "dev": true + }, + "@types/d3-drag": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.3.tgz", + "integrity": "sha512-rWB5SPvkYVxW3sqUxHOJUZwifD0KqvKwvt1bhNqcLpW6Azsd0BJgRNcyVW8GAferaAk5r8dzeZnf9zKlg9+xMQ==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-dsv": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-1.0.36.tgz", + "integrity": "sha512-jbIWQ27QJcBNMZbQv0NSQMHnBDCmxghAxePxgyiPH1XPCRkOsTBei7jcdi3fDrUCGpCV3lKrSZFSlOkhUQVClA==", + "dev": true + }, + "@types/d3-ease": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.8.tgz", + "integrity": "sha512-VRf8czVWHSJPoUWxMunzpePK02//wHDAswknU8QWzcyrQn6pqe46bHRYi2smSpw5VjsT2CG8k/QeWIdWPS3Bmg==", + "dev": true + }, + "@types/d3-fetch": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-1.1.5.tgz", + "integrity": "sha512-o9c0ItT5/Gl3wbNuVpzRnYX1t3RghzeWAjHUVLuyZJudiTxC4f/fC0ZPFWLQ2lVY8pAMmxpV8TJ6ETYCgPeI3A==", + "dev": true, + "requires": { + "@types/d3-dsv": "*" + } + }, + "@types/d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA==", + "dev": true + }, + "@types/d3-format": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.3.1.tgz", + "integrity": "sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A==", + "dev": true + }, + "@types/d3-geo": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.11.1.tgz", + "integrity": "sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/d3-hierarchy": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz", + "integrity": "sha512-vvSaIDf/Ov0o3KwMT+1M8+WbnnlRiGjlGD5uvk83a1mPCTd/E5x12bUJ/oP55+wUY/4Kb5kc67rVpVGJ2KUHxg==", + "dev": true + }, + "@types/d3-interpolate": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz", + "integrity": "sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ==", + "dev": true, + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.8.tgz", + "integrity": "sha512-AZGHWslq/oApTAHu9+yH/Bnk63y9oFOMROtqPAtxl5uB6qm1x2lueWdVEjsjjV3Qc2+QfuzKIwIR5MvVBakfzA==" + }, + "@types/d3-polygon": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.7.tgz", + "integrity": "sha512-Xuw0eSjQQKs8jTiNbntWH0S+Xp+JyhqxmQ0YAQ3rDu6c3kKMFfgsaGN7Jv5u3zG6yVX/AsLP/Xs/QRjmi9g43Q==", + "dev": true + }, + "@types/d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-0ajFawWicfjsaCLh6NzxOyVDYhQAmMFbsiI3MPGLInorauHFEh9/Cl6UHNf+kt/J1jfoxKY/ZJaKAoDpbvde5Q==", + "dev": true + }, + "@types/d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA==", + "dev": true + }, + "@types/d3-sankey": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.0.tgz", + "integrity": "sha512-qRSxb23bebIudr4+ewdkG6T+vlvBdzWMjB4X915LD4bplq8FxrGTakCZ0OolSZKJjym8WrnIeHRVuoPOw+Nq+g==", + "requires": { + "@types/d3-shape": "*" + } + }, + "@types/d3-scale": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.1.1.tgz", + "integrity": "sha512-kNTkbZQ+N/Ip8oX9PByXfDLoCSaZYm+VUOasbmsa6KD850/ziMdYepg/8kLg2plHzoLANdMqPoYQbvExevLUHg==", + "dev": true, + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.3.1.tgz", + "integrity": "sha512-Ny3rLbV5tnmqgW7w/poCcef4kXP8mHPo/p8EjTS5d9OUk8MlqAeRaM8eF7Vyv7QMLiIXNE94Pa1cMLSPkXQBoQ==", + "dev": true + }, + "@types/d3-selection": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.1.tgz", + "integrity": "sha512-bv8IfFYo/xG6dxri9OwDnK3yCagYPeRIjTlrcdYJSx+FDWlCeBDepIHUpqROmhPtZ53jyna0aUajZRk0I3rXNA==", + "dev": true + }, + "@types/d3-shape": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.1.tgz", + "integrity": "sha512-usqdvUvPJ7AJNwpd2drOzRKs1ELie53p2m2GnPKr076/ADM579jVTJ5dPsoZ5E/CMNWk8lvPWYQSvilpp6jjwg==", + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.10.tgz", + "integrity": "sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw==", + "dev": true + }, + "@types/d3-time-format": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.1.tgz", + "integrity": "sha512-tJSyXta8ZyJ52wDDHA96JEsvkbL6jl7wowGmuf45+fAkj5Y+SQOnz0N7/H68OWmPshPsAaWMQh+GAws44IzH3g==", + "dev": true + }, + "@types/d3-timer": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.9.tgz", + "integrity": "sha512-WvfJ3LFxBbWjqRGz9n7GJt08RrTHPJDVsIwwoCMROlqF+iDacYiAFjf9oqnq0mXpb2juA2N/qjKP+MKdal3YNQ==", + "dev": true + }, + "@types/d3-transition": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.1.4.tgz", + "integrity": "sha512-/vsmKVUIXEyCcIXYAlw7bnYkIs9/J/nZbptRJFKUN3FdXq/dF6j9z9xXzerkyU6TDHLrMrwx9eGwdKyTIy/j9w==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-voronoi": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz", + "integrity": "sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ==", + "dev": true + }, + "@types/d3-zoom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.7.4.tgz", + "integrity": "sha512-5jnFo/itYhJeB2khO/lKe730kW/h2EbKMOvY0uNp3+7NdPm4w63DwPEMxifQZ7n902xGYK5DdU67FmToSoy4VA==", + "dev": true, + "requires": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.16.tgz", + "integrity": "sha512-056oRlBBp7MDzr+HoU5su099s/s7wjZ3KcHxLfv+Byqb9MwdLUvsfLgw1VS97hsh3ddxSPyQu+olHMnoVTUY6g==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.6.tgz", + "integrity": "sha512-2ZOKrxb8bKRmP/po5ObYnRDgFE4i+lQiEB27bAMmtMWLgJSqlIDqlLx6S0IRorpOmOPRQ6O80NujTmQAtBkeNw==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", + "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", + "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular-d3-charts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/angular-d3-charts/-/angular-d3-charts-5.0.0.tgz", + "integrity": "sha1-+LU7Bs6njNybt2FUMXK2XglZWGM=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "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-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", + "dev": true, + "requires": { + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.14", + "postcss-value-parser": "^3.3.1" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "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" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "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=", + "dev": true, + "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=", + "dev": true, + "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==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" + } + }, + "browserstack": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.2.tgz", + "integrity": "sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000974", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", + "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "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" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.1.0.tgz", + "integrity": "sha512-QiyY2/oDQnYx4mAVEDqr+z9MwrOto18tQFjExiuRChXCy0yvngS5fQpWIxvAGpbOmZFiR1PRTRLbEI71u10maA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "^2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.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 + }, + "compare-versions": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.0.tgz", + "integrity": "sha512-hX+4kt2Rcwu+x1U0SsEFCn1quURjEjPEGH/cPBlpME/IidGimAdwfMU+B+xDr7et/KTR7VH2+ZqWGerv4NGs2w==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz", + "integrity": "sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw==", + "dev": true, + "requires": { + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-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" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d3": { + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.9.7.tgz", + "integrity": "sha512-jENytrmdXtGPw7HuSK2S4gxRM1eUGjKvWQkQ6ct4yK+DB8SG3VcnVrwesfnsv8rIcxMUg18TafT4Q8mOZUMP4Q==", + "requires": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + }, + "dependencies": { + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + } + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "d3-brush": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.6.tgz", + "integrity": "sha512-lGSiF5SoSqO5/mYGD5FAeGKKS62JdA1EV7HPrU2b5rTX4qEJJtpjaGLJngjnkewQy7UnGstnFd3168wpf5z76w==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.8.tgz", + "integrity": "sha512-yeANXzP37PHk0DbSTMNPhnJD+Nn4G//O5E825bR6fAfHH43hobSBpgB9G9oWVl9+XgUaQ4yCnsX1H+l8DoaL9A==" + }, + "d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "requires": { + "d3-array": "^1.1.1" + } + }, + "d3-dispatch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.5.tgz", + "integrity": "sha512-vwKx+lAqB1UuCeklr6Jh1bvC4SZgbSqbkGBLClItFBIYH4vqDJCA7qfoy14lXmJdnBOdxndAMxjCbImJYW7e6g==" + }, + "d3-drag": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.3.tgz", + "integrity": "sha512-8S3HWCAg+ilzjJsNtWW1Mutl74Nmzhb9yU6igspilaJzeZVFktmY6oO9xOh5TDk+BM2KrNFjttZNoJJmDnkjkg==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.1.1.tgz", + "integrity": "sha512-1EH1oRGSkeDUlDRbhsFytAXU6cAmXFzc52YUe6MRlPClmWb85MP1J5x+YJRzya4ynZWnbELdSAvATFW/MbxaXw==", + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.5.tgz", + "integrity": "sha512-Ct1O//ly5y5lFM9YTdu+ygq7LleSgSE4oj7vUt9tPLHUi8VCV7QoizGpdWRWAwCO9LdYzIrQDg97+hGVdsSGPQ==" + }, + "d3-fetch": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.1.2.tgz", + "integrity": "sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA==", + "requires": { + "d3-dsv": "1" + } + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", + "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==" + }, + "d3-geo": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.11.6.tgz", + "integrity": "sha512-z0J8InXR9e9wcgNtmVnPTj0TU8nhYT6lD/ak9may2PdKqXIeHUr8UbFLoCtrPYNsjv6YaLvSDQVl578k6nm7GA==", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz", + "integrity": "sha512-L+GHMSZNwTpiq4rt9GEsNcpLa4M96lXMR8M/nMG9p5hBE0jy6C+3hWtyZMenPQdwla249iJy7Nx0uKt3n+u9+w==" + }, + "d3-interpolate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", + "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz", + "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==" + }, + "d3-polygon": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.5.tgz", + "integrity": "sha512-RHhh1ZUJZfhgoqzWWuRhzQJvO7LavchhitSTHGu9oj6uuLFzYZVeBzaWTQ2qSO6bz2w55RMoOCf0MsLCDB6e0w==" + }, + "d3-quadtree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.6.tgz", + "integrity": "sha512-NUgeo9G+ENQCQ1LsRr2qJg3MQ4DJvxcDNCiohdJGHt5gRhBW6orIB5m5FJ9kK3HNL8g9F4ERVoBzcEwQBfXWVA==" + }, + "d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "d3-sankey-diagram": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/d3-sankey-diagram/-/d3-sankey-diagram-0.7.3.tgz", + "integrity": "sha512-k9DOe7MaLWhWV6J/aqY/CGw88Briu8drTQ+uGGyQg55MIR2WXjKUXryLs0ONFmRQkOSH1F+TSz5XiMc4KwKtuA==", + "requires": { + "d3-array": "^1.0.2", + "d3-collection": "^1.0.2", + "d3-dispatch": "^1.0.3", + "d3-format": "^1.1.1", + "d3-interpolate": "^1.1.3", + "d3-selection": "^1.0.3", + "d3-transition": "^1.0.4", + "graphlib": "~2.1.0" + } + }, + "d3-scale": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.0.0.tgz", + "integrity": "sha512-ktic5HBFlAZj2CN8CCl/p/JyY8bMQluN7+fA6ICE6yyoMOnSQAZ1Bb8/5LcNpNKMBMJge+5Vv4pWJhARYlQYFw==", + "requires": { + "d3-array": "^1.2.0 || 2", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-scale-chromatic": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz", + "integrity": "sha512-BWTipif1CimXcYfT02LKjAyItX5gKiwxuPRgr4xM58JwlLocWbjPLI7aMEjkcoOQXMkYsmNsvv3d2yl/OKuHHw==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "d3-selection": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.0.tgz", + "integrity": "sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg==" + }, + "d3-shape": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.5.tgz", + "integrity": "sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.11.tgz", + "integrity": "sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw==" + }, + "d3-time-format": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", + "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.9.tgz", + "integrity": "sha512-rT34J5HnQUHhcLvhSB9GjCkN0Ddd5Y8nCwDBG2u6wQEeYxT/Lf51fTFFkldeib/sE/J0clIe0pnCfs6g/lRbyg==" + }, + "d3-transition": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.2.0.tgz", + "integrity": "sha512-VJ7cmX/FPIPJYuaL2r1o1EMHLttvoIuZhhuAlRoOxDzogV8iQS6jYulDm3xEU3TqL80IZIhI551/ebmCMrkvhw==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "d3-zoom": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.3.tgz", + "integrity": "sha512-xEBSwFx5Z9T3/VrwDkMt+mr0HCzv7XjpGURJ8lWmIC8wxe32L39eWHIasEe/e7Ox8MPU4p1hvH8PKN2olLzIBg==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.190", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.190.tgz", + "integrity": "sha512-cs9WnTnGBGnYYVFMCtLmr9jXNTOkdp95RLz5VhwzDn7dErg1Lnt9o4d01gEH69XlmRKWUr91Yu1hA+Hi8qW0PA==", + "dev": true + }, + "elliptic": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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==", + "dev": true, + "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=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "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=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "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" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "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=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "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" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-saver": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", + "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "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" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "dev": true + }, + "graphlib": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.7.tgz", + "integrity": "sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==", + "requires": { + "lodash": "^4.17.5" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "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": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "dev": true + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "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 + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "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" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", + "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.5.tgz", + "integrity": "sha512-yPvAlKtY3y+rKKWbOo0CzBMVTvJEeMOgbMXuVv3yWvS8YtYKC98AU9vFF0mVBZ2RP1E9SgS90+PT6Kf14P3S4w==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.1", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "license-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", + "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "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" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz", + "integrity": "sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.3.3", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", + "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "^2.0.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "ngx-toastr": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-10.2.0.tgz", + "integrity": "sha512-6ASr5bcvQmtNKb4D2VEsQjCXyROq6GwberBWO0bVt+xcBYPUea4aRTgX8in9apX9buaTafzG+h3HlnIraspoPg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.25", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", + "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz", + "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-registry-fetch": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz", + "integrity": "sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.2", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "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" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "open": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.2.0.tgz", + "integrity": "sha512-Vxf6HJkwrqmvh9UAID3MnMYXntbTxKLOSfOnO7LJdzPf3NE3KQYFNV0/Lcz2VAndbRFil58XVCyh8tiX11fiYw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz", + "integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "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" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "tar": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", + "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.5", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.2.tgz", + "integrity": "sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.5.tgz", + "integrity": "sha512-f1apDjMpZ8SHlXtXGzqBxOjV+WQcDRz5PN7pWScgjXS7vhUIFcM3V89Shetf4A04n8DDR2MxiVQq6JproFcRZw==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz", + "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz", + "integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "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" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.19.0.tgz", + "integrity": "sha512-8kzKCgxCzh8/zEn3AuRwzLWVSSFj8omkiGwqdJdeOufjM+I88dXxu9LYJ/Gw4rRTHXesN0r1AixBuqM6yLQUJw==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz", + "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socks": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", + "integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "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" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "dev": true + }, + "uglify-js": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", + "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.30.0.tgz", + "integrity": "sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", + "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz", + "integrity": "sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.5", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.0", + "express": "^4.16.4", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.2.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.6.2", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + }, + "dependencies": { + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "dev": true + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", + "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/coney-inspect/package.json b/coney-inspect/package.json new file mode 100644 index 0000000..7b2bdcf --- /dev/null +++ b/coney-inspect/package.json @@ -0,0 +1,60 @@ +{ + "name": "coney-inspect", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --configuration=production --base-href=/coney/inspect/", + "build-docker": "ng build --configuration=docker --base-href=/coney/inspect/", + "build-upm": "ng build --configuration=upm --base-href=/coney/inspect/", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^8.1.1", + "@angular/cdk": "^8.0.2", + "@angular/common": "^8.0.2", + "@angular/compiler": "^8.0.2", + "@angular/core": "^8.0.2", + "@angular/forms": "^8.0.2", + "@angular/material": "^8.0.2", + "@angular/platform-browser": "^8.0.2", + "@angular/platform-browser-dynamic": "^8.0.2", + "@angular/router": "^8.0.2", + "@types/d3-sankey": "^0.11.0", + "angular-d3-charts": "^5.0.0", + "core-js": "^2.6.9", + "d3": "^5.9.7", + "d3-sankey-diagram": "^0.7.3", + "d3-scale": "^3.0.0", + "file-saver": "^2.0.2", + "ngx-toastr": "^10.0.4", + "rxjs": "~6.5.2", + "tslib": "^1.9.0", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^0.800.3", + "@angular/cli": "^8.0.6", + "@angular/compiler-cli": "^8.0.2", + "@angular/language-service": "^8.0.2", + "@types/d3": "^5.7.2", + "@types/jasmine": "~2.8.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~5.1.0", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~1.1.2", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.11.0", + "typescript": "~3.4.2" + } +} diff --git a/coney-inspect/src/app/app-routing.module.ts b/coney-inspect/src/app/app-routing.module.ts new file mode 100644 index 0000000..244e2e8 --- /dev/null +++ b/coney-inspect/src/app/app-routing.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { LoginComponent } from './auth/login/login.component'; +import { LogoutComponent } from './auth/logout/logout.component'; +import { AuthGaurdService } from './services/auth-guard.service'; +import { HomeComponent } from './home/home.component'; + +const routes: Routes = [ + { path: '', component: HomeComponent, canActivate:[AuthGaurdService] }, + { path: 'login', component: LoginComponent }, + { path: 'logout', component: LogoutComponent,canActivate:[AuthGaurdService] }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(routes, {useHash: true}) + ], + exports: [ RouterModule ], + declarations: [] +}) +export class AppRoutingModule { } diff --git a/coney-inspect/src/app/app.component.css b/coney-inspect/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/app.component.html b/coney-inspect/src/app/app.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/coney-inspect/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/coney-inspect/src/app/app.component.spec.ts b/coney-inspect/src/app/app.component.spec.ts new file mode 100644 index 0000000..e7a322d --- /dev/null +++ b/coney-inspect/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'coney-inspect'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('coney-inspect'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to coney-inspect!'); + }); +}); diff --git a/coney-inspect/src/app/app.component.ts b/coney-inspect/src/app/app.component.ts new file mode 100644 index 0000000..4586367 --- /dev/null +++ b/coney-inspect/src/app/app.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { ActivatedRoute, Router, Params } from '@angular/router'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'coney-inspect'; + +} diff --git a/coney-inspect/src/app/app.module.ts b/coney-inspect/src/app/app.module.ts new file mode 100644 index 0000000..fb7dd69 --- /dev/null +++ b/coney-inspect/src/app/app.module.ts @@ -0,0 +1,75 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { AppRoutingModule } from './app-routing.module'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ToastrModule } from 'ngx-toastr'; + +import { BackendService } from './services/backend.service'; +import { AppComponent } from './app.component'; +import { QuestionsCheckboxComponent } from './cards/questions-checkbox/questions-checkbox.component' +import { ValueDistrBarChart } from './cards/value-distr-bar-chart/value-distr-bar-chart.component'; +import { DurationBarChartComponent } from './cards/duration-bar-chart/duration-bar-chart.component'; + +import { MatMenuModule, MatButtonModule, MatIconModule, MatCheckboxModule, MatRadioModule, + MatProgressBarModule, MatSelectModule, MatInputModule } from '@angular/material'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { GenericDataChartComponent } from './cards/generic-data-chart/generic-data-chart.component'; +import { MeanPerTagComponent } from './cards/mean-per-tag/mean-per-tag.component'; +import { MeanDistrTagChartComponent } from './cards/mean-distr-tag-chart/mean-distr-tag-chart.component'; +import { OpenEndedQuestionsComponent } from './cards/open-ended-questions/open-ended-questions.component'; +import { MultipleChoicePieChartComponent } from './cards/multiple-choice-label-chart/multiple-choice-pie-chart.component'; +import { HomeComponent } from './home/home.component'; +import { LoginComponent } from './auth/login/login.component'; +import { LogoutComponent } from './auth/logout/logout.component'; +import { AuthHtppInterceptorService } from './services/auth-http-interceptor.service'; +import { CheckboxBarChartComponent } from './cards/checkbox-bar-chart/checkbox-bar-chart.component'; +import { UserViewComponent } from './cards/user-view/user-view.component'; + +@NgModule({ + declarations: [ + AppComponent, + QuestionsCheckboxComponent, + ValueDistrBarChart, + DurationBarChartComponent, + GenericDataChartComponent, + MeanPerTagComponent, + MeanDistrTagChartComponent, + OpenEndedQuestionsComponent, + MultipleChoicePieChartComponent, + UserViewComponent, + HomeComponent, + LoginComponent, + LogoutComponent, + CheckboxBarChartComponent, + UserViewComponent + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + MatMenuModule, + MatIconModule, + MatButtonModule, + MatCheckboxModule, + MatInputModule, + MatSelectModule, + MatRadioModule, + MatProgressBarModule, + ToastrModule.forRoot() + ], + exports: [ + MatProgressBarModule + ], + providers: [ + { + provide: HTTP_INTERCEPTORS, useClass: AuthHtppInterceptorService, multi: true + }, + BackendService], + bootstrap: [AppComponent] +}) + +export class AppModule { } diff --git a/coney-inspect/src/app/auth/login/login.component.css b/coney-inspect/src/app/auth/login/login.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/auth/login/login.component.html b/coney-inspect/src/app/auth/login/login.component.html new file mode 100644 index 0000000..17737d7 --- /dev/null +++ b/coney-inspect/src/app/auth/login/login.component.html @@ -0,0 +1,31 @@ +

    +
    +
    +
    + +
    Coney Inspect
    +
    +
    +

    Wrong credentials

    +
    +
    +
    +
    + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/auth/login/login.component.spec.ts b/coney-inspect/src/app/auth/login/login.component.spec.ts new file mode 100644 index 0000000..d6d85a8 --- /dev/null +++ b/coney-inspect/src/app/auth/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/auth/login/login.component.ts b/coney-inspect/src/app/auth/login/login.component.ts new file mode 100644 index 0000000..050a2c6 --- /dev/null +++ b/coney-inspect/src/app/auth/login/login.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, Params, ActivatedRoute } from '@angular/router'; +import { AuthenticationService } from '../../services/authentication.service'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent implements OnInit { + + username = '' + password = '' + invalidLogin = false + isLogging = false; + + constructor(private router: Router, + private loginservice: AuthenticationService) { } + + ngOnInit() { + if(!environment.enterprise){ + this.router.navigate(['']); + } + } + + checkLogin() { + this.isLogging = true; + this.invalidLogin = false; + + (this.loginservice.authenticate(this.username, this.password).subscribe( + data => { + this.isLogging = false; + this.router.navigate(['']) + this.invalidLogin = false + }, + error => { + this.isLogging = false; + this.invalidLogin = true + + } + ) + ); + + } +} diff --git a/coney-inspect/src/app/auth/logout/logout.component.css b/coney-inspect/src/app/auth/logout/logout.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/auth/logout/logout.component.html b/coney-inspect/src/app/auth/logout/logout.component.html new file mode 100644 index 0000000..c6ae40e --- /dev/null +++ b/coney-inspect/src/app/auth/logout/logout.component.html @@ -0,0 +1 @@ +

    logout works!

    diff --git a/coney-inspect/src/app/auth/logout/logout.component.spec.ts b/coney-inspect/src/app/auth/logout/logout.component.spec.ts new file mode 100644 index 0000000..c04dbe2 --- /dev/null +++ b/coney-inspect/src/app/auth/logout/logout.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogoutComponent } from './logout.component'; + +describe('LogoutComponent', () => { + let component: LogoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LogoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LogoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/auth/logout/logout.component.ts b/coney-inspect/src/app/auth/logout/logout.component.ts new file mode 100644 index 0000000..a3621e5 --- /dev/null +++ b/coney-inspect/src/app/auth/logout/logout.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { AuthenticationService } from 'src/app/services/authentication.service'; + +@Component({ + selector: 'app-logout', + templateUrl: './logout.component.html', + styleUrls: ['./logout.component.css'] +}) +export class LogoutComponent implements OnInit { + + constructor( + private authentocationService: AuthenticationService, + private router: Router) { + + } + + ngOnInit() { + this.authentocationService.logOut(); + this.router.navigate(['login']); + } + +} \ No newline at end of file diff --git a/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.css b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.html b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.html new file mode 100644 index 0000000..100fe2e --- /dev/null +++ b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.html @@ -0,0 +1,47 @@ +
    +
    Checkbox questions
    +
    {{selectedQuestion}}
    +
    filled by {{totalSessions}} users
    +
    +
    + + + [ {{question.tag}} ] + {{question.question}} + + +
    + + + + +
    +
    +

    No numerical data found for this tag

    +
    +
    + +
    +
    +
    + +

    + oo {{item.label}} +

    + +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.spec.ts b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.spec.ts new file mode 100644 index 0000000..d023139 --- /dev/null +++ b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CheckboxBarChartComponent } from './checkbox-bar-chart.component'; + +describe('CheckboxBarChartComponent', () => { + let component: CheckboxBarChartComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CheckboxBarChartComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CheckboxBarChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.ts b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.ts new file mode 100644 index 0000000..59550ff --- /dev/null +++ b/coney-inspect/src/app/cards/checkbox-bar-chart/checkbox-bar-chart.component.ts @@ -0,0 +1,175 @@ +import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-checkbox-bar-chart', + templateUrl: './checkbox-bar-chart.component.html', + styleUrls: ['./checkbox-bar-chart.component.css'] +}) +export class CheckboxBarChartComponent implements OnInit{ + + @Input() data: any; + @ViewChild('checkboxChartContainer', { static: true }) + private chartContainer: ElementRef; + + noData = false; + questions = []; + sessions = []; + dataToUse: any = []; + + totalSessions = 0; + selectedQuestion = ""; + + + margin = { top: 20, right: 20, bottom: 30, left: 40 }; + colors = d3.schemeSet2; + + constructor() { } + + ngOnInit(){ + this.prepareQuestions(); + } + + //viene chiamata onInit, quando cambiano gli imput e quando cambia la select + ngOnChanges() { + this.prepareData(); + } + + //adds the questions + prepareQuestions() { + for (var i = 0; i < this.data.length; i++) { + var element = this.data[i]; + + + if (-1 == this.questions.findIndex(obj => obj.question == element.question)) { + var tmp = { + question: element.question, + tag: element.tag + } + this.questions.push(tmp); + } + + + } + if(this.questions[0] == undefined){ + this.noData = true; + } else { + this.selectedQuestion = this.questions[0].question; + this.prepareData(); + } + + } + + //format the data + prepareData() { + + this.dataToUse = []; + this.sessions = []; + + for (var i = 0; i < this.data.length; i++) { + var element = this.data[i]; + if (element.question != this.selectedQuestion) { continue; } + + //only count users that answered this question + if (!this.sessions.includes(element.session) && element.session != "") { + this.sessions.push(element.session); + } + + var index = this.dataToUse.findIndex(obj => obj.label == element.txtLabel); + + if (index == -1) { + //add entry + var tmp = { + label: element.txtLabel, + amount: 0, + value: 0, + color: "black" + } + //is the user is not null + if (element.session != "") { tmp.amount = 1 } + this.dataToUse.push(tmp); + } else if (index != -1 && element.session != "") { + //increment amount + this.dataToUse[index].amount += 1; + } + } + this.totalSessions = this.sessions.length; + //console.log(this.dataToUse); + for (var i = 0; i < this.dataToUse.length; i++) { + var answersPercentage = (100 * this.dataToUse[i].amount) / this.totalSessions; + //rounds the number, adds epsilon to properly round boundary values + var answerRounded = Math.round((answersPercentage + Number.EPSILON) * 100) / 100 + this.dataToUse[i].value = answerRounded; + this.dataToUse[i].color = this.colors[i]; + } + if(this.dataToUse.length < 1){ + this.noData = true; + return; + } + this.noData = false; + this.createChart(); + } + + //draws the chart + createChart() { + let data: [{ label: string, amount: number, value:number, color: string }]; + data = this.dataToUse; + + var prev = document.getElementById('checkboxBarChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + + if(this.chartContainer== undefined){return;} + const element = this.chartContainer.nativeElement; + + const svg = d3.select(element).append('svg') + .attr('width', element.offsetWidth) + .attr('height', element.offsetHeight) + .attr('id', 'checkboxBarChart'); + + const contentWidth = element.offsetWidth; + const contentHeight = element.offsetHeight; + + const x = d3 + .scaleLinear() + .rangeRound([0, contentWidth]) + .domain([0, 100]); + + const y = d3 + .scaleBand() + .rangeRound([contentHeight, 0]) + .padding(0.1) + .domain(data.map(d => d.label)); + + const g = svg.append('g'); + + g.append('g') + .attr('class', 'axis axis--y') + .call(d3.axisLeft(y).scale(y).tickValues([]).tickSize(0)); //cerca reverse + + var bar = g.selectAll('.bar').data(function(){return data}) + .enter().append('g'); + bar.append('rect') + .attr('class', 'bar') + .attr('y', d => y(d.label)) //TODO prova - davanti + .attr('x', d => x(d.value)) + .attr('height', y.bandwidth()) + .attr("x", 2) + .attr('width', d => x(d.value)) + .attr('fill', d => d.color); + + bar.append('text') + .attr('y', function (d) { + return y(d.label) + y.bandwidth() / 2 + 4; + }) + .attr('x', d => d.value > 90 ? (x(d.value) - 60) : (x(d.value) + 3)) + .text(function (d: any) { + if (d.value != 0) { + return " (" + d.amount + ") " + d.value + "%"; + } else { + return ""; + } + }); + } +} diff --git a/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.css b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.html b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.html new file mode 100644 index 0000000..56f5c00 --- /dev/null +++ b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.html @@ -0,0 +1,6 @@ +
    +
    +
    Completion time (seconds)
    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.spec.ts b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.spec.ts new file mode 100644 index 0000000..18d4122 --- /dev/null +++ b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DurationBarChartComponent } from './duration-bar-chart.component'; + +describe('DurationBarChartComponent', () => { + let component: DurationBarChartComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DurationBarChartComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DurationBarChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.ts b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.ts new file mode 100644 index 0000000..7885ccc --- /dev/null +++ b/coney-inspect/src/app/cards/duration-bar-chart/duration-bar-chart.component.ts @@ -0,0 +1,118 @@ +import { Component, OnInit, Input, ElementRef, ViewChild } from '@angular/core'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-duration-bar-chart', + templateUrl: './duration-bar-chart.component.html', + styleUrls: ['./duration-bar-chart.component.css'] +}) +export class DurationBarChartComponent implements OnInit { + + @Input() data: { max: number, array: any }; + + @ViewChild('durationChart', { static: true }) + private chartContainer: ElementRef; + + public colors = ['rgb(141, 160, 203)']; + barChartData; + tempMax; + margin = { top: 20, right: 20, bottom: 30, left: 40 }; + + constructor() { + } + + onResize() { + this.createChart(); + } + + onChanges() { + this.createChart(); + } + + ngOnInit() { + + this.barChartData = []; + var dataToFilter = this.data.array; + var atom = (this.data.max + (this.data.max * 0.1)) / 15; + + for (var i = 1; i <= 15; i++) { + var step = { + value: Math.floor(atom * i), + amount: 0, + color: this.colors[0] + }; + for (var j = 0; j < dataToFilter.length; j++) { + + if (dataToFilter[j] < (atom * i)) { + step.amount++; + dataToFilter.splice(j, 1); + j--; + } + } + this.barChartData.push(step); + } + this.tempMax = Math.max.apply(Math, this.barChartData.map(function (o) { return o.amount; })); + this.createChart(); + } + + private createChart(): void { + + let data: [{ value: number, amount: number, color: string }]; + data = this.barChartData; + + var prev = document.getElementById('durationBarChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + + const element = this.chartContainer.nativeElement; + + const svg = d3.select(element).append('svg') + .attr('width', element.offsetWidth) + .attr('height', element.offsetHeight) + .attr('id', 'durationBarChart'); + + const contentWidth = element.offsetWidth - this.margin.left - this.margin.right; + const contentHeight = element.offsetHeight - this.margin.top - this.margin.bottom; + + const x = d3 + .scaleBand() + .rangeRound([0, contentWidth]) + .padding(0.1) + .domain(data.map(d => d.value + "")); + + const y = d3 + .scaleLinear() + .rangeRound([contentHeight, 0]) + .domain([0, this.tempMax]); + + const g = svg.append('g') + .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); + + g.append('g') + .attr('class', 'axis axis--x') + .attr('transform', 'translate(0,' + contentHeight + ')') + .call(d3.axisBottom(x)); + + g.append('g') + .attr('class', 'axis axis--y') + .call(d3.axisLeft(y).ticks(5)) + .append('text') + .attr('transform', 'rotate(-90)') + .attr('y', 10) + .attr('dy', '0.71em') + .attr('text-anchor', 'end') + .text('Frequency'); + + g.selectAll('.bar') + .data(data) + .enter().append('rect') + .attr('class', 'bar') + .attr('x', d => x(d.value + "")) + .attr('y', d => y(d.amount)) + .attr('width', x.bandwidth()) + .attr('height', d => contentHeight - y(d.amount)) + .attr('fill', d => d.color); + } + +} \ No newline at end of file diff --git a/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.css b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.html b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.html new file mode 100644 index 0000000..4bb960e --- /dev/null +++ b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.html @@ -0,0 +1,16 @@ +
    +
    + +

    Information

    + +
    +
    Total users
    +

    {{totalParticipants}}

    +
    + +
    +
    Sessions
    Completed / Started
    +

    {{totalFinish}} / {{totalSessions}}

    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.spec.ts b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.spec.ts new file mode 100644 index 0000000..fb165f3 --- /dev/null +++ b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GenericDataChartComponent } from './generic-data-chart.component'; + +describe('GenericDataChartComponent', () => { + let component: GenericDataChartComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GenericDataChartComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GenericDataChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.ts b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.ts new file mode 100644 index 0000000..41520ca --- /dev/null +++ b/coney-inspect/src/app/cards/generic-data-chart/generic-data-chart.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-generic-data-chart', + templateUrl: './generic-data-chart.component.html', + styleUrls: ['./generic-data-chart.component.css'] +}) +export class GenericDataChartComponent implements OnInit { + + @Input() data: {participants: number, sessions: number, unfinished: number}; + + totalParticipants = 0; + totalFinish = 0; + totalSessions = 0; + + constructor() { } + + ngOnInit() { + + this.totalParticipants = this.data.participants-1; + this.totalSessions = this.data.sessions-1; + this.totalFinish = this.totalParticipants - this.data.unfinished; + } + +} diff --git a/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.css b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.html b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.html new file mode 100644 index 0000000..b59c7ce --- /dev/null +++ b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.html @@ -0,0 +1,11 @@ +
    +
    +
    +
    Mean (value) distribution per user and tag: {{chosenTag}}
    +
    Mean (value) distribution per user
    +

    Different scales used within this set, chart might not be accurate

    +
    +
    +

    No numerical data found for this tag

    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.spec.ts b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.spec.ts new file mode 100644 index 0000000..dc265ea --- /dev/null +++ b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MeanDistrTagChartComponent } from './mean-distr-tag-chart.component'; + +describe('MeanDistrTagChartComponent', () => { + let component: MeanDistrTagChartComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MeanDistrTagChartComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MeanDistrTagChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.ts b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.ts new file mode 100644 index 0000000..ad8d5ae --- /dev/null +++ b/coney-inspect/src/app/cards/mean-distr-tag-chart/mean-distr-tag-chart.component.ts @@ -0,0 +1,226 @@ +import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-mean-distr-tag-chart', + templateUrl: './mean-distr-tag-chart.component.html', + styleUrls: ['./mean-distr-tag-chart.component.css'] +}) +export class MeanDistrTagChartComponent implements OnInit { + @Input() data: [{ txtLabel: string, value: number, tag: string, min: number, max: number, question: string, user: string }]; + @Input() currentTag: string; + + @ViewChild('meanDistrChart', { static: true }) + private chartContainer: ElementRef; + + colors = ['#f33334', '#f29b1d', '#4cba6b', '#9ea8ad', '#74abe2', '#ef8d5d']; + margin = { top: 20, right: 20, bottom: 30, left: 40 }; + + min = 9999; + max = 0; + noNumericalData = false; + differentScaleUsed = false; + tagStringList: any; + totalUsers = 0; + chosenTag = ""; + tempMax = 0; + tempMin = 0; + computedMax = 0; + + constructor() { } + + ngOnInit() { + this.chosenTag = this.currentTag; + + } + + ngOnChanges() { + this.chosenTag = this.currentTag; + this.updateData(); + } + + onResize() { + if (this.data.length > 1) { + this.noNumericalData = false; + this.updateData(); + } else { + var prev = document.getElementById('meanDistrLineChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + this.noNumericalData = true; + } + } + + updateData() { + + this.min = 9999; + this.max = 0; + + this.differentScaleUsed = false; + var preparedData = []; + + var filteredData:any = []; + for (var j = 0; j < this.data.length; j++) { + var element = this.data[j]; + if (element.tag == this.chosenTag || this.chosenTag == "") { + filteredData.push(element) + } + } + + this.max = Math.max.apply(Math, filteredData.map(function(o) { return o.value; })) + this.min = Math.min.apply(Math, filteredData.map(function(o) { return o.value; })) + + for (var i = 0; i < filteredData.length; i++) { + + if (filteredData[i].user != "") { + + var index = preparedData.findIndex(obj => obj.user === filteredData[i].user); + + if (index == -1) { + //not found + var tmpUser = { user: filteredData[i].user, value: filteredData[i].value, amount: 1, mean: filteredData[i].value }; + preparedData.push(tmpUser); + + } else { + + //found -> update + preparedData[index].value += filteredData[i].value; + preparedData[index].amount += 1; + + var val = preparedData[index].value; + var am = preparedData[index].amount; + + preparedData[index].mean = val / am; + } + + } + } + + + + preparedData.sort((a, b) => (a.mean > b.mean) ? 1 : -1); + + //console.log(preparedData[Math.floor(preparedData.length / 2)]); + + var result = []; + this.computedMax = 0; + for (var i = 0; i < (this.max * 4); i++) { + var lowThreshold = i * 0.25; + var highThreshold = (i + 1) * 0.25; + var tempArr = [highThreshold, 0]; + for (var j = 0; j < preparedData.length; j++) { + if (preparedData[j].mean > lowThreshold && preparedData[j].mean <= highThreshold) { + tempArr[1] += 1; + } + } + + if (tempArr[1] > this.computedMax) { + this.computedMax = tempArr[1]; + } + result.push(tempArr); + } + + if(result.length>1){ + this.createChart(result); + this.noNumericalData = false; + } else { + var prev = document.getElementById('meanDistrLineChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + this.noNumericalData = true; + } + + + + } + + createChart(filteredData: any) { + + + this.tempMax = this.max; + + var prev = document.getElementById('meanDistrLineChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + + const element = this.chartContainer.nativeElement; + + const svg = d3.select(element).append('svg') + .attr('width', element.offsetWidth) + .attr('height', element.offsetHeight) + .attr('id', 'meanDistrLineChart'); + + const contentWidth = element.offsetWidth - this.margin.left - this.margin.right; + const contentHeight = element.offsetHeight - this.margin.top - this.margin.bottom; + + + const g = svg.append('g') + .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); + + // add the x Axis + var x = d3.scaleLinear() + .domain([0, this.tempMax]) + .range([0, contentWidth]) + g.append("g") + .attr("transform", "translate(0," + contentHeight + ")") + .call(d3.axisBottom(x)); + + // add the y Axis + var y = d3.scaleLinear() + .range([contentHeight, 0]) + .domain([0, Math.floor(this.computedMax * 1.2) +1]); + g.append("g") + .attr('class', 'axis axis--y') + .call(d3.axisLeft(y)); + + var columnWidth = (contentWidth - this.margin.left + this.margin.right) / (this.tempMax * 4); + //bar chart + g.selectAll('.bar') + .data(filteredData) + .enter().append('rect') + .attr('class', 'bar') + .attr('x', d => x(d[0])) + .attr('y', d => y(d[1])) + .attr('width', columnWidth) + .attr('height', d => contentHeight - y(d[1])) + .attr('fill', 'rgba(141, 160, 203, 0.7)') + .attr("stroke", "#777777") + .attr("stroke-width", 1) + .attr('transform', 'translate(-' + columnWidth / 2 + ',0)'); + + // Plot the area + g.append("path") + .attr("class", "mypath") + .datum(filteredData) + .attr("fill", "transparent") + .attr("opacity", "1") + .attr("stroke", "#777777") + .attr("stroke-width", 3) + .attr("stroke-linejoin", "round") + .attr("d", d3.line() + .curve(d3.curveBasis) + .x(function (d) { return x(d[0]); }) + .y(function (d) { return y(d[1]); }) + ); + + g.selectAll('.rect') + .data(filteredData) + .enter().append('text') + .attr('x', d => x(d[0])) + .attr('y', d => y(d[1] + (this.tempMax * 0.1))) + .attr('transform', 'translate(-' + columnWidth / 2 + ',0)') + .text(function (d: any) { + if (d[1] != 0) { + return d[1] + ""; + } else { + return ""; + } + }); + + + + } +} diff --git a/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.css b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.html b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.html new file mode 100644 index 0000000..d590ecf --- /dev/null +++ b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.html @@ -0,0 +1,23 @@ +
    + +

    Mean value per tag

    + +
    +
    +

    N/A

    + +

    {{dato.mean}}

    +

    + {{dato.mean}}

    +

    + {{dato.mean}}

    +

    + {{dato.mean}}

    +

    {{dato.mean}}

    +
    +

    {{dato.tag}}

    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.spec.ts b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.spec.ts new file mode 100644 index 0000000..2ce9fe2 --- /dev/null +++ b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MeanPerTagComponent } from './mean-per-tag.component'; + +describe('MeanPerTagComponent', () => { + let component: MeanPerTagComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MeanPerTagComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MeanPerTagComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.ts b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.ts new file mode 100644 index 0000000..eb8ce67 --- /dev/null +++ b/coney-inspect/src/app/cards/mean-per-tag/mean-per-tag.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-mean-per-tag', + templateUrl: './mean-per-tag.component.html', + styleUrls: ['./mean-per-tag.component.css'] +}) +export class MeanPerTagComponent implements OnInit { + + @Input() data: any; + + dataToShow: any; + + constructor() { } + + ngOnInit() { + } + + ngOnChanges(){ + this.loadData() + } + + loadData(){ + this.dataToShow = []; + for(var i = 0; i + +
    Multiple choice questions
    +
    {{selectedQuestion}}
    +
    total entries: {{totalEntries}}
    + +
    + +
    + + + [ {{question.tag}} ] + {{question.question}} + + +
    + + + +
    +
    +

    No numerical data found for this tag

    +
    +
    + + +
    + +
    +
    + +
    + + +
    + +
    +
    + +
    +
    +

    + + oo {{item.label}} - {{item.percentage}}% ({{item.amount}})

    + +

    + + oo {{item.label}} +

    +
    +
    + +
    + \ No newline at end of file diff --git a/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.spec.ts b/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.spec.ts new file mode 100644 index 0000000..5591b0b --- /dev/null +++ b/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MultipleChoicePieChartComponent } from './multiple-choice-pie-chart.component'; + +describe('MultipleChoicePieChartComponent', () => { + let component: MultipleChoicePieChartComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MultipleChoicePieChartComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MultipleChoicePieChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.ts b/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.ts new file mode 100644 index 0000000..2d4a8a8 --- /dev/null +++ b/coney-inspect/src/app/cards/multiple-choice-label-chart/multiple-choice-pie-chart.component.ts @@ -0,0 +1,231 @@ +import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-multiple-choice-pie-chart', + templateUrl: './multiple-choice-pie-chart.component.html', + styleUrls: ['./multiple-choice-pie-chart.component.css'] +}) +export class MultipleChoicePieChartComponent { + + @Input() data: any; + @Input() currentTag: string; + + displayBoxes = true; + noData = false; + questions = []; + sessions = []; + dataToUse: any = []; + dataToVisualize = []; + + totalSessions = 0; + totalEntries = 0; + + divWidth = 0; + selectedQuestion = ""; + + containerHeight = 0; + colors = d3.schemeSet2; + + init = 0; + type = "gen"; + + + constructor() { } + + ngOnChanges() { + this.prepareQuestions(); + } + + prepareQuestions() { + for (var i = 0; i < this.data.length; i++) { + + var element = this.data[i]; + // if(this.currentTag != "" && this.currentTag!=element.tab){ + // continue; + //} + + if (-1 == this.questions.findIndex(obj => obj.question == element.question)) { + var tmp = { + question: element.question, + tag: element.tag + } + this.questions.push(tmp); + } + } + if (this.init == 0) { + this.selectedQuestion = this.questions[0].question; + this.init = 1; + + } + this.prepareData(); + } + + prepareData() { + this.dataToUse = []; + this.totalEntries = 0; + + for (var i = 0; i < this.data.length; i++) { + var element = this.data[i]; + if (element.question != this.selectedQuestion) { continue; } + this.type="gen"; + if (!this.sessions.includes(element.session) && element.session != "") { + this.sessions.push(element.session); + } + + var textLabel = element.txtLabel; + if(element.questionType.includes("star") || element.txtLabel==""){ + textLabel = ""+element.value; + this.type="values" + } + + var index = this.dataToUse.findIndex(obj => obj.label == textLabel); + + if (index == -1) { + //add entry + var tmp = { + label: textLabel, + amount: 0, + value: 0, + codedVal: element.value, + percentage: 0, + color: "black" + } + //is the user is not null + if (element.session != "") { + tmp.amount = 1; + this.totalEntries += 1; + } + this.dataToUse.push(tmp); + } else if (index != -1 && element.session != "") { + //increment amount + this.dataToUse[index].amount += 1; + this.totalEntries += 1; + } + } + + this.totalSessions = this.sessions.length; + for (var i = 0; i < this.dataToUse.length; i++) { + this.dataToUse[i].color = this.colors[i]; + var perc = this.dataToUse[i].amount*100/this.totalEntries; + this.dataToUse[i].percentage = Math.floor(perc*100)/100; + } + + this.createChart(); + } + + createChart() { + + + var widthSquares = 20; + let contentWidth =0; + + this.dataToUse.sort((a, b) => (a.codedVal > b.codedVal) ? 1 : -1); + this.dataToVisualize = []; + + if (this.totalEntries < 100) { + + this.dataToUse.sort((a, b) => (a.amount < b.amount) ? 1 : -1); + + this.displayBoxes = true; + + var boxElement = document.getElementById('multipleChoiceBoxContainer'); + + if(boxElement!=null){ + contentWidth = boxElement.offsetWidth; + } + + + var widthSquares = 20; + + var prev = document.getElementsByClassName('chartBox'); + for (var i = 0; i < prev.length; i++) { + prev.item(i).remove() + } + + this.containerHeight = (contentWidth / widthSquares) * 5; + for (var i = 0; i < this.dataToUse.length; i++) { + for(var j = 0; j < this.dataToUse[i].amount; j++) + this.dataToVisualize.push({ color: this.dataToUse[i].color, length: contentWidth / widthSquares }); + } + + this.dataToUse.sort((a, b) => (a.codedVal > b.codedVal) ? 1 : -1); + + } else {//bar chart + + var chartElement = document.getElementById('multipleChoiceChartContainer'); + + this.displayBoxes = false; + var prevChart = document.getElementById('multipleBarChart'); + + if (prevChart != undefined && prevChart != null) { + prevChart.remove(); + } + + const contentWidth = chartElement.offsetWidth; + const contentHeight = chartElement.offsetHeight*0.8; + + + let data: [{ label: string, amount: number, value: number, color: string }]; + data = this.dataToUse; + + const svg = d3.select(chartElement).append('svg') + .attr('width', chartElement.offsetWidth) + .attr('height', chartElement.offsetHeight) + .attr('id', 'multipleBarChart'); + + const maxValue = Math.max.apply + (Math, data.map(function (o) { return o.amount; })); + + + const x = d3 + .scaleLinear() + .rangeRound([0, contentWidth]) + .domain([0, maxValue*1.2]); + + const y = d3 + .scaleBand() + .rangeRound([contentHeight, 0]) + .padding(0.1) + .domain(data.map(d => d.label)); + + + + const g = svg.append('g'); + g.append('g').attr('class', 'axis axis--y').attr('transform', 'translate(0,' + contentHeight + ')') + .call(d3.axisLeft(y).scale(y).tickValues([]).tickSize(0)); + + + var bar = g.selectAll('.bar') + .data(data) + .enter().append('g'); + bar.append('rect') + .attr('class', 'bar') + .attr('y', d => y(d.label)) //TODO prova - davanti + .attr('x', d => x(d.amount)) + .attr('height', y.bandwidth()) + .attr("x", 2) + .attr('width', d => x(d.amount)) + .attr('fill', d => d.color); + + + bar.append('text') + .attr('y', function (d) { + return y(d.label) + y.bandwidth() / 2 + 4; + }) + .attr('x', d =>x(d.amount) + 5) + .text(function (d: any) { + if (d.codedVal != 0) { + return "" + d.amount + ""; + } else { + return ""; + } + }); + + this.dataToUse.sort((a, b) => (a.codedVal < b.codedVal) ? 1 : -1); + } + + + + } +} diff --git a/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.css b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.html b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.html new file mode 100644 index 0000000..112abec --- /dev/null +++ b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.html @@ -0,0 +1,47 @@ +
    + +
    +
    Open-ended questions
    +
    + +
    + +
    +
    +

    Choose one:

    +
    + + + [ {{question.tag}} ] + {{question.question}} + + + +
    + +
    + +
    +
    +
    +
    Answer
    +
    +
    +
    {{answer.amount}}
    +
    +
    {{answer.answer}}
    +
    +
    +
    +
    +
    Answer
    +
    +
    +
    {{answer.answer}}
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.spec.ts b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.spec.ts new file mode 100644 index 0000000..3062d0f --- /dev/null +++ b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OpenEndedQuestionsComponent } from './open-ended-questions.component'; + +describe('OpenEndedQuestionsComponent', () => { + let component: OpenEndedQuestionsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OpenEndedQuestionsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OpenEndedQuestionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.ts b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.ts new file mode 100644 index 0000000..a391d99 --- /dev/null +++ b/coney-inspect/src/app/cards/open-ended-questions/open-ended-questions.component.ts @@ -0,0 +1,53 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-open-ended-questions', + templateUrl: './open-ended-questions.component.html', + styleUrls: ['./open-ended-questions.component.css'] +}) +export class OpenEndedQuestionsComponent implements OnInit { + + @Input() data: any; + + selectedQuestion: any; + shownAnswers = []; + questions= []; + multipleSameAnswers = false; + + constructor() { } + + ngOnInit() { + for(var i = 0; i obj.question == this.data[i].question); + if(index == -1){ + var obj = { + question: this.data[i].question, + tag: this.data[i].tag + } + this.questions.push(obj); + } + } + } + + onChange(){ + this.loadAnswers(); + } + + loadAnswers(){ + this.multipleSameAnswers = false; + this.shownAnswers = []; + for(var i = 0; i1){ + this.multipleSameAnswers = true; + } + var obj = { + amount: this.data[i].count, + answer: this.data[i].answer + } + this.shownAnswers.push(obj); + } + } + } + +} diff --git a/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.css b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.html b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.html new file mode 100644 index 0000000..5564ff7 --- /dev/null +++ b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.html @@ -0,0 +1,13 @@ +
    +
    +
    Filter by questions
    +
    +
    +
    +
    + {{dato}} +
    + +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.spec.ts b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.spec.ts new file mode 100644 index 0000000..ee3cea3 --- /dev/null +++ b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QuestionsCheckboxComponent } from './questions-checkbox.component'; + +describe('PieChartComponent', () => { + let component: QuestionsCheckboxComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ QuestionsCheckboxComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(QuestionsCheckboxComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.ts b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.ts new file mode 100644 index 0000000..04bf4c9 --- /dev/null +++ b/coney-inspect/src/app/cards/questions-checkbox/questions-checkbox.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit, Input, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core'; +import { FormGroup, FormArray, FormBuilder, FormControl } from '@angular/forms'; + +@Component({ + selector: 'app-questions-checkbox', + templateUrl: './questions-checkbox.component.html', + styleUrls: ['./questions-checkbox.component.css'] +}) +export class QuestionsCheckboxComponent implements OnInit { + + @Input() data: any; + @Input() currentTag: any; + @Output() selectedQs = new EventEmitter< any >();; + + questionFormGroup: FormGroup; + questionsList: string[] = []; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.questionsList = []; + for (var i = 0; i < this.data.length; i++) { + this.questionsList.push(this.data[i].question); + } + + this.questionFormGroup = this.formBuilder.group({ + questionsList: this.formBuilder.array([]) + }); + } + + ngOnChanges(){ + this.questionsList = []; + if(this.currentTag == ""){ + + for (var i = 0; i < this.data.length; i++) { + this.questionsList.push(this.data[i].question); + } + + } else { + + for (var i = 0; i < this.data.length; i++) { + if(this.data[i].tag == this.currentTag) { + this.questionsList.push(this.data[i].question); + } + } + } + if(this.questionFormGroup != undefined){ + const questions = this.questionFormGroup.get('questionsList') as FormArray; + questions.clear(); + } + } + + onChange(event) { + + const questions = this.questionFormGroup.get('questionsList') as FormArray; + + if (event.checked) { + questions.push(new FormControl(event.source.value)) + } else { + const i = questions.controls.findIndex(x => x.value === event.source.value); + questions.removeAt(i); + } + + this.selectedQs.emit(this.questionFormGroup.value.questionsList) + } + + ngAfterViewInit() { + } +} \ No newline at end of file diff --git a/coney-inspect/src/app/cards/user-view/user-view.component.css b/coney-inspect/src/app/cards/user-view/user-view.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/user-view/user-view.component.html b/coney-inspect/src/app/cards/user-view/user-view.component.html new file mode 100644 index 0000000..6482a05 --- /dev/null +++ b/coney-inspect/src/app/cards/user-view/user-view.component.html @@ -0,0 +1,74 @@ +
    +
    + +
    + +
    Participants
    + + + + {{user.user}} [{{user.session}}] + + +
    +
    + + + +
    + +
    +
    + {{selectedUser.user}} answers
    +
    +
    - [{{question.tag}}] {{question.question}}
    + +
    +

    ⭐ {{question.label}} - [{{question.value}}]

    +
    + +
    +

    🔘 {{question.label}} - [{{question.value}}]

    +
    + +
    +

    😄 {{question.label}} - [{{question.value}}]

    +
    + +
    +

    ➖ {{question.label}} - [{{question.value}}]

    +
    + +
    +

    🔽 {{question.label}} - [{{question.value}}]

    +
    + +
    +

    ☑️ {{answer}}

    +
    + +
    +

    📜 {{question.label}}

    +
    +
    +
    + +
    +
    Select a participant
    +
    +
    +
    + + diff --git a/coney-inspect/src/app/cards/user-view/user-view.component.spec.ts b/coney-inspect/src/app/cards/user-view/user-view.component.spec.ts new file mode 100644 index 0000000..9e56ce5 --- /dev/null +++ b/coney-inspect/src/app/cards/user-view/user-view.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserViewComponent } from './user-view.component'; + +describe('UserViewComponent', () => { + let component: UserViewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UserViewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UserViewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/user-view/user-view.component.ts b/coney-inspect/src/app/cards/user-view/user-view.component.ts new file mode 100644 index 0000000..820a7a8 --- /dev/null +++ b/coney-inspect/src/app/cards/user-view/user-view.component.ts @@ -0,0 +1,90 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-user-view', + templateUrl: './user-view.component.html', + styleUrls: ['./user-view.component.css'] +}) +export class UserViewComponent { + @Input() data: any; + + users = []; + selectedQuestions = []; + selectedUser: any; + + constructor() { } + + ngOnInit(){ + this.prepareUsers(); + } + + ngOnChanges() { + console.log("onChanges Called"); + this.prepareData(); + } + + prepareUsers() { + + this.users = []; + + for (var i = 0; i < this.data.length; i++) { + + var element = this.data[i]; + if(element.session=="" || element.user==""){ continue; } + + var index = this.users.findIndex(usr => usr.session === element.session); + //if not present, add user-session pair + if(index == -1){ + console.log("adding user"); + var usr = { + user: element.user, + session: element.session + } + this.users.push(usr); + } + } + console.log(this.users); + } + + prepareData(){ + + this.selectedQuestions = []; + if(this.selectedUser == undefined){return;} + for (var i = 0; i < this.data.length; i++) { + + var element = this.data[i]; + if(element.user!=this.selectedUser.user || element.session != this.selectedUser.session){continue;} + + var index = this.selectedQuestions.findIndex(question => question.question == element.question); + var type = element.questionType; + console.log(type); + if(index == -1){ + + //checkbox case + var answer:any = element.txtLabel; + if(type=="checkbox"){ + answer = [element.txtLabel]; + } + + var qst = { + type: type, + question: element.question, + questionId: element.questionId, + tag: element.tag, + label: answer, + value: element.value + } + this.selectedQuestions.push(qst); + + } else if(index != -1 && type=="checkbox"){ + this.selectedQuestions[index].label.push(element.txtLabel); + } else { + console.error("error on answer: "+element.txtLabel); + console.log(this.selectedQuestions[index]); + } + } + console.log(this.selectedQuestions ); + this.selectedQuestions.sort((a, b) => (a.questionId > b.questionId) ? 1 : -1); + } + +} diff --git a/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.css b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.html b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.html new file mode 100644 index 0000000..bbad7e7 --- /dev/null +++ b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.html @@ -0,0 +1,26 @@ +
    +
    +
    +
    Value distribution for tag: {{chosenTag}} +
    +
    Value distribution all tags
    +
    +
    + + + +
    + +
    +
    +
    +
    +
    +

    No numerical data found for this tag

    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.spec.ts b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.spec.ts new file mode 100644 index 0000000..52084f6 --- /dev/null +++ b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ValueDistrBarChart } from './value-distr-bar-chart.component'; + +describe('BarChartComponent', () => { + let component: ValueDistrBarChart; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ValueDistrBarChart ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ValueDistrBarChart); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.ts b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.ts new file mode 100644 index 0000000..e96ae84 --- /dev/null +++ b/coney-inspect/src/app/cards/value-distr-bar-chart/value-distr-bar-chart.component.ts @@ -0,0 +1,202 @@ +import { Component, OnInit, Input, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core'; +import * as d3 from 'd3'; +import { filter } from 'rxjs/operators'; +import { QuestionsCheckboxComponent } from '../questions-checkbox/questions-checkbox.component'; + + +@Component({ + selector: 'app-value-distr-bar-chart', + templateUrl: './value-distr-bar-chart.component.html', + styleUrls: ['./value-distr-bar-chart.component.css'] +}) +export class ValueDistrBarChart implements OnInit { + + @Input() data: [{ txtLabel: string, value: number, tag: string, question: string, questionType: string, user: string, session: string }]; + @Input() selectedQs: [any]; + @Output() tagChosen = new EventEmitter(); + + @ViewChild('valueDistrChart', { static: true }) + private chartContainer: ElementRef; + + public barChartData: any; + + tagStringList = []; + + chosenTag = ""; + + colors = d3.schemeSet2; + + min = 0; + max = 0; + maxAmount = 0; + + dataToUse = []; + totalEntries = 0; + noData = false; + + constructor() { + } + + ngOnInit() { + this.prepareTags(); + } + + setTag(selectedTag: string) { + if (this.chosenTag != selectedTag) { + this.chosenTag = selectedTag; + this.tagChosen.emit(this.chosenTag); + } + } + removeTag() { + this.chosenTag = ""; + this.tagChosen.emit(this.chosenTag); + } + + ngOnChanges() { + this.prepareData(); + } + + prepareTags(){ + this.tagStringList = []; + for (var i = 0; i < this.data.length; i++) { + var element = this.data[i]; + if(element.questionType == "checkbox" || element.questionType == "text"){continue;} + var tagToAdd = ""; + if (element.tag == "" || element.tag == "null" || element.tag == undefined) { + var tagToAdd = "untagged"; + } else { + tagToAdd = element.tag; + } + + if(!this.tagStringList.includes(tagToAdd)){ + this.tagStringList.push(element.tag); + } + } + } + + prepareData(){ + this.totalEntries = 0; + this.dataToUse = []; + + for (var i = 0; i < this.data.length; i++) { + var element = this.data[i]; + + //not a selected question, skip + if ( this.selectedQs[0] != undefined && !this.selectedQs.includes(element.question)) { continue; } + //not the chosen tag, skip + if ( this.chosenTag != "" && element.tag != this.chosenTag) { continue; } + + var index = this.dataToUse.findIndex(obj => obj.label == element.value); + + if (index == -1) { + //add entry + var tmp = { + label: element.value, + amount: 0, + value: element.value, + percentage: 0, + color: "black" + } + + //if the user is not null + if (element.session != "") { + tmp.amount = 1; + this.totalEntries += 1; + } + + this.dataToUse.push(tmp); + + } else if (index != -1 && element.session != "") { + + //increment amount + this.dataToUse[index].amount += 1; + this.totalEntries += 1; + } + + } + + for (var i = 0; i < this.dataToUse.length; i++) { + this.dataToUse[i].color = this.colors[i]; + var perc = this.dataToUse[i].amount*100/this.totalEntries; + this.dataToUse[i].percentage = Math.floor(perc*100)/100; + } + + if(this.dataToUse.length < 0){ + this.noData = true; + return; + } + + this.noData = false; + this.maxAmount = Math.max.apply(Math, this.dataToUse.map(function (o) { return o.amount; })); + this.dataToUse.sort((a, b) => (a.value > b.value) ? 1 : -1); + this.min = this.dataToUse[0].value; + this.max = this.dataToUse[this.dataToUse.length-1].value; + + this.createChart(); + + } + + createChart(){ + + let data = this.dataToUse; + + var prev = document.getElementById('valueDistrBarChart'); + if (prev != undefined && prev != null) { + prev.remove(); + } + + const element = this.chartContainer.nativeElement; + + const svg = d3.select(element).append('svg') + .attr('width', element.offsetWidth) + .attr('height', element.offsetHeight) + .attr('id', 'valueDistrBarChart'); + + const contentWidth = element.offsetWidth -20; + const contentHeight = element.offsetHeight -40; + + const x = d3 + .scaleBand() + .rangeRound([0, contentWidth]) + .padding(0.1) + .domain(data.map(d => d.label)); + + const y = d3 + .scaleLinear() + .rangeRound([contentHeight, 0]) + .domain([0, this.maxAmount*1.2]); + + const g = svg.append('g') + .attr('transform', 'translate(0,10)'); + + + g.append('g').attr('class', 'axis axis--x') + .attr('transform', 'translate(0,' + (contentHeight) + ')') + .call(d3.axisBottom(x).scale(x)); + + var bar = g.selectAll('.bar') + .data(data) + .enter().append('g'); + bar.append('rect') + .attr('class', 'bar') + .attr('x', d => x(d.label)) //TODO prova - davanti + .attr('y', d => y(d.amount)) + .attr('height', d => contentHeight - y(d.amount)) + .attr('width',x.bandwidth()) + .attr('fill', d => d.color); + + g.selectAll('.rect') + .data(data) + .enter().append('text') + .attr('x', d => x(d.value + "")) + .attr('y', d => y(d.amount) - (0.1*y(d.amount))) + .text(function (d: any) { + if (d.amount != 0) { + return d.amount + ""; + } else { + return ""; + } + }); + + } +} \ No newline at end of file diff --git a/coney-inspect/src/app/home/home.component.css b/coney-inspect/src/app/home/home.component.css new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/app/home/home.component.html b/coney-inspect/src/app/home/home.component.html new file mode 100644 index 0000000..2c7ff96 --- /dev/null +++ b/coney-inspect/src/app/home/home.component.html @@ -0,0 +1,193 @@ + + +
    +
    + +
    + + +
    +
    + + + +
    + +
    + + Projects + + + {{i}} + + + +
    +
    +
    + +
    + +
    + +
    +

    No conversations found

    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + +
    +
    +
    + + +
    + +
    + +
    +
    +
    + +
    + + +
    + +
    + +
    + +
    + +
    + + +
    + +
    + +
    + +
    + +
    + + +
    + +
    \ No newline at end of file diff --git a/coney-inspect/src/app/home/home.component.spec.ts b/coney-inspect/src/app/home/home.component.spec.ts new file mode 100644 index 0000000..490e81b --- /dev/null +++ b/coney-inspect/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/coney-inspect/src/app/home/home.component.ts b/coney-inspect/src/app/home/home.component.ts new file mode 100644 index 0000000..b3d32b1 --- /dev/null +++ b/coney-inspect/src/app/home/home.component.ts @@ -0,0 +1,557 @@ +import { Component, OnInit } from '@angular/core'; +import { Location } from "@angular/common"; +import { BackendService } from '../services/backend.service'; +import { saveAs } from 'file-saver'; +import { CSVRecord } from '../models/CSVModel'; +import { ToastrService } from 'ngx-toastr'; +import { ActivatedRoute, Router, Params } from '@angular/router'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + + dataValueDistrBar: any; + dataAnsDistrPie: any; + dataDurationBar: any; + dataOpenQuestions: any; + dataNoValueQuestions: any; + dataCheckboxBar: any; + dataGeneric: any; + dataUserView: any; + + displayGenericChart = false; + displayMappedDataChart = false; + displayDataOpenQuestions = false; + displayDataNoValueQuestions = false; + displayDataCheckboxQuestions = true; + noConvFound = false; + + loadingInProgress = false; + userView = false; + enterprise = false; + + conversations: any; + + currentConversationTitle = ""; + currentConversationId = ""; + conversationSelected = false; + currentTag = ""; + users = []; + sessions = []; + questions = []; + tags = []; + selectedQs = []; + + + //searchBox + searchProjects = ["all"]; + initialConversations = []; + noTitleConversations = []; + selectedProject = ""; + titleValue = ""; + + getConvId = ""; + + path = "./assets/csv/"; + records: any; + param = ""; + + constructor(private backend: BackendService, private toastr: ToastrService, + private route: ActivatedRoute, + private router: Router) { } + + + //Initialization + + ngOnInit() { + this.dataValueDistrBar = []; + this.dataAnsDistrPie = []; + this.dataUserView = []; + + this.enterprise = environment.enterprise; + + //this controls back and forward buttons trhou queryParams changes + this.route.queryParams.subscribe(params => { + this.param = params['data']; + if (this.param == null || this.param == undefined || this.param == "") { + this.changeSurvey(); + } else { + if (this.param.substr(0, 2) == "id") { + sessionStorage.setItem("conv", this.param); + } + this.getConversations(); + } + }); + } + + getConversations() { + let endpoint = '/create/searchConversation?status=published'; // /create + this.conversations = []; + this.backend.getRequest(endpoint).subscribe(json => { + + var tmpConv = JSON.parse(json); + if (sessionStorage.getItem("conv") != undefined && sessionStorage.getItem("conv") != null && sessionStorage.getItem("conv") != "null") { + + for (var i = 0; i < tmpConv.length; i++) { + if (tmpConv[i].conversationId == sessionStorage.getItem("conv")) { + this.conversationChosen(tmpConv[i].conversationId, tmpConv[i].conversationTitle, undefined); + return; + } + } + } else { + + for (var z = 0; z < tmpConv.length; z++) { + if (tmpConv[z].status != "saved") { + this.conversations.push(tmpConv[z]); + } + } + this.initialConversations = this.conversations; + + if (this.conversations.length == 0) { + this.noConvFound = true; + } else { + this.noConvFound = false; + this.getProjects(); + } + + } + }); + } + + getProjects() { + for (var i = 0; i < this.conversations.length; i++) { + var pr = this.conversations[i].projectName; + if (!this.searchProjects.includes(pr)) { + this.searchProjects.push(pr); + } + } + } + + //Search screen functions + selectionChanged() { + + if (this.selectedProject !== undefined && this.selectedProject !== "" && this.selectedProject !== 'all') { + this.noTitleConversations = this.initialConversations.filter(x => x.projectName.toLowerCase() == this.selectedProject.toLowerCase()); + } else { + this.noTitleConversations = this.initialConversations; + } + + this.conversations = this.noTitleConversations; + this.titleSelectionChanged(); + + } + + titleSelectionChanged() { + + if (this.titleValue !== "") { + this.conversations = this.noTitleConversations.filter(x => x.conversationTitle.toLowerCase().includes(this.titleValue.toLowerCase())); + } else { + this.conversations = this.noTitleConversations; + } + } + + //Open the conversation and read the CSV + + conversationChosen(conversationId, conversationTitle, type) { + this.currentConversationId = conversationId; + this.currentConversationTitle = conversationTitle; + this.loadingInProgress = true; + + let endpoint = '/data/getAnswersOfConversation'; + endpoint = endpoint + '?conversationId=' + conversationId; + + this.backend.getRequest(endpoint).subscribe( + (res) => { + this.initDataRead(res); + this.loadingInProgress = false; + this.router.navigate([''], { queryParams: { data: this.currentConversationId } }); + sessionStorage.setItem("conv", this.currentConversationId); + }, err => { + this.operationFeedbackMessage("error", "No results found"); + this.loadingInProgress = false; + this.changeSurvey(); + } + ); + + } + + initDataRead(file) { + let csvRecordsArray = (file).split(/\r\n|\n/); + let headersRow = this.getHeaderArray(csvRecordsArray); + this.records = this.getDataRecordsArrayFromCSVFile(csvRecordsArray, headersRow); + this.conversationSelected = true; + this.loadDataToCharts(); + } + + getHeaderArray(csvRecordsArr: any) { + let headers = (csvRecordsArr[0]).split(','); + let headerArray = []; + for (let j = 0; j < headers.length; j++) { + headerArray.push(headers[j]); + } + return headerArray; + } + + getDataRecordsArrayFromCSVFile(csvRecordsArray: any, header: any) { + let csvArr = []; + for (let i = 1; i < csvRecordsArray.length; i++) { + //let currentRecord = (csvRecordsArray[i]).split(','); + + var currentRecord = (csvRecordsArray[i]).split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); + if (currentRecord.length == header.length) { + let csvRecord: CSVRecord = new CSVRecord(); + csvRecord.user = currentRecord[header.findIndex(x => x == "user")].trim().replace(/['"]+/g, ''); + csvRecord.question = currentRecord[header.findIndex(x => x == "question")].trim().replace(/["]+/g, ''); + csvRecord.questionId = currentRecord[header.findIndex(x => x == "questionId")].trim(); + csvRecord.questionType = currentRecord[header.findIndex(x => x == "questionType")].trim().replace(/["]+/g, ''); + csvRecord.language = currentRecord[header.findIndex(x => x == "language")].trim().replace(/["]+/g, ''); + csvRecord.projectId = currentRecord[header.findIndex(x => x == "projectId")].trim(); + csvRecord.projectName = currentRecord[header.findIndex(x => x == "projectName")].trim().replace(/["]+/g, ''); + csvRecord.tag = currentRecord[header.findIndex(x => x == "tag")].trim().replace(/["]+/g, ''); + csvRecord.option = currentRecord[header.findIndex(x => x == "option")].trim().replace(/["]+/g, ''); + csvRecord.value = currentRecord[header.findIndex(x => x == "value")].trim(); + csvRecord.freeAnswer = currentRecord[header.findIndex(x => x == "freeAnswer")].trim().replace(/["]+/g, ''); + csvRecord.points = currentRecord[header.findIndex(x => x == "points")].trim(); + csvRecord.date = currentRecord[header.findIndex(x => x == "date")].trim().replace(/['"]+/g, ''); + csvRecord.time = currentRecord[header.findIndex(x => x == "time")].trim().replace(/['"]+/g, ''); + csvRecord.session = currentRecord[header.findIndex(x => x == "session")].trim().replace(/['"]+/g, ''); + csvRecord.totalDuration = currentRecord[header.findIndex(x => x == "totalDuration")].trim().replace(/['"]+/g, ''); + csvArr.push(csvRecord); + } + } + return csvArr; + } + + //Reset or change view and reload data + + clean() { + this.currentTag = ""; + this.users = []; + this.sessions = []; + this.questions = []; + this.tags = []; + this.selectedQs = []; + this.currentConversationTitle = ""; + + this.records = []; + + this.displayGenericChart = false; + this.displayMappedDataChart = false; + this.displayDataOpenQuestions = false; + this.displayDataNoValueQuestions = false; + this.dataValueDistrBar = []; + this.dataAnsDistrPie = []; + this.dataUserView = []; + this.conversations = []; + + this.currentConversationTitle = ""; + this.conversationSelected = false; + sessionStorage.setItem("conv", null); + this.router.navigate([''], { queryParams: { data: undefined } }); + } + + changeView() { + if (this.userView) { + this.userView = false; + } else { + this.userView = true; + } + } + + changeSurvey() { + this.clean(); + this.getConversations(); + } + + reloadData() { + this.loadingInProgress = true; + var tmpTitle = this.currentConversationTitle; + var tmpId = this.currentConversationId; + this.clean(); + this.conversationChosen(tmpId, tmpTitle, undefined); + } + + //Loading data to charts + + loadDuration() { + var dur_map = new Map(); + var duration_p = new Array(); + var duration; + var arr = []; + var max_d = 0; + for (var j = 0; j < this.records.length; j++) { + if (this.records[j].user != "" && this.records[j].totalDuration != "unfinished") { + var x = this.records[j].totalDuration; + duration = new Array(); + duration = x.split(":"); + duration_p[dur_map.size] = (parseInt(duration[0]) * 3600) + (parseInt(duration[1]) * 60) + (parseInt(duration[2])); + dur_map.set(this.records[j].user, duration_p[dur_map.size]); + } + } + var l = duration_p.length; + var sum = 0; // stores sum of elements + var sumsq = 0; // stores sum of squares + for (var i = 0; i < duration_p.length; ++i) { + sum += duration_p[i]; + sumsq += duration_p[i] * duration_p[i]; + } + var mean = sum / l; + var varience = sumsq / l - mean * mean; + var sd = Math.sqrt(varience); // uses for data which is 3 standard deviations from the mean + for (var i = 0; i < duration_p.length; ++i) { + if (duration_p[i] > mean - 3 * sd && duration_p[i] < mean + 3 * sd) + arr.push(duration_p[i]); + } + for (var k = 0; k < duration_p.length; k++) if (arr[k] > max_d) max_d = arr[k]; + + this.dataDurationBar = { max: max_d, array: arr }; + this.displayGenericChart = true; + this.displayMappedDataChart = true; + this.displayDataOpenQuestions = true; + this.displayDataNoValueQuestions = true; + } + + loadDataToCharts() { + this.dataGeneric = 0; + var unfinishedTotal = 0; + var tmpTags = []; + + this.dataUserView = []; + this.dataNoValueQuestions = []; + this.dataOpenQuestions = []; + this.dataCheckboxBar = []; + var tmpFilterObj: any; + var tmpAnswersObj: any; + + for (var i = 0; i < this.records.length; i++) { + + var rc = this.records[i]; + + if (rc.tag == "" || rc.tag == "null" || rc.tag == undefined) { + rc.tag = "untagged"; + } + + tmpFilterObj = { + question: undefined, + tag: rc.tag.toLowerCase() + } + + //sessions' list with unfinished + var usr = rc.user; + if (!this.users.includes(usr)) { + this.users.push(usr); + } + + var ssion = rc.session; + if (!this.sessions.includes(ssion)) { + this.sessions.push(ssion); + if (rc.totalDuration == "unfinished") { + unfinishedTotal++; + } + } + + if (rc.totalDuration == "unfinished") { + continue; + } + + //question + their tag list + var question = rc.question; + if (!this.questions.includes(question) && rc.questionType != "checkbox" && rc.questionType != "text") { + this.questions.push(question); + tmpFilterObj = { + question: question, + tag: rc.tag.toLowerCase() + } + } + + + if (rc.questionType == "text") { + var freeAns = rc.freeAnswer.trim().toLowerCase(); + var index = this.dataOpenQuestions.findIndex(obj => (obj.question == rc.question && obj.answer == freeAns)); + if (index == -1) { + tmpAnswersObj = { question: rc.question, tag: rc.tag.toLowerCase(), answer: freeAns, count: 1 }; + this.dataOpenQuestions.push(tmpAnswersObj); + } else { + this.dataOpenQuestions[index].count += 1; + } + } + + //tags list + var tag = rc.tag.toLowerCase(); + if (tag == "" || tag == "null" || tag == undefined || tag == null) { + tag = "untagged"; + } + if (!tmpTags.includes(tag)) { + var tagObj = { tag: rc.tag.toLowerCase(), min: 9999, max: 0, total: 0, amount: 0 }; + this.tags.push(tagObj); + tmpTags.push(tag); + } + var indexTag = tmpTags.findIndex(x => x === tag); + if ((parseInt(rc.value) < this.tags[indexTag].min && parseInt(rc.value) != 0) || this.tags[indexTag].min == 0) { + this.tags[indexTag].min = parseInt(rc.value); + } + if (parseInt(rc.value) > this.tags[indexTag].max) { + this.tags[indexTag].max = parseInt(rc.value); + } + if (rc.user != "") { + this.tags[indexTag].total += parseInt(rc.value); + this.tags[indexTag].amount += 1; + } + + + var tmpData = { + txtLabel: rc.option, + value: parseInt(rc.value), + tag: rc.tag.toLowerCase(), + question: rc.question, + questionId: rc.questionId, + questionType: rc.questionType, + user: rc.user, + session: rc.session + } + + + if (rc.questionType == "text") { + var freeAns = rc.freeAnswer.trim().toLowerCase(); + tmpData.txtLabel = freeAns; + } + + if (tmpFilterObj.question != undefined) { + this.dataAnsDistrPie.push(tmpFilterObj); + } + + if (rc.questionType != "checkbox" && rc.questionType != "text") { + this.dataValueDistrBar.push(tmpData); //che è? + this.dataNoValueQuestions.push(tmpData); + } else if (tmpData.questionType == "checkbox") { + this.dataCheckboxBar.push(tmpData); + } + + this.dataUserView.push(tmpData); + } + + this.dataGeneric = { participants: this.users.length, sessions: this.sessions.length, unfinished: unfinishedTotal }; + this.loadDuration(); + } + + //Filter visualized data + + tagChosen(tag) { + this.currentTag = tag; + this.selectedQs = []; + } + + selectedQuestions(questions) { + this.selectedQs = questions; + } + + manageChartChoice(type) { + var div = document.getElementById('hidingDiv'); + if (div.style.height == "0px" && type == "button") { + div.style.height = "135px"; + div.style.boxShadow = "0px 4px 5px 2px rgba(0,0,0,.14)"; + } else if (div.style.height != "0px") { + div.style.height = "0px"; + div.style.boxShadow = "none"; + + } + } + + //Utils + + operationFeedbackMessage(type: string, msg: string) { + switch (type) { + case 'success': + this.toastr.success(msg, ''); + break; + case 'info': + this.toastr.info(msg, ''); + break; + case 'warning': + this.toastr.warning(msg, ''); + break; + case 'error': + this.toastr.error(msg, ''); + break; + } + } + + downloadResultsCSV() { + this.loadingInProgress = true; + + var strt = "res_"; + let endpoint = '/data/getAnswersOfConversation'; + endpoint = endpoint + '?conversationId=' + this.currentConversationId; + + this.backend.getRequest(endpoint).subscribe( + (res) => { + const blob = new Blob([res], { type: 'text/plain' }); + saveAs(blob, strt + this.currentConversationTitle + ".csv"); + this.loadingInProgress = false; + }, err => { + this.loadingInProgress = false; + } + ); + } + + downloadData(type: string, anonymize: boolean) { + + this.loadingInProgress = true; + var strt = ""; + var end = ".csv"; + var reqType = "text/csv" + var endpoint = "/data/"; + + if (type == "csv") { + endpoint += "getAnswersOfConversation?conversationId=" + this.currentConversationId; + strt = "res_csv_"; + } else if (type == "chat_rdf") { + endpoint += "getRDFOfConversation?conversationId=" + this.currentConversationId; + strt = "conv_RDF_"; + reqType = "text/turtle"; + end = ".ttl"; + } else if (type == "results_rdf") { + endpoint += "getRDFOfAnswers?conversationId=" + this.currentConversationId; + strt = "res_RDF_"; + reqType = "text/turtle"; + end = ".ttl"; + } else { + this.loadingInProgress = false; + return; + } + + if (anonymize) { + endpoint += "&anonymize=true" + } + + + this.backend.getRequest(endpoint).subscribe(res => { + this.loadingInProgress = false; + + const blob = new Blob([res], { type: reqType }); + + saveAs(blob, strt + this.currentConversationTitle + end); + }, err => { + this.loadingInProgress = false; + this.operationFeedbackMessage("error", "Unable to download requested file"); + }); + + } + + userLogout() { + this.router.navigate(['logout']); + } + + openDeliver() { + if (!environment.enterprise) { + this.clean(); + return; + } + var url = environment.baseUrl + "/coney/home"; + window.location.href = url; + } +} \ No newline at end of file diff --git a/coney-inspect/src/app/models/CSVModel.ts b/coney-inspect/src/app/models/CSVModel.ts new file mode 100644 index 0000000..c0b258d --- /dev/null +++ b/coney-inspect/src/app/models/CSVModel.ts @@ -0,0 +1,20 @@ +export class CSVRecord { + public user: any; + public question: any; + public questionId: any; + public questionType: any; + public projectId: any; + public projectName: any; + public tag: any; + public option: any; + public value: any; + public freeAnswer: any; + public points: any; + public date: any; + public time: any; + public session: any; + public totalDuration: any; + public minValue: any; + public maxValue: any; + public language: any; +} \ No newline at end of file diff --git a/coney-inspect/src/app/services/auth-guard.service.ts b/coney-inspect/src/app/services/auth-guard.service.ts new file mode 100644 index 0000000..c18337f --- /dev/null +++ b/coney-inspect/src/app/services/auth-guard.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, ActivatedRoute, Params } from '@angular/router'; +import { AuthenticationService } from './authentication.service'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGaurdService implements CanActivate { + + constructor(private router: Router, + private authService: AuthenticationService) { + } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + if (this.authService.isUserLoggedIn() || !environment.enterprise) + return true; + + this.router.navigate(['login']); + return false; + + } + +} \ No newline at end of file diff --git a/coney-inspect/src/app/services/auth-http-interceptor.service.ts b/coney-inspect/src/app/services/auth-http-interceptor.service.ts new file mode 100644 index 0000000..69fef9c --- /dev/null +++ b/coney-inspect/src/app/services/auth-http-interceptor.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http'; +import { AuthenticationService } from './authentication.service'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthHtppInterceptorService implements HttpInterceptor { + + constructor() { } + + intercept(req: HttpRequest, next: HttpHandler) { + + if (environment.enterprise && sessionStorage.getItem('username') && sessionStorage.getItem('token')) { + req = req.clone({ + setHeaders: { + Authorization: sessionStorage.getItem('token') + } + }) + } + + return next.handle(req); + + } +} \ No newline at end of file diff --git a/coney-inspect/src/app/services/authentication.service.ts b/coney-inspect/src/app/services/authentication.service.ts new file mode 100644 index 0000000..00a1c40 --- /dev/null +++ b/coney-inspect/src/app/services/authentication.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { map } from 'rxjs/operators'; +import { environment } from '../../environments/environment' +import { Params, Router, ActivatedRoute } from '@angular/router'; + +export class User { + constructor( + public status: string, + ) { } + +} + +@Injectable({ + providedIn: 'root' +}) +export class AuthenticationService { + + url = environment.baseUrl + "/coney-api"; + + constructor(private router: Router, + private route: ActivatedRoute, + private http: HttpClient) {} + + authenticate(username, password) { + const headers = new HttpHeaders({ Authorization: username + ':' + password }); + return this.http.post(this.url + '/authenticate', {}, { headers }).pipe( + map( + userData => { + sessionStorage.setItem('username', username); + let tokenStr = 'Bearer ' + userData.token; + sessionStorage.setItem('token', tokenStr); + return userData; + } + ) + ); + } + + + isUserLoggedIn() { + let user = sessionStorage.getItem('username') + return !(user === null) + } + + logOut() { + sessionStorage.removeItem('username') + } +} \ No newline at end of file diff --git a/coney-inspect/src/app/services/backend.service.ts b/coney-inspect/src/app/services/backend.service.ts new file mode 100644 index 0000000..bb16229 --- /dev/null +++ b/coney-inspect/src/app/services/backend.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import {Observable} from 'rxjs'; +import { environment } from '../../environments/environment'; + +@Injectable() +export class BackendService { + + url = environment.baseUrl + "/coney-api"; + + constructor(private http: HttpClient) { + } + + getRequest(endpoint: string) { + return this.http.get(this.url + endpoint, {responseType: 'text'}); + } + + postRequest(endpoint: string, json: JSON): Observable { + return this.http.post(this.url + endpoint, json); + } + + deleteObject(endpoint: string) { + return this.http.delete(this.url + endpoint); + } + +} diff --git a/coney-inspect/src/assets/.gitkeep b/coney-inspect/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/coney-inspect/src/assets/csv.svg b/coney-inspect/src/assets/csv.svg new file mode 100644 index 0000000..65fb836 --- /dev/null +++ b/coney-inspect/src/assets/csv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-inspect/src/assets/inspect.png b/coney-inspect/src/assets/inspect.png new file mode 100644 index 0000000000000000000000000000000000000000..15c3dae176976ef4202d7cbe166ed0ab5ade1307 GIT binary patch literal 7325 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 + + diff --git a/coney-inspect/src/assets/pattern.png b/coney-inspect/src/assets/pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6d31d5fe85d644b449b000d76b9b1a062fc8c GIT binary patch literal 41534 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

    QyKiYiCn7&=8$&n;E(5vVh)cH?5 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

    J{=siX@Zh4}XUAjJ^)z)4br#W8&+ZD0IJ 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

    INIU@e5nJ^Kw-nO$`m&51&B`+6dKAm?u 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 ybxEhib + + + \ No newline at end of file diff --git a/coney-inspect/src/assets/refresh.svg b/coney-inspect/src/assets/refresh.svg new file mode 100644 index 0000000..11423eb --- /dev/null +++ b/coney-inspect/src/assets/refresh.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/coney-inspect/src/assets/sections.svg b/coney-inspect/src/assets/sections.svg new file mode 100644 index 0000000..e22e519 --- /dev/null +++ b/coney-inspect/src/assets/sections.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/coney-inspect/src/assets/users.svg b/coney-inspect/src/assets/users.svg new file mode 100644 index 0000000..a22c781 --- /dev/null +++ b/coney-inspect/src/assets/users.svg @@ -0,0 +1,3 @@ + + + diff --git a/coney-inspect/src/browserslist b/coney-inspect/src/browserslist new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/coney-inspect/src/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/coney-inspect/src/coney-theme.css b/coney-inspect/src/coney-theme.css new file mode 100644 index 0000000..e4abee9 --- /dev/null +++ b/coney-inspect/src/coney-theme.css @@ -0,0 +1,3856 @@ +/* Theme for the ripple elements.*/ +/* stylelint-disable material/no-prefixes */ +/* stylelint-enable */ +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Roboto, "Helvetica Neue", sans-serif; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Roboto, "Helvetica Neue", sans-serif; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; } + +.mat-expansion-panel-header { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px); + -ms-transform: translateY(-1.28125em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px); + -ms-transform: translateY(-1.28124em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px); + -ms-transform: translateY(-1.28123em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28122em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28121em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.2812em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59374em) scale(0.75); + width: 133.33334%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59375em) scale(0.75); + width: 133.33333%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59374em) scale(0.75); + width: 133.33334%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; } + +.mat-radio-button { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-slider-thumb-label-text { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tab-label, .mat-tab-link { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Roboto, "Helvetica Neue", sans-serif; + margin: 0; } + +.mat-tooltip { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-option { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Roboto, "Helvetica Neue", sans-serif; } + +.mat-simple-snackbar { + font-family: Roboto, "Helvetica Neue", sans-serif; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Roboto, "Helvetica Neue", sans-serif; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-badge-content { + font-weight: 600; + font-size: 12px; + font-family: Segoe UI; } + +.mat-badge-small .mat-badge-content { + font-size: 9px; } + +.mat-badge-large .mat-badge-content { + font-size: 24px; } + +.mat-h1, .mat-headline, .mat-typography h1 { + font: 400 24px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h2, .mat-title, .mat-typography h2 { + font: 500 20px/32px Segoe UI; + margin: 0 0 16px; } + +.mat-h3, .mat-subheading-2, .mat-typography h3 { + font: 400 16px/28px Segoe UI; + margin: 0 0 16px; } + +.mat-h4, .mat-subheading-1, .mat-typography h4 { + font: 400 15px/24px Segoe UI; + margin: 0 0 16px; } + +.mat-h5, .mat-typography h5 { + font: 400 11.62px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-h6, .mat-typography h6 { + font: 400 9.38px/20px Segoe UI; + margin: 0 0 12px; } + +.mat-body-strong, .mat-body-2 { + font: 500 14px/24px Segoe UI; } + +.mat-body, .mat-body-1, .mat-typography { + font: 400 14px/20px Segoe UI; } + .mat-body p, .mat-body-1 p, .mat-typography p { + margin: 0 0 12px; } + +.mat-small, .mat-caption { + font: 400 12px/20px Segoe UI; } + +.mat-display-4, .mat-typography .mat-display-4 { + font: 300 112px/112px Segoe UI; + letter-spacing: -0.05em; + margin: 0 0 56px; } + +.mat-display-3, .mat-typography .mat-display-3 { + font: 400 56px/56px Segoe UI; + letter-spacing: -0.02em; + margin: 0 0 64px; } + +.mat-display-2, .mat-typography .mat-display-2 { + font: 400 45px/48px Segoe UI; + letter-spacing: -0.005em; + margin: 0 0 64px; } + +.mat-display-1, .mat-typography .mat-display-1 { + font: 400 34px/40px Segoe UI; + margin: 0 0 64px; } + +.mat-bottom-sheet-container { + font: 400 14px/20px Segoe UI; } + +.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, +.mat-flat-button, .mat-fab, .mat-mini-fab { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-button-toggle { + font-family: Segoe UI; } + +.mat-card { + font-family: Segoe UI; } + +.mat-card-title { + font-size: 24px; + font-weight: 500; } + +.mat-card-header .mat-card-title { + font-size: 20px; } + +.mat-card-subtitle, +.mat-card-content { + font-size: 14px; } + +.mat-checkbox { + font-family: Segoe UI; } + +.mat-checkbox-layout .mat-checkbox-label { + line-height: 24px; } + +.mat-chip { + font-size: 14px; + font-weight: 500; } + .mat-chip .mat-chip-trailing-icon.mat-icon, + .mat-chip .mat-chip-remove.mat-icon { + font-size: 18px; } + +.mat-table { + font-family: Segoe UI; } + +.mat-header-cell { + font-size: 12px; + font-weight: 500; } + +.mat-cell, .mat-footer-cell { + font-size: 14px; } + +.mat-calendar { + font-family: Segoe UI; } + +.mat-calendar-body { + font-size: 13px; } + +.mat-calendar-body-label, +.mat-calendar-period-button { + font-size: 14px; + font-weight: 500; } + +.mat-calendar-table-header th { + font-size: 11px; + font-weight: 400; } + +.mat-dialog-title { + font: 500 20px/32px Segoe UI; } + +.mat-expansion-panel-header { + font-family: Segoe UI; + font-size: 15px; + font-weight: 400; } + +.mat-expansion-panel-content { + font: 400 14px/20px Segoe UI; } + +.mat-form-field { + font-size: inherit; + font-weight: 400; + line-height: 1.125; + font-family: Segoe UI; } + +.mat-form-field-wrapper { + padding-bottom: 1.34375em; } + +.mat-form-field-prefix .mat-icon, +.mat-form-field-suffix .mat-icon { + font-size: 150%; + line-height: 1.125; } + +.mat-form-field-prefix .mat-icon-button, +.mat-form-field-suffix .mat-icon-button { + height: 1.5em; + width: 1.5em; } + .mat-form-field-prefix .mat-icon-button .mat-icon, + .mat-form-field-suffix .mat-icon-button .mat-icon { + height: 1.125em; + line-height: 1.125; } + +.mat-form-field-infix { + padding: 0.5em 0; + border-top: 0.84375em solid transparent; } + +.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.34373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.34372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-label-wrapper { + top: -0.84375em; + padding-top: 0.84375em; } + +.mat-form-field-label { + top: 1.34375em; } + +.mat-form-field-underline { + bottom: 1.34375em; } + +.mat-form-field-subscript-wrapper { + font-size: 75%; + margin-top: 0.66667em; + top: calc(100% - 1.79167em); } + +.mat-form-field-appearance-legacy .mat-form-field-wrapper { + padding-bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-infix { + padding: 0.4375em 0; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px); + -ms-transform: translateY(-1.28119em) scale(0.75); + width: 133.33339%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px); + -ms-transform: translateY(-1.28118em) scale(0.75); + width: 133.3334%; } + +.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px); + -ms-transform: translateY(-1.28117em) scale(0.75); + width: 133.33341%; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + top: 1.28125em; } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + bottom: 1.25em; } + +.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper { + margin-top: 0.54167em; + top: calc(100% - 1.66667em); } + +@media print { + .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.28116em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28115em) scale(0.75); } + .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.28114em) scale(0.75); } } + +.mat-form-field-appearance-fill .mat-form-field-infix { + padding: 0.25em 0 0.75em 0; } + +.mat-form-field-appearance-fill .mat-form-field-label { + top: 1.09375em; + margin-top: -0.5em; } + +.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-0.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-0.59372em) scale(0.75); + width: 133.33336%; } + +.mat-form-field-appearance-outline .mat-form-field-infix { + padding: 1em 0 1em 0; } + +.mat-form-field-appearance-outline .mat-form-field-label { + top: 1.84375em; + margin-top: -0.25em; } + +.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + transform: translateY(-1.59373em) scale(0.75); + width: 133.33335%; } + +.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper +.mat-form-field-label { + transform: translateY(-1.59372em) scale(0.75); + width: 133.33336%; } + +.mat-grid-tile-header, +.mat-grid-tile-footer { + font-size: 14px; } + .mat-grid-tile-header .mat-line, + .mat-grid-tile-footer .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-grid-tile-header .mat-line:nth-child(n+2), + .mat-grid-tile-footer .mat-line:nth-child(n+2) { + font-size: 12px; } + +input.mat-input-element { + margin-top: -0.0625em; } + +.mat-menu-item { + font-family: Segoe UI; + font-size: 14px; + font-weight: 400; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + font-family: Segoe UI; + font-size: 12px; } + +.mat-radio-button { + font-family: Segoe UI; } + +.mat-select { + font-family: Segoe UI; } + +.mat-select-trigger { + height: 1.125em; } + +.mat-slide-toggle-content { + font-family: Segoe UI; } + +.mat-slider-thumb-label-text { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-stepper-vertical, .mat-stepper-horizontal { + font-family: Segoe UI; } + +.mat-step-label { + font-size: 14px; + font-weight: 400; } + +.mat-step-sub-label-error { + font-weight: normal; } + +.mat-step-label-error { + font-size: 14px; } + +.mat-step-label-selected { + font-size: 14px; + font-weight: 500; } + +.mat-tab-group { + font-family: Segoe UI; } + +.mat-tab-label, .mat-tab-link { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-toolbar, +.mat-toolbar h1, +.mat-toolbar h2, +.mat-toolbar h3, +.mat-toolbar h4, +.mat-toolbar h5, +.mat-toolbar h6 { + font: 500 20px/32px Segoe UI; + margin: 0; } + +.mat-tooltip { + font-family: Segoe UI; + font-size: 10px; + padding-top: 6px; + padding-bottom: 6px; } + +.mat-tooltip-handset { + font-size: 14px; + padding-top: 8px; + padding-bottom: 8px; } + +.mat-list-item { + font-family: Segoe UI; } + +.mat-list-option { + font-family: Segoe UI; } + +.mat-list-base .mat-list-item { + font-size: 16px; } + .mat-list-base .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-item .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-list-option { + font-size: 16px; } + .mat-list-base .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base .mat-list-option .mat-line:nth-child(n+2) { + font-size: 14px; } + +.mat-list-base .mat-subheader { + font-family: Segoe UI; + font-size: 14px; + font-weight: 500; } + +.mat-list-base[dense] .mat-list-item { + font-size: 12px; } + .mat-list-base[dense] .mat-list-item .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-list-option { + font-size: 12px; } + .mat-list-base[dense] .mat-list-option .mat-line { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + box-sizing: border-box; } + .mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) { + font-size: 12px; } + +.mat-list-base[dense] .mat-subheader { + font-family: Segoe UI; + font-size: 12px; + font-weight: 500; } + +.mat-option { + font-family: Segoe UI; + font-size: 16px; } + +.mat-optgroup-label { + font: 500 14px/24px Segoe UI; } + +.mat-simple-snackbar { + font-family: Segoe UI; + font-size: 14px; } + +.mat-simple-snackbar-action { + line-height: 1; + font-family: inherit; + font-size: inherit; + font-weight: 500; } + +.mat-tree { + font-family: Segoe UI; } + +.mat-tree-node, +.mat-nested-tree-node { + font-weight: 400; + font-size: 14px; } + +.mat-ripple { + overflow: hidden; + position: relative; } + +.mat-ripple.mat-ripple-unbounded { + overflow: visible; } + +.mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); } + @media (-ms-high-contrast: active) { + .mat-ripple-element { + display: none; } } + +.cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +.cdk-overlay-container, .cdk-global-overlay-wrapper { + pointer-events: none; + top: 0; + left: 0; + height: 100%; + width: 100%; } + +.cdk-overlay-container { + position: fixed; + z-index: 1000; } + .cdk-overlay-container:empty { + display: none; } + +.cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: 1000; } + +.cdk-overlay-pane { + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: 1000; + display: flex; + max-width: 100%; + max-height: 100%; } + +.cdk-overlay-backdrop { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); + opacity: 0; } + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 1; } + @media screen and (-ms-high-contrast: active) { + .cdk-overlay-backdrop.cdk-overlay-backdrop-showing { + opacity: 0.6; } } + +.cdk-overlay-dark-backdrop { + background: rgba(0, 0, 0, 0.32); } + +.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing { + opacity: 0; } + +.cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: 1000; + display: flex; + flex-direction: column; + min-width: 1px; + min-height: 1px; } + +.cdk-global-scrollblock { + position: fixed; + width: 100%; + overflow-y: scroll; } + +@keyframes cdk-text-field-autofill-start { + /*!*/ } + +@keyframes cdk-text-field-autofill-end { + /*!*/ } + +.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; } + +.cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; } + +textarea.cdk-textarea-autosize { + resize: none; } + +textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + padding: 2px 0 !important; + box-sizing: content-box !important; } + +.mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.mat-option { + color: rgba(0, 0, 0, 0.87); } + .mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #0097a7; } + +.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffc107; } + +.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .mat-pseudo-checkbox::after { + color: #fafafa; } + +.mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.mat-pseudo-checkbox-checked, +.mat-pseudo-checkbox-indeterminate, +.mat-accent .mat-pseudo-checkbox-checked, +.mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffc107; } + +.mat-primary .mat-pseudo-checkbox-checked, +.mat-primary .mat-pseudo-checkbox-indeterminate { + background: #0097a7; } + +.mat-warn .mat-pseudo-checkbox-checked, +.mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-content { + color: white; + background: #0097a7; } + @media (-ms-high-contrast: active) { + .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.mat-badge-accent .mat-badge-content { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + +.mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.mat-badge { + position: relative; } + +.mat-badge-hidden .mat-badge-content { + display: none; } + +.mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.ng-animate-disabled .mat-badge-content, +.mat-badge-content._mat-animation-noopable { + transition: none; } + +.mat-badge-content.mat-badge-active { + transform: none; } + +.mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-button, .mat-icon-button, .mat-stroked-button { + color: inherit; + background: transparent; } + .mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary { + color: #0097a7; } + .mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent { + color: #ffc107; } + .mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn { + color: #f44336; } + .mat-button.mat-primary[disabled], .mat-button.mat-accent[disabled], .mat-button.mat-warn[disabled], .mat-button[disabled][disabled], .mat-icon-button.mat-primary[disabled], .mat-icon-button.mat-accent[disabled], .mat-icon-button.mat-warn[disabled], .mat-icon-button[disabled][disabled], .mat-stroked-button.mat-primary[disabled], .mat-stroked-button.mat-accent[disabled], .mat-stroked-button.mat-warn[disabled], .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #0097a7; } + .mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffc107; } + .mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .mat-button[disabled] .mat-button-focus-overlay, .mat-icon-button[disabled] .mat-button-focus-overlay, .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.mat-button-focus-overlay { + background: black; } + +.mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + color: white; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + color: white; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary { + background-color: #0097a7; } + .mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent { + background-color: #ffc107; } + .mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn { + background-color: #f44336; } + .mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.mat-stroked-button:not([class*='mat-elevation-z']), .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([class*='mat-elevation-z']), .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.mat-fab[disabled]:not([class*='mat-elevation-z']), .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone, +.mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +[dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-checkbox-checkmark { + fill: #fafafa; } + +.mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.mat-checkbox-mixedmark { + background-color: #fafafa; } + +.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #0097a7; } + +.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffc107; } + +.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .mat-checkbox-background { + background: none; } } + +.mat-checkbox .mat-ripple-element { + background-color: black; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #0097a7; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffc107; } + +.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .mat-chip.mat-standard-chip::after { + background: black; } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #0097a7; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.mat-table { + background: white; } + +.mat-table thead, .mat-table tbody, .mat-table tfoot, +mat-header-row, mat-row, mat-footer-row, +[mat-header-row], [mat-row], [mat-footer-row], +.mat-table-sticky { + background: inherit; } + +mat-row, mat-header-row, mat-footer-row, +th.mat-header-cell, td.mat-cell, td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.mat-cell, .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.mat-datepicker-toggle, +.mat-datepicker-content .mat-calendar-next-button, +.mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.mat-calendar-body-selected { + background-color: #0097a7; + color: white; } + +.mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(0, 151, 167, 0.4); } + +.mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 193, 7, 0.4); } + .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.mat-datepicker-toggle-active { + color: #0097a7; } + .mat-datepicker-toggle-active.mat-accent { + color: #ffc107; } + .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.mat-expansion-panel-header-description, +.mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.mat-form-field.mat-focused .mat-form-field-label { + color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.mat-focused .mat-form-field-required-marker { + color: #ffc107; } + +.mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #0097a7; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffc107; } + .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #0097a7; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffc107; } + +.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.mat-error { + color: #f44336; } + +.mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #0097a7; } + +.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffc107; } + +.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.mat-icon.mat-primary { + color: #0097a7; } + +.mat-icon.mat-accent { + color: #ffc107; } + +.mat-icon.mat-warn { + color: #f44336; } + +.mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-input-element:disabled, +.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-input-element { + caret-color: #0097a7; } + .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-accent .mat-input-element { + caret-color: #ffc107; } + +.mat-warn .mat-input-element, +.mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.mat-list-item-disabled { + background-color: #eeeeee; } + +.mat-list-option:hover, .mat-list-option:focus, +.mat-nav-list .mat-list-item:hover, +.mat-nav-list .mat-list-item:focus, +.mat-action-list .mat-list-item:hover, +.mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.mat-menu-panel { + background: white; } + .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .mat-menu-item[disabled], .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.mat-menu-item .mat-icon-no-color, +.mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.mat-menu-item:hover:not([disabled]), +.mat-menu-item.cdk-program-focused:not([disabled]), +.mat-menu-item.cdk-keyboard-focused:not([disabled]), +.mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.mat-paginator { + background: white; } + +.mat-paginator, +.mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.mat-paginator-decrement, +.mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-paginator-first, +.mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.mat-icon-button[disabled] .mat-paginator-decrement, +.mat-icon-button[disabled] .mat-paginator-increment, +.mat-icon-button[disabled] .mat-paginator-first, +.mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-progress-bar-background { + fill: #00838f; } + +.mat-progress-bar-buffer { + background-color: #00838f; } + +.mat-progress-bar-fill::after { + background-color: #0097a7; } + +.mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #ff6f00; } + +.mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffc107; } + +.mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.mat-progress-spinner circle, .mat-spinner circle { + stroke: #0097a7; } + +.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle { + stroke: #ffc107; } + +.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #0097a7; } + +.mat-radio-button.mat-primary .mat-radio-inner-circle, +.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #0097a7; } + +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffc107; } + +.mat-radio-button.mat-accent .mat-radio-inner-circle, +.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffc107; } + +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.mat-radio-button.mat-warn .mat-radio-inner-circle, +.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.mat-radio-button .mat-ripple-element { + background-color: black; } + +.mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.mat-select-panel { + background: white; } + .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #0097a7; } + +.mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffc107; } + +.mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .mat-drawer.mat-drawer-push { + background-color: white; } + .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +[dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffc107; } + +.mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 193, 7, 0.54); } + +.mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffc107; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #0097a7; } + +.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(0, 151, 167, 0.54); } + +.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #0097a7; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-primary .mat-slider-track-fill, +.mat-primary .mat-slider-thumb, +.mat-primary .mat-slider-thumb-label { + background-color: #0097a7; } + +.mat-primary .mat-slider-thumb-label-text { + color: white; } + +.mat-accent .mat-slider-track-fill, +.mat-accent .mat-slider-thumb, +.mat-accent .mat-slider-thumb-label { + background-color: #ffc107; } + +.mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.mat-warn .mat-slider-track-fill, +.mat-warn .mat-slider-thumb, +.mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.mat-warn .mat-slider-thumb-label-text { + color: white; } + +.mat-slider-focus-ring { + background-color: rgba(255, 193, 7, 0.2); } + +.mat-slider:hover .mat-slider-track-background, +.cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-disabled .mat-slider-track-background, +.mat-slider-disabled .mat-slider-track-fill, +.mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .mat-step-header:hover { + background: none; } } + +.mat-step-header .mat-step-label, +.mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.mat-step-header .mat-step-icon-selected, +.mat-step-header .mat-step-icon-state-done, +.mat-step-header .mat-step-icon-state-edit { + background-color: #0097a7; + color: white; } + +.mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.mat-stepper-horizontal, .mat-stepper-vertical { + background-color: white; } + +.mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.mat-horizontal-stepper-header::before, +.mat-horizontal-stepper-header::after, +.mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.mat-sort-header-arrow { + color: #757575; } + +.mat-tab-nav-bar, +.mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.mat-tab-group-inverted-header .mat-tab-nav-bar, +.mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.mat-tab-label, .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.mat-tab-group[class*='mat-background-'] .mat-tab-header, +.mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #0097a7; } + +.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffc107; } + +.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(0, 131, 143, 0.3); } + +.mat-tab-group.mat-background-primary .mat-tab-header, .mat-tab-group.mat-background-primary .mat-tab-links, .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #0097a7; } + +.mat-tab-group.mat-background-primary .mat-tab-label, .mat-tab-group.mat-background-primary .mat-tab-link, .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-primary .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 111, 0, 0.3); } + +.mat-tab-group.mat-background-accent .mat-tab-header, .mat-tab-group.mat-background-accent .mat-tab-links, .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffc107; } + +.mat-tab-group.mat-background-accent .mat-tab-label, .mat-tab-group.mat-background-accent .mat-tab-link, .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.mat-tab-group.mat-background-accent .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.mat-tab-group.mat-background-warn .mat-tab-header, .mat-tab-group.mat-background-warn .mat-tab-links, .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.mat-tab-group.mat-background-warn .mat-tab-label, .mat-tab-group.mat-background-warn .mat-tab-link, .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.mat-tab-group.mat-background-warn .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-primary { + background: #0097a7; + color: white; } + .mat-toolbar.mat-accent { + background: #ffc107; + color: rgba(0, 0, 0, 0.87); } + .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .mat-toolbar .mat-form-field-underline, + .mat-toolbar .mat-form-field-ripple, + .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .mat-toolbar .mat-form-field-label, + .mat-toolbar .mat-focused .mat-form-field-label, + .mat-toolbar .mat-select-value, + .mat-toolbar .mat-select-arrow, + .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.mat-tree { + background: white; } + +.mat-tree-node, +.mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.mat-simple-snackbar-action { + color: #ffc107; } + +.alternate-theme .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-option { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option:hover:not(.mat-option-disabled), .alternate-theme .mat-option:focus:not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: rgba(0, 0, 0, 0.04); } + .alternate-theme .mat-option.mat-active { + background: rgba(0, 0, 0, 0.04); + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-option.mat-option-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: #03a9f4; } + +.alternate-theme .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: #ffee58; } + +.alternate-theme .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: #f44336; } + +.alternate-theme .mat-optgroup-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-optgroup-disabled .mat-optgroup-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-pseudo-checkbox { + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-pseudo-checkbox::after { + color: #fafafa; } + +.alternate-theme .mat-pseudo-checkbox-disabled { + color: #b0b0b0; } + +.alternate-theme .mat-pseudo-checkbox-checked, +.alternate-theme .mat-pseudo-checkbox-indeterminate, +.alternate-theme .mat-accent .mat-pseudo-checkbox-checked, +.alternate-theme .mat-accent .mat-pseudo-checkbox-indeterminate { + background: #ffee58; } + +.alternate-theme .mat-primary .mat-pseudo-checkbox-checked, +.alternate-theme .mat-primary .mat-pseudo-checkbox-indeterminate { + background: #03a9f4; } + +.alternate-theme .mat-warn .mat-pseudo-checkbox-checked, +.alternate-theme .mat-warn .mat-pseudo-checkbox-indeterminate { + background: #f44336; } + +.alternate-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled, +.alternate-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled { + background: #b0b0b0; } + +.alternate-theme .mat-elevation-z0 { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z1 { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z2 { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z3 { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z4 { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z5 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z6 { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z7 { + box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z8 { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z9 { + box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z10 { + box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z11 { + box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z12 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z13 { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z14 { + box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z15 { + box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z16 { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z17 { + box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z18 { + box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z19 { + box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z20 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z21 { + box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z22 { + box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z23 { + box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-elevation-z24 { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-app-background, .alternate-theme.mat-app-background { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.mat-theme-loaded-marker { + display: none; } + +.alternate-theme .mat-autocomplete-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-autocomplete-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: white; } + .alternate-theme .mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-content { + color: white; + background: #03a9f4; } + @media (-ms-high-contrast: active) { + .alternate-theme .mat-badge-content { + outline: solid 1px; + border-radius: 0; } } + +.alternate-theme .mat-badge-accent .mat-badge-content { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-badge-warn .mat-badge-content { + color: white; + background: #f44336; } + +.alternate-theme .mat-badge { + position: relative; } + +.alternate-theme .mat-badge-hidden .mat-badge-content { + display: none; } + +.alternate-theme .mat-badge-disabled .mat-badge-content { + background: #b9b9b9; + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; } + +.alternate-theme .ng-animate-disabled .mat-badge-content, +.alternate-theme .mat-badge-content._mat-animation-noopable { + transition: none; } + +.alternate-theme .mat-badge-content.mat-badge-active { + transform: none; } + +.alternate-theme .mat-badge-small .mat-badge-content { + width: 16px; + height: 16px; + line-height: 16px; } + +.alternate-theme .mat-badge-small.mat-badge-above .mat-badge-content { + top: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-below .mat-badge-content { + bottom: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-before .mat-badge-content { + left: auto; + right: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: -16px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-after .mat-badge-content { + right: auto; + left: -16px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -8px; } + +.alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -8px; } + +[dir='rtl'] .alternate-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -8px; } + +.alternate-theme .mat-badge-medium .mat-badge-content { + width: 22px; + height: 22px; + line-height: 22px; } + +.alternate-theme .mat-badge-medium.mat-badge-above .mat-badge-content { + top: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-below .mat-badge-content { + bottom: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-before .mat-badge-content { + left: auto; + right: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: -22px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-after .mat-badge-content { + right: auto; + left: -22px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -11px; } + +.alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -11px; } + +[dir='rtl'] .alternate-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -11px; } + +.alternate-theme .mat-badge-large .mat-badge-content { + width: 28px; + height: 28px; + line-height: 28px; } + +.alternate-theme .mat-badge-large.mat-badge-above .mat-badge-content { + top: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-below .mat-badge-content { + bottom: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-before .mat-badge-content { + left: auto; + right: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: -28px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-after .mat-badge-content { + right: auto; + left: -28px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content { + left: auto; + right: -14px; } + +.alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: -14px; } + +[dir='rtl'] .alternate-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content { + right: auto; + left: -14px; } + +.alternate-theme .mat-bottom-sheet-container { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button, .alternate-theme .mat-icon-button, .alternate-theme .mat-stroked-button { + color: inherit; + background: transparent; } + .alternate-theme .mat-button.mat-primary, .alternate-theme .mat-icon-button.mat-primary, .alternate-theme .mat-stroked-button.mat-primary { + color: #03a9f4; } + .alternate-theme .mat-button.mat-accent, .alternate-theme .mat-icon-button.mat-accent, .alternate-theme .mat-stroked-button.mat-accent { + color: #ffee58; } + .alternate-theme .mat-button.mat-warn, .alternate-theme .mat-icon-button.mat-warn, .alternate-theme .mat-stroked-button.mat-warn { + color: #f44336; } + .alternate-theme .mat-button.mat-primary[disabled], .alternate-theme .mat-button.mat-accent[disabled], .alternate-theme .mat-button.mat-warn[disabled], .alternate-theme .mat-button[disabled][disabled], .alternate-theme .mat-icon-button.mat-primary[disabled], .alternate-theme .mat-icon-button.mat-accent[disabled], .alternate-theme .mat-icon-button.mat-warn[disabled], .alternate-theme .mat-icon-button[disabled][disabled], .alternate-theme .mat-stroked-button.mat-primary[disabled], .alternate-theme .mat-stroked-button.mat-accent[disabled], .alternate-theme .mat-stroked-button.mat-warn[disabled], .alternate-theme .mat-stroked-button[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-primary .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-primary .mat-button-focus-overlay { + background-color: #03a9f4; } + .alternate-theme .mat-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-accent .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-accent .mat-button-focus-overlay { + background-color: #ffee58; } + .alternate-theme .mat-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-icon-button.mat-warn .mat-button-focus-overlay, .alternate-theme .mat-stroked-button.mat-warn .mat-button-focus-overlay { + background-color: #f44336; } + .alternate-theme .mat-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-icon-button[disabled] .mat-button-focus-overlay, .alternate-theme .mat-stroked-button[disabled] .mat-button-focus-overlay { + background-color: transparent; } + .alternate-theme .mat-button .mat-ripple-element, .alternate-theme .mat-icon-button .mat-ripple-element, .alternate-theme .mat-stroked-button .mat-ripple-element { + opacity: 0.1; + background-color: currentColor; } + +.alternate-theme .mat-button-focus-overlay { + background: black; } + +.alternate-theme .mat-stroked-button:not([disabled]) { + border-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-flat-button, .alternate-theme .mat-raised-button, .alternate-theme .mat-fab, .alternate-theme .mat-mini-fab { + color: rgba(0, 0, 0, 0.87); + background-color: white; } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + color: white; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + color: white; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-flat-button.mat-primary, .alternate-theme .mat-raised-button.mat-primary, .alternate-theme .mat-fab.mat-primary, .alternate-theme .mat-mini-fab.mat-primary { + background-color: #03a9f4; } + .alternate-theme .mat-flat-button.mat-accent, .alternate-theme .mat-raised-button.mat-accent, .alternate-theme .mat-fab.mat-accent, .alternate-theme .mat-mini-fab.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-flat-button.mat-warn, .alternate-theme .mat-raised-button.mat-warn, .alternate-theme .mat-fab.mat-warn, .alternate-theme .mat-mini-fab.mat-warn { + background-color: #f44336; } + .alternate-theme .mat-flat-button.mat-primary[disabled], .alternate-theme .mat-flat-button.mat-accent[disabled], .alternate-theme .mat-flat-button.mat-warn[disabled], .alternate-theme .mat-flat-button[disabled][disabled], .alternate-theme .mat-raised-button.mat-primary[disabled], .alternate-theme .mat-raised-button.mat-accent[disabled], .alternate-theme .mat-raised-button.mat-warn[disabled], .alternate-theme .mat-raised-button[disabled][disabled], .alternate-theme .mat-fab.mat-primary[disabled], .alternate-theme .mat-fab.mat-accent[disabled], .alternate-theme .mat-fab.mat-warn[disabled], .alternate-theme .mat-fab[disabled][disabled], .alternate-theme .mat-mini-fab.mat-primary[disabled], .alternate-theme .mat-mini-fab.mat-accent[disabled], .alternate-theme .mat-mini-fab.mat-warn[disabled], .alternate-theme .mat-mini-fab[disabled][disabled] { + background-color: rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-flat-button.mat-primary .mat-ripple-element, .alternate-theme .mat-raised-button.mat-primary .mat-ripple-element, .alternate-theme .mat-fab.mat-primary .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + .alternate-theme .mat-flat-button.mat-accent .mat-ripple-element, .alternate-theme .mat-raised-button.mat-accent .mat-ripple-element, .alternate-theme .mat-fab.mat-accent .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.1); } + .alternate-theme .mat-flat-button.mat-warn .mat-ripple-element, .alternate-theme .mat-raised-button.mat-warn .mat-ripple-element, .alternate-theme .mat-fab.mat-warn .mat-ripple-element, .alternate-theme .mat-mini-fab.mat-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-stroked-button:not([class*='mat-elevation-z']), .alternate-theme .mat-flat-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-raised-button[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab:not([disabled]):active:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab:not([disabled]):active:not([class*='mat-elevation-z']) { + box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-fab[disabled]:not([class*='mat-elevation-z']), .alternate-theme .mat-mini-fab[disabled]:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone, +.alternate-theme .mat-button-toggle-group { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + box-shadow: none; } + +.alternate-theme .mat-button-toggle { + color: rgba(0, 0, 0, 0.38); } + .alternate-theme .mat-button-toggle .mat-button-toggle-focus-overlay { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); + background: white; } + .alternate-theme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay { + background-color: black; } + +.alternate-theme .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme [dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-button-toggle-checked { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.54); } + .alternate-theme .mat-button-toggle-checked.mat-button-toggle-appearance-standard { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-button-toggle-disabled { + color: rgba(0, 0, 0, 0.26); + background-color: #eeeeee; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard { + background: white; } + .alternate-theme .mat-button-toggle-disabled.mat-button-toggle-checked { + background-color: #bdbdbd; } + +.alternate-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.alternate-theme .mat-button-toggle-group-appearance-standard { + border: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-card:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-card.mat-card-flat:not([class*='mat-elevation-z']) { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-card-subtitle { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-frame { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-checkbox-checkmark { + fill: #fafafa; } + +.alternate-theme .mat-checkbox-checkmark-path { + stroke: #fafafa !important; } + @media (-ms-high-contrast: black-on-white) { + .alternate-theme .mat-checkbox-checkmark-path { + stroke: #000 !important; } } + +.alternate-theme .mat-checkbox-mixedmark { + background-color: #fafafa; } + +.alternate-theme .mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-primary .mat-checkbox-background { + background-color: #03a9f4; } + +.alternate-theme .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-accent .mat-checkbox-background { + background-color: #ffee58; } + +.alternate-theme .mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .alternate-theme .mat-checkbox-checked.mat-warn .mat-checkbox-background { + background-color: #f44336; } + +.alternate-theme .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .alternate-theme .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { + background-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame { + border-color: #b0b0b0; } + +.alternate-theme .mat-checkbox-disabled .mat-checkbox-label { + color: rgba(0, 0, 0, 0.54); } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-disabled { + opacity: 0.5; } } + +@media (-ms-high-contrast: active) { + .alternate-theme .mat-checkbox-background { + background: none; } } + +.alternate-theme .mat-checkbox .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element { + background: #03a9f4; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element { + background: #ffee58; } + +.alternate-theme .mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element, +.alternate-theme .mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element { + background: #f44336; } + +.alternate-theme .mat-chip.mat-standard-chip { + background-color: #e0e0e0; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled):active { + box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover { + opacity: 0.54; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-disabled { + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip::after { + background: black; } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary { + background-color: #03a9f4; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn { + background-color: #f44336; + color: white; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove { + color: white; + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element { + background: rgba(255, 255, 255, 0.1); } + +.alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove { + color: rgba(0, 0, 0, 0.87); + opacity: 0.4; } + .alternate-theme .mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element { + background: rgba(0, 0, 0, 0.1); } + +.alternate-theme .mat-table { + background: white; } + +.alternate-theme .mat-table thead, .alternate-theme .mat-table tbody, .alternate-theme .mat-table tfoot, +.alternate-theme mat-header-row, .alternate-theme mat-row, .alternate-theme mat-footer-row, +.alternate-theme [mat-header-row], .alternate-theme [mat-row], .alternate-theme [mat-footer-row], +.alternate-theme .mat-table-sticky { + background: inherit; } + +.alternate-theme mat-row, .alternate-theme mat-header-row, .alternate-theme mat-footer-row, +.alternate-theme th.mat-header-cell, .alternate-theme td.mat-cell, .alternate-theme td.mat-footer-cell { + border-bottom-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-header-cell { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-cell, .alternate-theme .mat-footer-cell { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-calendar-arrow { + border-top-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-datepicker-toggle, +.alternate-theme .mat-datepicker-content .mat-calendar-next-button, +.alternate-theme .mat-datepicker-content .mat-calendar-previous-button { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-table-header { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-table-header-divider::after { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-calendar-body-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-calendar-body-cell-content { + color: rgba(0, 0, 0, 0.87); + border-color: transparent; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected), +.alternate-theme .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + border-color: rgba(0, 0, 0, 0.18); } + +.alternate-theme .mat-calendar-body-selected { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(3, 169, 244, 0.4); } + +.alternate-theme .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-selected { + background-color: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(255, 238, 88, 0.4); } + .alternate-theme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-selected { + background-color: #f44336; + color: white; } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected { + background-color: rgba(244, 67, 54, 0.4); } + .alternate-theme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 1px white; } + +.alternate-theme .mat-datepicker-content-touch { + box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-datepicker-toggle-active { + color: #03a9f4; } + .alternate-theme .mat-datepicker-toggle-active.mat-accent { + color: #ffee58; } + .alternate-theme .mat-datepicker-toggle-active.mat-warn { + color: #f44336; } + +.alternate-theme .mat-dialog-container { + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + background: white; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-divider { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-divider-vertical { + border-right-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel { + background: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-expansion-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-action-row { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-keyboard-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']).cdk-program-focused, .alternate-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled='true']):hover { + background: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) +.mat-expansion-panel-header:hover { + background: white; } } + +.alternate-theme .mat-expansion-panel-header-title { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-expansion-panel-header-description, +.alternate-theme .mat-expansion-indicator::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-expansion-panel-header[aria-disabled='true'] { + color: rgba(0, 0, 0, 0.26); } + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-title, + .alternate-theme .mat-expansion-panel-header[aria-disabled='true'] .mat-expansion-panel-header-description { + color: inherit; } + +.alternate-theme .mat-form-field-label { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-hint { + color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-label { + color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-accent { + color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-label.mat-warn { + color: #f44336; } + +.alternate-theme .mat-focused .mat-form-field-required-marker { + color: #ffee58; } + +.alternate-theme .mat-form-field-ripple { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple { + background-color: #03a9f4; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-accent { + background-color: #ffee58; } + .alternate-theme .mat-form-field.mat-focused .mat-form-field-ripple.mat-warn { + background-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after { + color: #03a9f4; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after { + color: #ffee58; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label { + color: #f44336; } + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent, + .alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker { + color: #f44336; } + +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple, +.alternate-theme .mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent { + background-color: #f44336; } + +.alternate-theme .mat-error { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-label { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-hint { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-form-field-appearance-legacy .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-standard .mat-form-field-underline { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex { + background-color: rgba(0, 0, 0, 0.02); } + +.alternate-theme .mat-form-field-appearance-fill .mat-form-field-underline::before { + background-color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before { + background-color: transparent; } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline { + color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field-appearance-outline .mat-form-field-outline-thick { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick { + color: #03a9f4; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick { + color: #ffee58; } + +.alternate-theme .mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick { + color: #f44336; } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline { + color: rgba(0, 0, 0, 0.06); } + +.alternate-theme .mat-icon.mat-primary { + color: #03a9f4; } + +.alternate-theme .mat-icon.mat-accent { + color: #ffee58; } + +.alternate-theme .mat-icon.mat-warn { + color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-input-element:disabled, +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-input-element { + caret-color: #03a9f4; } + .alternate-theme .mat-input-element::placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-moz-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + .alternate-theme .mat-input-element:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-accent .mat-input-element { + caret-color: #ffee58; } + +.alternate-theme .mat-warn .mat-input-element, +.alternate-theme .mat-form-field-invalid .mat-input-element { + caret-color: #f44336; } + +.alternate-theme .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: #f44336; } + +.alternate-theme .mat-list-base .mat-list-item { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-list-option { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-list-base .mat-subheader { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-list-item-disabled { + background-color: #eeeeee; } + +.alternate-theme .mat-list-option:hover, .alternate-theme .mat-list-option:focus, +.alternate-theme .mat-nav-list .mat-list-item:hover, +.alternate-theme .mat-nav-list .mat-list-item:focus, +.alternate-theme .mat-action-list .mat-list-item:hover, +.alternate-theme .mat-action-list .mat-list-item:focus { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-menu-panel { + background: white; } + .alternate-theme .mat-menu-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-menu-item { + background: transparent; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-menu-item[disabled], .alternate-theme .mat-menu-item[disabled]::after { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-menu-item .mat-icon-no-color, +.alternate-theme .mat-menu-item-submenu-trigger::after { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-menu-item:hover:not([disabled]), +.alternate-theme .mat-menu-item.cdk-program-focused:not([disabled]), +.alternate-theme .mat-menu-item.cdk-keyboard-focused:not([disabled]), +.alternate-theme .mat-menu-item-highlighted:not([disabled]) { + background: rgba(0, 0, 0, 0.04); } + +.alternate-theme .mat-paginator { + background: white; } + +.alternate-theme .mat-paginator, +.alternate-theme .mat-paginator-page-size .mat-select-trigger { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-decrement, +.alternate-theme .mat-paginator-increment { + border-top: 2px solid rgba(0, 0, 0, 0.54); + border-right: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-paginator-first, +.alternate-theme .mat-paginator-last { + border-top: 2px solid rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-icon-button[disabled] .mat-paginator-decrement, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-increment, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-first, +.alternate-theme .mat-icon-button[disabled] .mat-paginator-last { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-progress-bar-background { + fill: #b3e5fc; } + +.alternate-theme .mat-progress-bar-buffer { + background-color: #b3e5fc; } + +.alternate-theme .mat-progress-bar-fill::after { + background-color: #03a9f4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-background { + fill: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-buffer { + background-color: #fff9c4; } + +.alternate-theme .mat-progress-bar.mat-accent .mat-progress-bar-fill::after { + background-color: #ffee58; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-background { + fill: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-buffer { + background-color: #ffcdd2; } + +.alternate-theme .mat-progress-bar.mat-warn .mat-progress-bar-fill::after { + background-color: #f44336; } + +.alternate-theme .mat-progress-spinner circle, .alternate-theme .mat-spinner circle { + stroke: #03a9f4; } + +.alternate-theme .mat-progress-spinner.mat-accent circle, .alternate-theme .mat-spinner.mat-accent circle { + stroke: #ffee58; } + +.alternate-theme .mat-progress-spinner.mat-warn circle, .alternate-theme .mat-spinner.mat-warn circle { + stroke: #f44336; } + +.alternate-theme .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle { + border-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-primary .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple { + background-color: #03a9f4; } + +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { + border-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-accent .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple { + background-color: #ffee58; } + +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle { + border-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-warn .mat-radio-inner-circle, +.alternate-theme .mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), +.alternate-theme .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, +.alternate-theme .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple { + background-color: #f44336; } + +.alternate-theme .mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-outer-circle { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element, +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-inner-circle { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button.mat-radio-disabled .mat-radio-label-content { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-radio-button .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-select-value { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-select-placeholder { + color: rgba(0, 0, 0, 0.42); } + +.alternate-theme .mat-select-disabled .mat-select-value { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-select-arrow { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-select-panel { + background: white; } + .alternate-theme .mat-select-panel:not([class*='mat-elevation-z']) { + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) { + background: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-form-field.mat-focused.mat-primary .mat-select-arrow { + color: #03a9f4; } + +.alternate-theme .mat-form-field.mat-focused.mat-accent .mat-select-arrow { + color: #ffee58; } + +.alternate-theme .mat-form-field.mat-focused.mat-warn .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-invalid .mat-select-arrow { + color: #f44336; } + +.alternate-theme .mat-form-field .mat-select.mat-select-disabled .mat-select-arrow { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-drawer-container { + background-color: #fafafa; + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-drawer { + background-color: white; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-drawer.mat-drawer-push { + background-color: white; } + .alternate-theme .mat-drawer:not(.mat-drawer-side) { + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-side { + border-right: solid 1px rgba(0, 0, 0, 0.12); } + .alternate-theme .mat-drawer-side.mat-drawer-end { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + +.alternate-theme [dir='rtl'] .mat-drawer-side { + border-left: solid 1px rgba(0, 0, 0, 0.12); + border-right: none; } + .alternate-theme [dir='rtl'] .mat-drawer-side.mat-drawer-end { + border-left: none; + border-right: solid 1px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-drawer-backdrop.mat-drawer-shown { + background-color: rgba(0, 0, 0, 0.6); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: rgba(255, 238, 88, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-checked .mat-ripple-element { + background-color: #ffee58; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar { + background-color: rgba(3, 169, 244, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element { + background-color: #03a9f4; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar { + background-color: rgba(244, 67, 54, 0.54); } + +.alternate-theme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element { + background-color: #f44336; } + +.alternate-theme .mat-slide-toggle:not(.mat-checked) .mat-ripple-element { + background-color: black; } + +.alternate-theme .mat-slide-toggle-thumb { + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + background-color: #fafafa; } + +.alternate-theme .mat-slide-toggle-bar { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-primary .mat-slider-track-fill, +.alternate-theme .mat-primary .mat-slider-thumb, +.alternate-theme .mat-primary .mat-slider-thumb-label { + background-color: #03a9f4; } + +.alternate-theme .mat-primary .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-accent .mat-slider-track-fill, +.alternate-theme .mat-accent .mat-slider-thumb, +.alternate-theme .mat-accent .mat-slider-thumb-label { + background-color: #ffee58; } + +.alternate-theme .mat-accent .mat-slider-thumb-label-text { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-warn .mat-slider-track-fill, +.alternate-theme .mat-warn .mat-slider-thumb, +.alternate-theme .mat-warn .mat-slider-thumb-label { + background-color: #f44336; } + +.alternate-theme .mat-warn .mat-slider-thumb-label-text { + color: white; } + +.alternate-theme .mat-slider-focus-ring { + background-color: rgba(255, 238, 88, 0.2); } + +.alternate-theme .mat-slider:hover .mat-slider-track-background, +.alternate-theme .cdk-focused .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-disabled .mat-slider-track-background, +.alternate-theme .mat-slider-disabled .mat-slider-track-fill, +.alternate-theme .mat-slider-disabled .mat-slider-thumb { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-disabled:hover .mat-slider-track-background { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value .mat-slider-focus-ring { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb, +.alternate-theme .mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label { + background-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); + background-color: transparent; } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .alternate-theme .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb { + border-color: rgba(0, 0, 0, 0.26); } + +.alternate-theme .mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: rgba(0, 0, 0, 0.7); } + +.alternate-theme .mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); + background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent); } + +.alternate-theme .mat-step-header.cdk-keyboard-focused, .alternate-theme .mat-step-header.cdk-program-focused, .alternate-theme .mat-step-header:hover { + background-color: rgba(0, 0, 0, 0.04); } + +@media (hover: none) { + .alternate-theme .mat-step-header:hover { + background: none; } } + +.alternate-theme .mat-step-header .mat-step-label, +.alternate-theme .mat-step-header .mat-step-optional { + color: rgba(0, 0, 0, 0.54); } + +.alternate-theme .mat-step-header .mat-step-icon { + background-color: rgba(0, 0, 0, 0.54); + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-selected, +.alternate-theme .mat-step-header .mat-step-icon-state-done, +.alternate-theme .mat-step-header .mat-step-icon-state-edit { + background-color: #03a9f4; + color: white; } + +.alternate-theme .mat-step-header .mat-step-icon-state-error { + background-color: transparent; + color: #f44336; } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-active { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-step-header .mat-step-label.mat-step-label-error { + color: #f44336; } + +.alternate-theme .mat-stepper-horizontal, .alternate-theme .mat-stepper-vertical { + background-color: white; } + +.alternate-theme .mat-stepper-vertical-line::before { + border-left-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-horizontal-stepper-header::before, +.alternate-theme .mat-horizontal-stepper-header::after, +.alternate-theme .mat-stepper-horizontal-line { + border-top-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-sort-header-arrow { + color: #757575; } + +.alternate-theme .mat-tab-nav-bar, +.alternate-theme .mat-tab-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group-inverted-header .mat-tab-nav-bar, +.alternate-theme .mat-tab-group-inverted-header .mat-tab-header { + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: none; } + +.alternate-theme .mat-tab-label, .alternate-theme .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.38); } + +.alternate-theme .mat-tab-group[class*='mat-background-'] .mat-tab-header, +.alternate-theme .mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; } + +.alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary .mat-ink-bar { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent .mat-ink-bar { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar { + background-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn .mat-ink-bar { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .alternate-theme .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar { + background-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(179, 229, 252, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-links { + background-color: #03a9f4; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-primary .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-primary .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 249, 196, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-links { + background-color: #ffee58; } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link { + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled { + color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(0, 0, 0, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-accent .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-accent .mat-ripple-element { + background-color: rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled), +.alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) { + background-color: rgba(255, 205, 210, 0.3); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-links, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-links { + background-color: #f44336; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link { + color: white; } + .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled { + color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron { + border-color: white; } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: rgba(255, 255, 255, 0.4); } + +.alternate-theme .mat-tab-group.mat-background-warn .mat-ripple-element, .alternate-theme .mat-tab-nav-bar.mat-background-warn .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.12); } + +.alternate-theme .mat-toolbar { + background: whitesmoke; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-primary { + background: #03a9f4; + color: white; } + .alternate-theme .mat-toolbar.mat-accent { + background: #ffee58; + color: rgba(0, 0, 0, 0.87); } + .alternate-theme .mat-toolbar.mat-warn { + background: #f44336; + color: white; } + .alternate-theme .mat-toolbar .mat-form-field-underline, + .alternate-theme .mat-toolbar .mat-form-field-ripple, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-ripple { + background-color: currentColor; } + .alternate-theme .mat-toolbar .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-focused .mat-form-field-label, + .alternate-theme .mat-toolbar .mat-select-value, + .alternate-theme .mat-toolbar .mat-select-arrow, + .alternate-theme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; } + .alternate-theme .mat-toolbar .mat-input-element { + caret-color: currentColor; } + +.alternate-theme .mat-tooltip { + background: rgba(97, 97, 97, 0.9); } + +.alternate-theme .mat-tree { + background: white; } + +.alternate-theme .mat-tree-node, +.alternate-theme .mat-nested-tree-node { + color: rgba(0, 0, 0, 0.87); } + +.alternate-theme .mat-snack-bar-container { + color: rgba(255, 255, 255, 0.7); + background: #323232; + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12); } + +.alternate-theme .mat-simple-snackbar-action { + color: #ffee58; } diff --git a/coney-inspect/src/environments/environment.docker.prod.ts b/coney-inspect/src/environments/environment.docker.prod.ts new file mode 100644 index 0000000..ea029c3 --- /dev/null +++ b/coney-inspect/src/environments/environment.docker.prod.ts @@ -0,0 +1,19 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: true, + baseUrl: 'http://localhost:80', + privacyUrl: 'https://www.cefriel.com/en/privacy', + enterprise: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/coney-inspect/src/environments/environment.prod.ts b/coney-inspect/src/environments/environment.prod.ts new file mode 100644 index 0000000..5f1d615 --- /dev/null +++ b/coney-inspect/src/environments/environment.prod.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + baseUrl: 'http://localhost:80', +}; diff --git a/coney-inspect/src/environments/environment.ts b/coney-inspect/src/environments/environment.ts new file mode 100644 index 0000000..4f5580a --- /dev/null +++ b/coney-inspect/src/environments/environment.ts @@ -0,0 +1,18 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, + enterprise: false, + baseUrl: 'http://localhost:80', +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/coney-inspect/src/favicon.ico b/coney-inspect/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..42a72bd0431b52a09781768425262010e56efbe1 GIT binary patch literal 8120 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 S1^^iV0000 + + + + Coney Inspect + + + + + + + + + + + + + + + + + + + + + diff --git a/coney-inspect/src/karma.conf.js b/coney-inspect/src/karma.conf.js new file mode 100644 index 0000000..8bdd30e --- /dev/null +++ b/coney-inspect/src/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage/coney-inspect'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/coney-inspect/src/main.ts b/coney-inspect/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/coney-inspect/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/coney-inspect/src/polyfills.ts b/coney-inspect/src/polyfills.ts new file mode 100644 index 0000000..75d6393 --- /dev/null +++ b/coney-inspect/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/coney-inspect/src/styles-mobile.css b/coney-inspect/src/styles-mobile.css new file mode 100644 index 0000000..261da24 --- /dev/null +++ b/coney-inspect/src/styles-mobile.css @@ -0,0 +1,26 @@ +@media only screen and (max-width: 768px){ + #hidingDiv{ + right: 50%!important; + transform: translate(50%,0)!important; + top: 16vh!important; + } + + #buttonBar{ + position: relative!important; + top: 0px!important; + right: 0px!important; + width: 100%!important; + } + + .hideOnMobile{ + display: none!important; + } + + .displayOnMobile{ + display: block!important; + } + + .no-p-mobile{ + padding: 0px!important; + } +} \ No newline at end of file diff --git a/coney-inspect/src/styles.css b/coney-inspect/src/styles.css new file mode 100644 index 0000000..7cf6f80 --- /dev/null +++ b/coney-inspect/src/styles.css @@ -0,0 +1,151 @@ +@import url("coney-theme.css"); +@import url("styles-mobile.css"); + +html, body, app-root { + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; + } + + .mat-button, .mat-select, .mat-option, .mat-input, .mat-form-field{ + font-family: Quicksand,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important; + } + + body{ + background: url(./assets/pattern.png); + } + +#nav{ + border-radius: 4px; + width: 100%; + background: white; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); +} + +#openConvExt{ + height: auto; + width: auto; + position: absolute; + top: 11vh; + bottom: 4vh; + left: 0; + display: flex; + right: 0; +} + +#toast-container{ + position: absolute; + top: 100px; + right: 30px; +} + +#no-c-found{ + font-size: 18px; + color: gray; +} + +.toast-error{ + background: lightcoral; + border-radius: 8px; + color: white!important; +} + +.toast-message{ + padding: 15px; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); + border-radius: 8px; +} + +#navContainer{ + position: fixed; + width: 100%; + top: 0px; + z-index: 100; + transition: all 0.2s ease-in; +} + +.card{ + border-radius: 4px!important; +} + +#hidingDiv{ + background-color: white; + box-shadow: none; + position: absolute; + right: 0px; + top: 6vh; + overflow: hidden; + height: 0px; + transition: height 0.2s ease-out; +} + +#buttonBar{ + float:right; +} + +.cube{ + width: 10px; + height: 10px; + position: absolute; + right: 0px; +} +#legendNoValue{ + position: absolute; + top: 0px; + right: 0px; + width: 30%; +} +#loadingSpinner{ + position: absolute; + top: 30%; + left: 50%; + z-index: 5; + } + +.mat-checkbox-label { + white-space: normal!important; + text-align: left; + } + + .mat-radio-label { + white-space: normal!important; + text-align: left; + } + + .pr-sc{ + margin-top: -1rem; + margin-left: 0px!important; + } + + + #multipleChoiceChartContainer{ + flex-direction: column; + display: flex; + width: 100%; + } + + .vertically-centered{ + flex-direction: column; + justify-content: center; + display: flex; + } + + #dropdown { + visibility: hidden; + opacity: 0; + position: absolute; + transition: all 0.5s ease; + display: none; + background-color: white; + + list-style: none; + padding: 10px; + right: 3rem; + border: 2px solid gray; + border-radius: 4px; + list-style: none; + } + + #drbtn:hover > #dropdown { + visibility: visible; + opacity: 1; + display: block!important; + } \ No newline at end of file diff --git a/coney-inspect/src/test.ts b/coney-inspect/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/coney-inspect/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/coney-inspect/src/tsconfig.app.json b/coney-inspect/src/tsconfig.app.json new file mode 100644 index 0000000..190fd30 --- /dev/null +++ b/coney-inspect/src/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/coney-inspect/src/tsconfig.spec.json b/coney-inspect/src/tsconfig.spec.json new file mode 100644 index 0000000..de77336 --- /dev/null +++ b/coney-inspect/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/coney-inspect/src/tslint.json b/coney-inspect/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/coney-inspect/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/coney-inspect/tsconfig.json b/coney-inspect/tsconfig.json new file mode 100644 index 0000000..b271fd9 --- /dev/null +++ b/coney-inspect/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "es2015", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/coney-inspect/tslint.json b/coney-inspect/tslint.json new file mode 100644 index 0000000..868ecba --- /dev/null +++ b/coney-inspect/tslint.json @@ -0,0 +1,75 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +}