From 79f570a22d7ab50a5fd51943b21f72a6f351ab7c Mon Sep 17 00:00:00 2001 From: "jakob.dieterle" <jakob.dieterle@stud.uni-goettingen.de> Date: Fri, 23 Sep 2022 11:55:43 +0000 Subject: [PATCH] Revert "Resolve "Replace Toggle buttons with switches" by making the toggle buttons..." This reverts commit 721d9883a0363e31414cdaf35dcdcebb611e7c74 --- .gitlab-ci.yml | 4 +- frontend/package.json | 1 - .../submission_notes/CorrectionHelpCard.vue | 9 +- .../submission_notes/base/SubmissionLine.vue | 17 +- .../AnnotatedSubmissionTopToolbar.vue | 28 +- .../ToggleFeedbackVisibilityButton.vue | 28 +- frontend/yarn.lock | 69 +- grady/.coveragerc | 14 - grady/.dockerignore | 30 - grady/.editorconfig | 37 - grady/.gitignore | 47 - grady/.gitlab-ci.yml | 240 - grady/.gitlab/issue_templates/Bug.md | 28 - grady/.gitlab/issue_templates/Feature.md | 14 - grady/.pre-commit-config.yaml | 10 - grady/.pylintrc | 20 - grady/Dockerfile | 41 - grady/LICENSE | 21 - grady/Makefile | 43 - grady/Pipfile | 40 - grady/Pipfile.lock | 1129 -- grady/README.md | 247 - grady/core/__init__.py | 1 - grady/core/admin.py | 17 - grady/core/apps.py | 9 - .../management/commands/extractsubmissions.py | 13 - grady/core/management/commands/importer.py | 10 - .../core/management/commands/maketestdata.py | 10 - .../management/commands/replaceusernames.py | 30 - .../commands/setstudentpasswords.py | 44 - grady/core/management/commands/usermod.py | 37 - grady/core/migrations/0001_initial.py | 261 - .../migrations/0002_auto_20191202_1018.py | 22 - .../migrations/0003_auto_20191203_1445.py | 18 - .../core/migrations/0004_feedback_modified.py | 18 - .../migrations/0005_auto_20200707_1456.py | 47 - .../migrations/0005_auto_20200929_1202.py | 19 - .../migrations/0006_auto_20200810_1115.py | 17 - .../migrations/0006_auto_20201027_1234.py | 18 - .../migrations/0007_auto_20200922_1026.py | 23 - .../migrations/0008_auto_20200922_1148.py | 19 - .../0009_submissiontype_exam_type.py | 19 - grady/core/migrations/0010_group_examtype.py | 19 - .../migrations/0011_auto_20201103_1211.py | 18 - .../migrations/0012_auto_20201103_1228.py | 17 - .../migrations/0013_auto_20201103_1248.py | 21 - .../migrations/0014_merge_20201123_1252.py | 14 - grady/core/migrations/0015_group_exam_type.py | 19 - .../migrations/0016_auto_20210902_1140.py | 18 - grady/core/migrations/__init__.py | 0 grady/core/models/__init__.py | 13 - grady/core/models/assignment.py | 111 - grady/core/models/exam_type.py | 44 - grady/core/models/feedback.py | 94 - grady/core/models/group.py | 14 - grady/core/models/label.py | 21 - grady/core/models/student_info.py | 140 - grady/core/models/submission.py | 89 - grady/core/models/submission_type.py | 128 - grady/core/models/test.py | 44 - grady/core/models/user_account.py | 109 - grady/core/permissions.py | 62 - grady/core/serializers/__init__.py | 11 - grady/core/serializers/assignment.py | 73 - grady/core/serializers/common_serializers.py | 104 - grady/core/serializers/feedback.py | 252 - grady/core/serializers/generic.py | 18 - grady/core/serializers/label.py | 14 - grady/core/serializers/student.py | 81 - grady/core/serializers/submission.py | 69 - grady/core/serializers/submission_type.py | 68 - grady/core/serializers/tutor.py | 63 - grady/core/signals.py | 73 - grady/core/templates/index.html | 18 - grady/core/tests/__init__.py | 0 grady/core/tests/test_access_rights.py | 163 - grady/core/tests/test_assignment_views.py | 317 - grady/core/tests/test_auth.py | 71 - grady/core/tests/test_commands.py | 39 - .../core/tests/test_configuration_viewset.py | 58 - grady/core/tests/test_examlist.py | 49 - grady/core/tests/test_export.py | 238 - grady/core/tests/test_factory.py | 52 - grady/core/tests/test_feedback.py | 703 - grady/core/tests/test_functional_views.py | 1 - grady/core/tests/test_import_views.py | 82 - grady/core/tests/test_labels.py | 48 - grady/core/tests/test_student_page.py | 264 - .../tests/test_student_reviewer_viewset.py | 156 - grady/core/tests/test_submissiontypeview.py | 102 - grady/core/tests/test_tutor_api_endpoints.py | 256 - grady/core/tests/test_user_account_views.py | 170 - grady/core/urls.py | 63 - grady/core/views/__init__.py | 7 - grady/core/views/assignment.py | 126 - grady/core/views/common_views.py | 434 - grady/core/views/export.py | 79 - grady/core/views/feedback.py | 123 - grady/core/views/group.py | 14 - grady/core/views/importer.py | 25 - grady/core/views/label.py | 56 - grady/core/views/util.py | 41 - grady/deploy.sh | 13 - grady/docker-compose.yml | 27 - .../Entity Relation Model.erdplus | 1 - .../Database Design/Relational Schema.erdplus | 1 - grady/docs/Database Design/er-model.graphml | 121 - .../erdplus-diagram-pdf-export.pdf | Bin 193138 -> 0 bytes .../erdplus-er-model-export.pdf | Bin 608737 -> 0 bytes grady/docs/core_uml.png | Bin 306987 -> 0 bytes grady/docs/deployment.md | 11 - grady/docs/feedback.api.json | 43 - grady/frontend/.browserslistrc | 3 - grady/frontend/.eslintrc.js | 36 - grady/frontend/.gitignore | 24 - grady/frontend/.postcssrc.js | 5 - grady/frontend/@types/v-clipboard/index.d.ts | 2 - grady/frontend/README.md | 31 - grady/frontend/nightwatch.json | 12 - grady/frontend/nightwatch_globals.js | 3 - grady/frontend/package-lock.json | 12267 ---------------- grady/frontend/package.json | 41 - grady/frontend/src/App.vue | 48 - grady/frontend/src/api.ts | 324 - grady/frontend/src/assets/brand.svg | 241 - grady/frontend/src/assets/fonts.css | 48 - .../src/assets/fonts/Material-Icons.woff2 | Bin 60840 -> 0 bytes .../src/assets/fonts/roboto-black.woff2 | Bin 11012 -> 0 bytes .../src/assets/fonts/roboto-bold.woff2 | Bin 11020 -> 0 bytes .../src/assets/fonts/roboto-light.woff2 | Bin 11180 -> 0 bytes .../src/assets/fonts/roboto-medium.woff2 | Bin 11056 -> 0 bytes .../src/assets/fonts/roboto-regular.woff2 | Bin 11016 -> 0 bytes .../src/assets/fonts/roboto-thin.woff2 | Bin 10984 -> 0 bytes grady/frontend/src/assets/material-icons.css | 23 - grady/frontend/src/class-component-hooks.ts | 8 - grady/frontend/src/components/AutoLogout.vue | 117 - grady/frontend/src/components/BaseLayout.vue | 199 - grady/frontend/src/components/ChangeLog.vue | 91 - .../src/components/CorrectionStatistics.vue | 73 - .../src/components/FreeLocksButton.vue | 54 - grady/frontend/src/components/GDPRNotice.vue | 151 - .../frontend/src/components/ImportDialog.vue | 108 - .../src/components/InstanceActions.vue | 75 - .../src/components/LabelStatistics.vue | 159 - .../frontend/src/components/MathRenderer.vue | 51 - .../src/components/PasswordChangeDialog.vue | 147 - .../src/components/RegisterDialog.vue | 149 - .../src/components/SubmissionTests.vue | 72 - .../frontend/src/components/TwoPaneLayout.vue | 52 - grady/frontend/src/components/UserOptions.vue | 87 - .../src/components/export/DataExport.vue | 116 - .../src/components/export/ExportDialog.vue | 95 - .../src/components/export/InstanceExport.vue | 94 - .../feedback_labels/FeedbackLabel.vue | 38 - .../feedback_labels/FeedbackLabelForm.vue | 175 - .../feedback_labels/FeedbackLabelList.vue | 36 - .../feedback_labels/FeedbackLabelTab.vue | 115 - .../feedback_labels/FeedbackLabelUpdater.vue | 70 - .../feedback_labels/LabelSelector.vue | 229 - .../feedback_list/FeedbackListHelpCard.vue | 58 - .../feedback_list/FeedbackSearchOptions.vue | 192 - .../feedback_list/FeedbackTable.vue | 203 - .../instance_config/ConfigDialog.vue | 110 - .../components/mixins/commentLabelSelector.ts | 132 - .../src/components/mixins/exportMixin.ts | 100 - .../components/student/ExamInformation.vue | 40 - .../src/components/student/SubmissionList.vue | 76 - .../components/student_list/StudentList.vue | 324 - .../student_list/StudentListHelpCard.vue | 31 - .../student_list/StudentListMenu.vue | 94 - .../student_list/StudentListReverseMapper.vue | 45 - .../submission_notes/CorrectionHelpCard.vue | 37 - .../RouteChangeConfirmation.vue | 70 - .../submission_notes/SubmissionCorrection.vue | 257 - .../base/BaseAnnotatedSubmission.vue | 38 - .../submission_notes/base/CommentForm.vue | 154 - .../submission_notes/base/FeedbackComment.vue | 340 - .../submission_notes/base/SubmissionLine.vue | 90 - .../AnnotatedSubmissionBottomToolbar.vue | 227 - .../AnnotatedSubmissionTopToolbar.vue | 239 - .../ToggleFeedbackVisibilityButton.vue | 39 - .../submission_type/SubmissionType.vue | 174 - .../SubmissionTypesOverview.vue | 85 - .../submission_type/solution/Solution.vue | 219 - .../solution/SolutionComment.vue | 238 - .../subscriptions/SubscriptionEnded.vue | 43 - .../subscriptions/SubscriptionForList.vue | 74 - .../subscriptions/SubscriptionList.vue | 189 - .../subscriptions/SubscriptionsForStage.vue | 48 - .../src/components/tutor_list/RoleSelect.vue | 48 - .../src/components/tutor_list/TutorList.vue | 224 - grady/frontend/src/main.ts | 38 - grady/frontend/src/models.ts | 922 -- .../frontend/src/pages/ExamSelectionPage.vue | 121 - grady/frontend/src/pages/LayoutSelector.vue | 58 - grady/frontend/src/pages/Login.vue | 158 - grady/frontend/src/pages/PageNotFound.vue | 46 - .../frontend/src/pages/StartPageSelector.vue | 39 - grady/frontend/src/pages/Statistics.vue | 29 - .../src/pages/StudentSubmissionSideView.vue | 109 - .../src/pages/SubscriptionWorkPage.vue | 124 - .../src/pages/base/FeedbackHistoryPage.vue | 35 - .../pages/base/TutorReviewerBaseLayout.vue | 79 - .../src/pages/reviewer/ReviewerLayout.vue | 52 - .../src/pages/reviewer/ReviewerStartPage.vue | 93 - .../pages/reviewer/StudentOverviewPage.vue | 74 - .../src/pages/reviewer/TutorOverviewPage.vue | 24 - .../src/pages/student/StudentLayout.vue | 95 - .../src/pages/student/StudentPage.vue | 47 - .../pages/student/StudentSubmissionPage.vue | 195 - .../frontend/src/pages/tutor/TutorLayout.vue | 37 - .../src/pages/tutor/TutorStartPage.vue | 39 - grady/frontend/src/router/index.ts | 191 - grady/frontend/src/shims-tsx.d.ts | 14 - grady/frontend/src/shims-vue.d.ts | 4 - grady/frontend/src/store/actions.ts | 103 - grady/frontend/src/store/getters.ts | 30 - grady/frontend/src/store/grady_speak.ts | 25 - .../frontend/src/store/modules/assignments.ts | 193 - .../src/store/modules/authentication.ts | 143 - grady/frontend/src/store/modules/config.ts | 61 - .../src/store/modules/feedback-labels.ts | 60 - .../modules/feedback_list/feedback-table.ts | 108 - .../src/store/modules/student-page.ts | 92 - .../src/store/modules/submission-notes.ts | 266 - .../src/store/modules/tutor-overview.ts | 71 - grady/frontend/src/store/modules/ui.ts | 38 - grady/frontend/src/store/mutations.ts | 85 - grady/frontend/src/store/store.ts | 94 - grady/frontend/src/util/form-rules.ts | 5 - grady/frontend/src/util/helpers.ts | 173 - grady/frontend/src/util/interceptor.ts | 23 - grady/frontend/src/util/shortkeys.ts | 26 - grady/frontend/tsconfig.json | 42 - grady/frontend/vue.config.js | 23 - grady/frontend/yarn.lock | 8283 ----------- grady/functional_tests/.gitignore | 3 - grady/functional_tests/__init__.py | 0 grady/functional_tests/data/hektor.json | 36 - grady/functional_tests/test_auto_logout.py | 66 - grady/functional_tests/test_export_modal.py | 143 - .../test_feedback_creation.py | 357 - .../test_feedback_label_system.py | 386 - .../functional_tests/test_feedback_update.py | 80 - grady/functional_tests/test_front_pages.py | 100 - grady/functional_tests/test_import.py | 45 - grady/functional_tests/test_login_page.py | 160 - grady/functional_tests/test_multiple_exams.py | 161 - .../test_solution_comments.py | 141 - grady/functional_tests/util.py | 221 - grady/grady/settings/__init__.py | 8 - grady/grady/settings/default.py | 230 - grady/grady/settings/live.py | 70 - grady/grady/settings/test.py | 4 - grady/grady/settings/url_hack.py | 17 - grady/grady/urls.py | 16 - grady/grady/wsgi.py | 16 - grady/manage.py | 22 - grady/settings/live.py | 4 +- grady/setup.cfg | 7 - grady/swagger-api-specification.json | 1 - grady/util/__init__.py | 0 grady/util/factories.py | 525 - grady/util/factory_boys.py | 115 - grady/util/format_index.py | 16 - grady/util/importer.py | 225 - grady/util/messages.py | 26 - grady/yarn.lock | 4 - 268 files changed, 80 insertions(+), 44161 deletions(-) delete mode 100644 grady/.coveragerc delete mode 100644 grady/.dockerignore delete mode 100644 grady/.editorconfig delete mode 100644 grady/.gitignore delete mode 100644 grady/.gitlab-ci.yml delete mode 100644 grady/.gitlab/issue_templates/Bug.md delete mode 100644 grady/.gitlab/issue_templates/Feature.md delete mode 100644 grady/.pre-commit-config.yaml delete mode 100644 grady/.pylintrc delete mode 100644 grady/Dockerfile delete mode 100644 grady/LICENSE delete mode 100644 grady/Makefile delete mode 100644 grady/Pipfile delete mode 100644 grady/Pipfile.lock delete mode 100644 grady/README.md delete mode 100644 grady/core/__init__.py delete mode 100644 grady/core/admin.py delete mode 100644 grady/core/apps.py delete mode 100644 grady/core/management/commands/extractsubmissions.py delete mode 100644 grady/core/management/commands/importer.py delete mode 100644 grady/core/management/commands/maketestdata.py delete mode 100644 grady/core/management/commands/replaceusernames.py delete mode 100644 grady/core/management/commands/setstudentpasswords.py delete mode 100644 grady/core/management/commands/usermod.py delete mode 100644 grady/core/migrations/0001_initial.py delete mode 100644 grady/core/migrations/0002_auto_20191202_1018.py delete mode 100644 grady/core/migrations/0003_auto_20191203_1445.py delete mode 100644 grady/core/migrations/0004_feedback_modified.py delete mode 100644 grady/core/migrations/0005_auto_20200707_1456.py delete mode 100644 grady/core/migrations/0005_auto_20200929_1202.py delete mode 100644 grady/core/migrations/0006_auto_20200810_1115.py delete mode 100644 grady/core/migrations/0006_auto_20201027_1234.py delete mode 100644 grady/core/migrations/0007_auto_20200922_1026.py delete mode 100644 grady/core/migrations/0008_auto_20200922_1148.py delete mode 100644 grady/core/migrations/0009_submissiontype_exam_type.py delete mode 100644 grady/core/migrations/0010_group_examtype.py delete mode 100644 grady/core/migrations/0011_auto_20201103_1211.py delete mode 100644 grady/core/migrations/0012_auto_20201103_1228.py delete mode 100644 grady/core/migrations/0013_auto_20201103_1248.py delete mode 100644 grady/core/migrations/0014_merge_20201123_1252.py delete mode 100644 grady/core/migrations/0015_group_exam_type.py delete mode 100644 grady/core/migrations/0016_auto_20210902_1140.py delete mode 100644 grady/core/migrations/__init__.py delete mode 100644 grady/core/models/__init__.py delete mode 100644 grady/core/models/assignment.py delete mode 100644 grady/core/models/exam_type.py delete mode 100644 grady/core/models/feedback.py delete mode 100644 grady/core/models/group.py delete mode 100644 grady/core/models/label.py delete mode 100644 grady/core/models/student_info.py delete mode 100644 grady/core/models/submission.py delete mode 100644 grady/core/models/submission_type.py delete mode 100644 grady/core/models/test.py delete mode 100644 grady/core/models/user_account.py delete mode 100644 grady/core/permissions.py delete mode 100644 grady/core/serializers/__init__.py delete mode 100644 grady/core/serializers/assignment.py delete mode 100644 grady/core/serializers/common_serializers.py delete mode 100644 grady/core/serializers/feedback.py delete mode 100644 grady/core/serializers/generic.py delete mode 100644 grady/core/serializers/label.py delete mode 100644 grady/core/serializers/student.py delete mode 100644 grady/core/serializers/submission.py delete mode 100644 grady/core/serializers/submission_type.py delete mode 100644 grady/core/serializers/tutor.py delete mode 100644 grady/core/signals.py delete mode 100644 grady/core/templates/index.html delete mode 100644 grady/core/tests/__init__.py delete mode 100644 grady/core/tests/test_access_rights.py delete mode 100644 grady/core/tests/test_assignment_views.py delete mode 100644 grady/core/tests/test_auth.py delete mode 100644 grady/core/tests/test_commands.py delete mode 100644 grady/core/tests/test_configuration_viewset.py delete mode 100644 grady/core/tests/test_examlist.py delete mode 100644 grady/core/tests/test_export.py delete mode 100644 grady/core/tests/test_factory.py delete mode 100644 grady/core/tests/test_feedback.py delete mode 100644 grady/core/tests/test_functional_views.py delete mode 100644 grady/core/tests/test_import_views.py delete mode 100644 grady/core/tests/test_labels.py delete mode 100644 grady/core/tests/test_student_page.py delete mode 100644 grady/core/tests/test_student_reviewer_viewset.py delete mode 100644 grady/core/tests/test_submissiontypeview.py delete mode 100644 grady/core/tests/test_tutor_api_endpoints.py delete mode 100644 grady/core/tests/test_user_account_views.py delete mode 100644 grady/core/urls.py delete mode 100644 grady/core/views/__init__.py delete mode 100644 grady/core/views/assignment.py delete mode 100644 grady/core/views/common_views.py delete mode 100644 grady/core/views/export.py delete mode 100644 grady/core/views/feedback.py delete mode 100644 grady/core/views/group.py delete mode 100644 grady/core/views/importer.py delete mode 100644 grady/core/views/label.py delete mode 100644 grady/core/views/util.py delete mode 100755 grady/deploy.sh delete mode 100644 grady/docker-compose.yml delete mode 100644 grady/docs/Database Design/Entity Relation Model.erdplus delete mode 100644 grady/docs/Database Design/Relational Schema.erdplus delete mode 100644 grady/docs/Database Design/er-model.graphml delete mode 100644 grady/docs/Database Design/erdplus-diagram-pdf-export.pdf delete mode 100644 grady/docs/Database Design/erdplus-er-model-export.pdf delete mode 100644 grady/docs/core_uml.png delete mode 100644 grady/docs/deployment.md delete mode 100644 grady/docs/feedback.api.json delete mode 100644 grady/frontend/.browserslistrc delete mode 100644 grady/frontend/.eslintrc.js delete mode 100644 grady/frontend/.gitignore delete mode 100644 grady/frontend/.postcssrc.js delete mode 100644 grady/frontend/@types/v-clipboard/index.d.ts delete mode 100644 grady/frontend/README.md delete mode 100644 grady/frontend/nightwatch.json delete mode 100644 grady/frontend/nightwatch_globals.js delete mode 100644 grady/frontend/package-lock.json delete mode 100644 grady/frontend/package.json delete mode 100644 grady/frontend/src/App.vue delete mode 100644 grady/frontend/src/api.ts delete mode 100644 grady/frontend/src/assets/brand.svg delete mode 100644 grady/frontend/src/assets/fonts.css delete mode 100644 grady/frontend/src/assets/fonts/Material-Icons.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-black.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-bold.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-light.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-medium.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-regular.woff2 delete mode 100644 grady/frontend/src/assets/fonts/roboto-thin.woff2 delete mode 100644 grady/frontend/src/assets/material-icons.css delete mode 100644 grady/frontend/src/class-component-hooks.ts delete mode 100644 grady/frontend/src/components/AutoLogout.vue delete mode 100644 grady/frontend/src/components/BaseLayout.vue delete mode 100644 grady/frontend/src/components/ChangeLog.vue delete mode 100644 grady/frontend/src/components/CorrectionStatistics.vue delete mode 100644 grady/frontend/src/components/FreeLocksButton.vue delete mode 100644 grady/frontend/src/components/GDPRNotice.vue delete mode 100644 grady/frontend/src/components/ImportDialog.vue delete mode 100644 grady/frontend/src/components/InstanceActions.vue delete mode 100644 grady/frontend/src/components/LabelStatistics.vue delete mode 100644 grady/frontend/src/components/MathRenderer.vue delete mode 100644 grady/frontend/src/components/PasswordChangeDialog.vue delete mode 100644 grady/frontend/src/components/RegisterDialog.vue delete mode 100644 grady/frontend/src/components/SubmissionTests.vue delete mode 100644 grady/frontend/src/components/TwoPaneLayout.vue delete mode 100644 grady/frontend/src/components/UserOptions.vue delete mode 100644 grady/frontend/src/components/export/DataExport.vue delete mode 100644 grady/frontend/src/components/export/ExportDialog.vue delete mode 100644 grady/frontend/src/components/export/InstanceExport.vue delete mode 100644 grady/frontend/src/components/feedback_labels/FeedbackLabel.vue delete mode 100644 grady/frontend/src/components/feedback_labels/FeedbackLabelForm.vue delete mode 100644 grady/frontend/src/components/feedback_labels/FeedbackLabelList.vue delete mode 100644 grady/frontend/src/components/feedback_labels/FeedbackLabelTab.vue delete mode 100644 grady/frontend/src/components/feedback_labels/FeedbackLabelUpdater.vue delete mode 100644 grady/frontend/src/components/feedback_labels/LabelSelector.vue delete mode 100644 grady/frontend/src/components/feedback_list/FeedbackListHelpCard.vue delete mode 100644 grady/frontend/src/components/feedback_list/FeedbackSearchOptions.vue delete mode 100644 grady/frontend/src/components/feedback_list/FeedbackTable.vue delete mode 100644 grady/frontend/src/components/instance_config/ConfigDialog.vue delete mode 100644 grady/frontend/src/components/mixins/commentLabelSelector.ts delete mode 100644 grady/frontend/src/components/mixins/exportMixin.ts delete mode 100644 grady/frontend/src/components/student/ExamInformation.vue delete mode 100644 grady/frontend/src/components/student/SubmissionList.vue delete mode 100644 grady/frontend/src/components/student_list/StudentList.vue delete mode 100644 grady/frontend/src/components/student_list/StudentListHelpCard.vue delete mode 100644 grady/frontend/src/components/student_list/StudentListMenu.vue delete mode 100644 grady/frontend/src/components/student_list/StudentListReverseMapper.vue delete mode 100644 grady/frontend/src/components/submission_notes/CorrectionHelpCard.vue delete mode 100644 grady/frontend/src/components/submission_notes/RouteChangeConfirmation.vue delete mode 100644 grady/frontend/src/components/submission_notes/SubmissionCorrection.vue delete mode 100644 grady/frontend/src/components/submission_notes/base/BaseAnnotatedSubmission.vue delete mode 100644 grady/frontend/src/components/submission_notes/base/CommentForm.vue delete mode 100644 grady/frontend/src/components/submission_notes/base/FeedbackComment.vue delete mode 100644 grady/frontend/src/components/submission_notes/base/SubmissionLine.vue delete mode 100644 grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionBottomToolbar.vue delete mode 100644 grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue delete mode 100644 grady/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue delete mode 100644 grady/frontend/src/components/submission_type/SubmissionType.vue delete mode 100644 grady/frontend/src/components/submission_type/SubmissionTypesOverview.vue delete mode 100644 grady/frontend/src/components/submission_type/solution/Solution.vue delete mode 100644 grady/frontend/src/components/submission_type/solution/SolutionComment.vue delete mode 100644 grady/frontend/src/components/subscriptions/SubscriptionEnded.vue delete mode 100644 grady/frontend/src/components/subscriptions/SubscriptionForList.vue delete mode 100644 grady/frontend/src/components/subscriptions/SubscriptionList.vue delete mode 100644 grady/frontend/src/components/subscriptions/SubscriptionsForStage.vue delete mode 100644 grady/frontend/src/components/tutor_list/RoleSelect.vue delete mode 100644 grady/frontend/src/components/tutor_list/TutorList.vue delete mode 100644 grady/frontend/src/main.ts delete mode 100644 grady/frontend/src/models.ts delete mode 100644 grady/frontend/src/pages/ExamSelectionPage.vue delete mode 100644 grady/frontend/src/pages/LayoutSelector.vue delete mode 100644 grady/frontend/src/pages/Login.vue delete mode 100644 grady/frontend/src/pages/PageNotFound.vue delete mode 100644 grady/frontend/src/pages/StartPageSelector.vue delete mode 100644 grady/frontend/src/pages/Statistics.vue delete mode 100644 grady/frontend/src/pages/StudentSubmissionSideView.vue delete mode 100644 grady/frontend/src/pages/SubscriptionWorkPage.vue delete mode 100644 grady/frontend/src/pages/base/FeedbackHistoryPage.vue delete mode 100644 grady/frontend/src/pages/base/TutorReviewerBaseLayout.vue delete mode 100644 grady/frontend/src/pages/reviewer/ReviewerLayout.vue delete mode 100644 grady/frontend/src/pages/reviewer/ReviewerStartPage.vue delete mode 100644 grady/frontend/src/pages/reviewer/StudentOverviewPage.vue delete mode 100644 grady/frontend/src/pages/reviewer/TutorOverviewPage.vue delete mode 100644 grady/frontend/src/pages/student/StudentLayout.vue delete mode 100644 grady/frontend/src/pages/student/StudentPage.vue delete mode 100644 grady/frontend/src/pages/student/StudentSubmissionPage.vue delete mode 100644 grady/frontend/src/pages/tutor/TutorLayout.vue delete mode 100644 grady/frontend/src/pages/tutor/TutorStartPage.vue delete mode 100644 grady/frontend/src/router/index.ts delete mode 100644 grady/frontend/src/shims-tsx.d.ts delete mode 100644 grady/frontend/src/shims-vue.d.ts delete mode 100644 grady/frontend/src/store/actions.ts delete mode 100644 grady/frontend/src/store/getters.ts delete mode 100644 grady/frontend/src/store/grady_speak.ts delete mode 100644 grady/frontend/src/store/modules/assignments.ts delete mode 100644 grady/frontend/src/store/modules/authentication.ts delete mode 100644 grady/frontend/src/store/modules/config.ts delete mode 100644 grady/frontend/src/store/modules/feedback-labels.ts delete mode 100644 grady/frontend/src/store/modules/feedback_list/feedback-table.ts delete mode 100644 grady/frontend/src/store/modules/student-page.ts delete mode 100644 grady/frontend/src/store/modules/submission-notes.ts delete mode 100644 grady/frontend/src/store/modules/tutor-overview.ts delete mode 100644 grady/frontend/src/store/modules/ui.ts delete mode 100644 grady/frontend/src/store/mutations.ts delete mode 100644 grady/frontend/src/store/store.ts delete mode 100644 grady/frontend/src/util/form-rules.ts delete mode 100644 grady/frontend/src/util/helpers.ts delete mode 100644 grady/frontend/src/util/interceptor.ts delete mode 100644 grady/frontend/src/util/shortkeys.ts delete mode 100644 grady/frontend/tsconfig.json delete mode 100644 grady/frontend/vue.config.js delete mode 100644 grady/frontend/yarn.lock delete mode 100644 grady/functional_tests/.gitignore delete mode 100644 grady/functional_tests/__init__.py delete mode 100644 grady/functional_tests/data/hektor.json delete mode 100644 grady/functional_tests/test_auto_logout.py delete mode 100644 grady/functional_tests/test_export_modal.py delete mode 100644 grady/functional_tests/test_feedback_creation.py delete mode 100644 grady/functional_tests/test_feedback_label_system.py delete mode 100644 grady/functional_tests/test_feedback_update.py delete mode 100644 grady/functional_tests/test_front_pages.py delete mode 100644 grady/functional_tests/test_import.py delete mode 100644 grady/functional_tests/test_login_page.py delete mode 100644 grady/functional_tests/test_multiple_exams.py delete mode 100644 grady/functional_tests/test_solution_comments.py delete mode 100644 grady/functional_tests/util.py delete mode 100644 grady/grady/settings/__init__.py delete mode 100644 grady/grady/settings/default.py delete mode 100644 grady/grady/settings/live.py delete mode 100644 grady/grady/settings/test.py delete mode 100644 grady/grady/settings/url_hack.py delete mode 100644 grady/grady/urls.py delete mode 100644 grady/grady/wsgi.py delete mode 100755 grady/manage.py delete mode 100644 grady/setup.cfg delete mode 100644 grady/swagger-api-specification.json delete mode 100644 grady/util/__init__.py delete mode 100644 grady/util/factories.py delete mode 100644 grady/util/factory_boys.py delete mode 100644 grady/util/format_index.py delete mode 100644 grady/util/importer.py delete mode 100644 grady/util/messages.py delete mode 100644 grady/yarn.lock diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 095a9f5a..a235b565 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,12 +82,10 @@ build_test_image: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker pull $DEV_IMAGE_BASE || true - docker build --network=host --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE_BASE --target node . - - docker push $DEV_IMAGE_BASE - - docker image prune --filter label=stage=intermediate - docker pull $DEV_IMAGE || true - docker build --network=host --cache-from $DEV_IMAGE --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE . + - docker push $DEV_IMAGE_BASE - docker push $DEV_IMAGE - - docker image prune --filter label=stage=intermediate tags: - docker interruptible: true diff --git a/frontend/package.json b/frontend/package.json index ef5d5cd8..6ed231a3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,6 @@ "axios": "^0.18.0", "file-saver": "^2.0.2", "highlight.js": "^9.12.0", - "marked": "^4.0.18", "v-clipboard": "^2.0.1", "vue": "^2.6.12", "vue-class-component": "^6.0.0", diff --git a/frontend/src/components/submission_notes/CorrectionHelpCard.vue b/frontend/src/components/submission_notes/CorrectionHelpCard.vue index 21783f53..0be45efe 100644 --- a/frontend/src/components/submission_notes/CorrectionHelpCard.vue +++ b/frontend/src/components/submission_notes/CorrectionHelpCard.vue @@ -5,13 +5,6 @@ <h3>Tips on using the correction interface</h3> </v-card-title> <v-card-text> - Markdown is rendered by default. <br> - Select the math button to choose to have math rendered or not. <br> - In case you need the un-rendered markdown, click the "Copy to Clipboard" button. <br> - Cick on the individual line numbers in order to add comments for a specific line. <br> - After adding feedback to a line, clicking the "Hide feedback" button will hide it or show it. <br> - When feedback is hidden, the lines that contain feedback will be highlighted in red. <br> - <!-- ------THE OLD FLAVOR TEXT, SAVED IN CASE IT IS NEEDED FOR SOME REASON ------- Never trade an ale. The sea-dog leads with yellow fever, crush the captain's quarters until it waves.<br> Ho-ho-ho! malaria of life.<br> @@ -26,7 +19,7 @@ The scallywag loots with passion, crush the bikini atoll before it falls.<br> The sea leads with treasure, ransack the brig until it dies.<br> The parrot robs with desolation, view the seychelles before it screams.<br> - The warm anchor quirky blows the landlubber.<br> --> + The warm anchor quirky blows the landlubber.<br> </v-card-text> </v-card> </template> diff --git a/frontend/src/components/submission_notes/base/SubmissionLine.vue b/frontend/src/components/submission_notes/base/SubmissionLine.vue index 48d25b9f..ee553796 100644 --- a/frontend/src/components/submission_notes/base/SubmissionLine.vue +++ b/frontend/src/components/submission_notes/base/SubmissionLine.vue @@ -16,12 +16,7 @@ </td> <td class="code-cell-content pl-2"> <!-- eslint-disable-next-line --> - <span - :key="key" - class="code-line" - v-html="html" - /> - + <span class="code-line" :key="key" v-html="code"/> <slot /> </td> </div> @@ -51,9 +46,7 @@ export default { }, data () { return { - key: 0, - html: '', - markdowned: true + key: 0 } }, computed: { @@ -65,10 +58,6 @@ export default { subNotesEventBus.$on('resetSubmission', () => { this.key++ }) - const { marked } = require('marked') - this.html = marked.parse(this.code) - - }, methods: { toggleEditor () { @@ -88,7 +77,7 @@ export default { } .code-line { - white-space: normal; + white-space: pre-wrap; font-family: monospace; } diff --git a/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue b/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue index c576b0f0..4f42298d 100644 --- a/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue +++ b/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue @@ -24,32 +24,11 @@ <v-spacer /> <toggle-feedback-visibility-button /> <div v-if="isMarkdown"> - <v-btn - v-if="mathIsRendered" - large - text - color="info" - title="Math is being rendered" - :style="{backgroundColor: '#cce7ff'}" - @click="$emit('input', !mathIsRendered)" - > - <v-icon> - functions - </v-icon> - </v-btn> - <v-btn - v-else - large - text - color="grey" - title="Math is not being rendered" - @click="$emit('input', !mathIsRendered)" - > - <v-icon> - functions - </v-icon> + <v-btn @click="$emit('input', !mathIsRendered)"> + {{ mathIsRendered ? 'Reset Math' : 'Render Math' }} </v-btn> </div> + <v-spacer /> <v-tooltip v-if="sourceCodeAvailable" top @@ -80,7 +59,6 @@ <v-btn v-if="showClipboard" icon - text v-on="on" @click="copyToClipboard" > diff --git a/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue b/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue index 05b5587a..453a5ea8 100644 --- a/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue +++ b/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue @@ -1,32 +1,16 @@ <template> <v-btn - v-if="showFeedback" id="feedback-visibility-toggle" - class="me-3" text color="info" - large - title="Feedback is on" - :style="{backgroundColor: '#cce7ff'}" @click="showFeedback = !showFeedback" > - <v-icon> - rate_review - </v-icon> - </v-btn> - <v-btn - v-else - id="feedback-visibility-toggle" - class="me-3" - text - large - color="grey" - title="Feedback is off" - @click="showFeedback = !showFeedback" - > - <v-icon> - rate_review - </v-icon> + <div v-if="showFeedback"> + Hide Feedback + </div> + <div v-else> + Show Feedback + </div> </v-btn> </template> diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 9e0f0a76..f13a22aa 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2416,7 +2416,7 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: +domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -2569,6 +2569,26 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4278,6 +4298,48 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -4772,11 +4834,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -marked@^4.0.18: - version "4.0.18" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.18.tgz#cd0ac54b2e5610cfb90e8fd46ccaa8292c9ed569" - integrity sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" diff --git a/grady/.coveragerc b/grady/.coveragerc deleted file mode 100644 index f578fcfa..00000000 --- a/grady/.coveragerc +++ /dev/null @@ -1,14 +0,0 @@ -[run] -branch = True -source = core,util.factories -omit = - core/migrations/* - core/apps.py - core/admin.py - core/tests/* - -[report] -ignore_errors = False - -[html] -directory = public diff --git a/grady/.dockerignore b/grady/.dockerignore deleted file mode 100644 index 41a3cce3..00000000 --- a/grady/.dockerignore +++ /dev/null @@ -1,30 +0,0 @@ -# Common -.git -Dockerfile - -# Django -*/db.sqlite3 -*/__pycache__* -*.pyc -*.pyo -*.pyd -*/env* -.venv -.ipynb_checkpoints -pip-log.txt -pip-delete-this-directory.txt -.tox -.coverage -.coverage.* -.cache -coverage.xml -*,cover -*.log -static/ -public/ - - -# node -*/node_modules -*/npm-debug.log -*/dist diff --git a/grady/.editorconfig b/grady/.editorconfig deleted file mode 100644 index 73622a70..00000000 --- a/grady/.editorconfig +++ /dev/null @@ -1,37 +0,0 @@ - -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -# Python specific settigs -[*.py] -indent_style = space -indent_size = 4 -charset = utf-8 - -# html specific settigs -[*.html] -indent_style = space -indent_size = 2 -charset = utf-8 - -# Tab indentation (no size specified) -[Makefile] -indent_style = tab - -# Matches the exact files either package.json or .travis.yml -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 - -# Frontend -[*.{js,jsx,ts,tsx,vue}] -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/grady/.gitignore b/grady/.gitignore deleted file mode 100644 index efc87898..00000000 --- a/grady/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# python specific -*.DS_Store -*.egg-info -*.pot -*.py[co] -.tox/ -*.ipynb -.ipynb_checkpoints/ -__pycache__ -MANIFEST -.coverage -cache/ -.mypy_cache/ - -# Django specific -dist/ -docs/_build/ -docs/locale/ -tests/coverage_html/ -tests/.coverage -build/ -tests/report/ -*.sqlite3 -static/ - -# project specific -env-grady/ -env/ -.venv/ -scripts/ -coverage_html/ -.public/ -*.csv -.importer* -*.sublime-* -.idea/ -.vscode/ -anon-export/ -public/ -geckodriver.log -.screenshots - -# node -node_modules -secret -dump.sql -.pytest_cache/ diff --git a/grady/.gitlab-ci.yml b/grady/.gitlab-ci.yml deleted file mode 100644 index a235b565..00000000 --- a/grady/.gitlab-ci.yml +++ /dev/null @@ -1,240 +0,0 @@ -stages: - - build - - test - - build_image - - pages - - staging - -variables: - WORKON_HOME: .pipenv/venvs - PIP_CACHE_DIR: .pipenv/pipcache - DEV_IMAGE: $CI_REGISTRY_IMAGE/dev-image - DEV_IMAGE_BASE: $CI_REGISTRY_IMAGE/dev-image-base - RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG - DOCKER_DRIVER: overlay2 - DOCKER_TLS_CERTDIR: "" - POSTGRES_DB: $CI_POSTGRES_DB - POSTGRES_USER: $CI_POSTGRES_USER - POSTGRES_PASSWORD: $CI_POSTGRES_PASSWORD - -include: - template: Dependency-Scanning.gitlab-ci.yml - -cache: - key: "pip-cache" - paths: - - "$PIP_CACHE_DIR" - - # ========================== Build Testing section =========================== # -build_test_env: - image: python:3.8 - stage: build - script: - - pip install pipenv - - pipenv install --dev - artifacts: - paths: - - .pipenv - expire_in: 1 day - cache: - key: "$CI_PIPELINE_ID" - paths: - - "$WORKON_HOME" - tags: - - docker - interruptible: true - - -build_frontend: - image: node:fermium - stage: build - variables: - VUE_APP_CI: 'true' - script: - - cd frontend - - yarn - - yarn build - artifacts: - paths: - - frontend/dist - - frontend/node_modules/ - expire_in: 1 days - cache: - key: "$CI_PIPELINE_ID" - paths: - - frontend/dist - - frontend/node_modules/ - tags: - - docker - interruptible: true - -build_test_image: - image: docker:latest - stage: build - only: - - branches - services: - - docker:dind - variables: - DOCKER_HOST: tcp://docker:2375/ - DOCKER_DRIVER: overlay2 - script: - - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker pull $DEV_IMAGE_BASE || true - - docker build --network=host --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE_BASE --target node . - - docker pull $DEV_IMAGE || true - - docker build --network=host --cache-from $DEV_IMAGE --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE . - - docker push $DEV_IMAGE_BASE - - docker push $DEV_IMAGE - tags: - - docker - interruptible: true - -# ============================== Testing section ============================= # -# ----------------------------- Backend subsection --------------------------- # -.test_template_virtualenv: &test_definition_virtualenv - image: python:3.8 - before_script: - - pip install pipenv - - VENV=$(pipenv --venv) - - source $VENV/bin/activate - dependencies: - - build_test_env - cache: - key: "$CI_PIPELINE_ID" - tags: - - docker - interruptible: true - needs: - - build_test_env - -test_pytest: - <<: *test_definition_virtualenv - stage: test - services: - - postgres:13 - script: - - pytest --cov --ds=grady.settings.test core/tests - artifacts: - paths: - - .coverage - cache: - key: "$CI_JOB_NAME" - paths: - - .coverage - -test_flake8: - <<: *test_definition_virtualenv - stage: test - script: - - flake8 --exclude=migrations core util functional_tests - -# ----------------------------- Frontend subsection -------------------------- # -.test_template_frontend: &test_definition_frontend - image: docker.gitlab.gwdg.de/grady-corp/python-geckodriver:master - before_script: - - pip install pipenv - - VENV=$(pipenv --venv) - - source $VENV/bin/activate - dependencies: - - build_test_env - - build_frontend - cache: - key: "$CI_PIPELINE_ID" - tags: - - docker - interruptible: true - needs: - - build_frontend - - build_test_env - -test_frontend: - <<: *test_definition_frontend - stage: test - services: - - postgres:13 - script: - - cp frontend/dist/index.html core/templates - - python util/format_index.py - - python manage.py collectstatic --no-input - - HEADLESS_TESTS=True pytest --ds=grady.settings.test functional_tests - artifacts: - paths: - - functional_tests/screenshots/ - when: on_failure - expire_in: 30 days - retry: 2 - -# =========================== Build Image section ============================ # - -build_release_image: - image: docker:latest - stage: build_image - only: - - tags - services: - - docker:dind - variables: - DOCKER_HOST: tcp://docker:2375/ - DOCKER_DRIVER: overlay2 - script: - - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker pull $DEV_IMAGE_BASE || true - - docker pull $DEV_IMAGE || true - - docker build --cache-from $DEV_IMAGE --cache-from $DEV_IMAGE_BASE -t $RELEASE_IMAGE . - - docker push $RELEASE_IMAGE - tags: - - docker - -# =========================== Gitlab pages section =========================== # -pages: - <<: *test_definition_virtualenv - stage: - pages - script: - - coverage html -d public - dependencies: - - test_pytest - - build_test_env - artifacts: - paths: - - public - only: - - master - interruptible: true - needs: - - test_pytest - - build_test_env - -# ============================== Staging section ============================= # -.staging_template: &staging_definition - stage: staging - image: docker:latest - only: - - master - when: manual - before_script: - - apk add --update py-pip && pip install docker-compose - tags: - - grady-staging - -staging: - <<: *staging_definition - environment: - name: review/$CI_COMMIT_REF_NAME - url: https://staging.grady.janmax.org - on_stop: staging_stop - script: - - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker-compose stop - - docker-compose pull - - docker-compose up -d --force-recreate - -staging_stop: - <<: *staging_definition - script: - - docker-compose rm --force --stop - when: manual - environment: - name: review/$CI_COMMIT_REF_NAME - action: stop diff --git a/grady/.gitlab/issue_templates/Bug.md b/grady/.gitlab/issue_templates/Bug.md deleted file mode 100644 index 34f76c3a..00000000 --- a/grady/.gitlab/issue_templates/Bug.md +++ /dev/null @@ -1,28 +0,0 @@ -#### Summary - - - -#### Steps to reproduce - - - -#### Example Project - - - -#### What is the current bug behavior? - - - -#### What is the expected correct behavior? - - - -#### Relevant logs and/or screenshots - - - -#### Possible fixes - -/label Bug -/label ~"Needs assignment" diff --git a/grady/.gitlab/issue_templates/Feature.md b/grady/.gitlab/issue_templates/Feature.md deleted file mode 100644 index 000831fe..00000000 --- a/grady/.gitlab/issue_templates/Feature.md +++ /dev/null @@ -1,14 +0,0 @@ -### Description / Overview - -### Use cases - -(Who is this for?) - -### Links / references - -### Feature checklist - -(Make sure these are completed before closing the issue, with a link to the -relevant commit.) - -/label ~"Feature proposal" diff --git a/grady/.pre-commit-config.yaml b/grady/.pre-commit-config.yaml deleted file mode 100644 index 16e0bdac..00000000 --- a/grady/.pre-commit-config.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- repo: git@github.com:pre-commit/pre-commit-hooks - sha: v1.1.1 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: debug-statements - - id: flake8 - args: - - --exclude=*/migrations/*,docs/*,grady/* - - id: check-added-large-files diff --git a/grady/.pylintrc b/grady/.pylintrc deleted file mode 100644 index 2bfbcef1..00000000 --- a/grady/.pylintrc +++ /dev/null @@ -1,20 +0,0 @@ -[MASTER] - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore=CVS, migrations, static, env, docs, manage.py - -# Use multiple processes to speed up Pylint. -jobs=4 - -# Pickle collected data for later comparisons. -persistent=yes - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages -suggestion-mode=yes - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins=pylint_django - diff --git a/grady/Dockerfile b/grady/Dockerfile deleted file mode 100644 index 36d0e47d..00000000 --- a/grady/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -FROM node:fermium as node - -WORKDIR /app/ -COPY frontend/package.json . -COPY frontend/yarn.lock . -RUN yarn - -# CACHED -COPY frontend/ . -RUN yarn build - -FROM alpine:edge - -WORKDIR /code - -# This set is needed otherwise the postgres driver wont work -RUN apk update \ - && apk add build-base gcc curl libzmq musl-dev zeromq-dev python3 python3-dev py3-pip \ - && apk add --no-cache postgresql-dev git - -# Create symlink for python -RUN ln -sf python3 /usr/bin/python - -RUN pip install pipenv -COPY Pipfile . -COPY Pipfile.lock . -RUN pipenv install --system --deploy && rm -rf /root/.cache - -# CACHED -COPY . . -COPY --from=node /app/dist /code/frontend/dist -COPY --from=node /app/dist/index.html /code/core/templates/index.html - -ENV PYTHONUNBUFFERED 1 -RUN python util/format_index.py -RUN python manage.py collectstatic --noinput - -# Reduces image size -RUN apk del build-base musl-dev python3-dev zeromq-dev - -CMD ["./deploy.sh"] diff --git a/grady/LICENSE b/grady/LICENSE deleted file mode 100644 index 9b744fc0..00000000 --- a/grady/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Jan Maximilian Michal - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/grady/Makefile b/grady/Makefile deleted file mode 100644 index ba608333..00000000 --- a/grady/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -APP_LIST ?= core grady util -DB_NAME = postgres - -.ONESHELL: - -.PHONY: run install migrations-check isort isort-check test teste2e - -run: - python manage.py runserver 0.0.0.0:8000 - -migrations-check: - python manage.py makemigrations --check --dry-run - -isort: - isort -rc $(APP_LIST) - -isort-check: - isort -c -rc $(APP_LIST) - -migrate: - python manage.py migrate - -test: - pytest --ds=grady.settings core/tests - -frontend/dist: $(shell find frontend/src -type f) - yarn --cwd frontend build - -teste2e: frontend/dist - set -e - cp frontend/dist/index.html core/templates - trap "git checkout core/templates/index.html" EXIT - python util/format_index.py - python manage.py collectstatic --no-input - HEADLESS_TESTS=$(headless) pytest --ds=grady.settings $(path) - -coverage: - set -e - DJANGO_SETTINGS_MODULE=grady.settings pytest --cov - coverage html - -db: - docker run -d --name $(DB_NAME) -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:13 diff --git a/grady/Pipfile b/grady/Pipfile deleted file mode 100644 index cf502961..00000000 --- a/grady/Pipfile +++ /dev/null @@ -1,40 +0,0 @@ -[[source]] -name = "pypi" -url = "https://pypi.org/simple" -verify_ssl = true - -[dev-packages] -flake8 = "~=3.9.0" -pre-commit = "~=1.13.0" -pytest = "~=6.1.0" -pytest-cov = "~=2.10.1" -pytest-xdist = "~=2.1.0" -pytest-django = "~=3.10.0" -selenium = "~=3.141.0" -factory-boy = "~=3.0.1" -Faker = "~=4.1.3" - -[packages] -pyzmq = "~=22.3.0" -django-cors-headers = "~=3.5.0" -django-extensions = "~=3.0.9" -djangorestframework-jwt = "~=1.11.0" -djangorestframework = "~=3.11.0" -django-silk = "~=4.1.0" -djangorestframework-camel-case = {git = "https://gitlab.gwdg.de/grady-corp/djangorestframework-camel-case.git"} -drf-yasg = "~=1.17.1" -gunicorn = "~=20.0.4" -psycopg2-binary = "~=2.8.6" -whitenoise = "~=5.2.0" -xlrd = "~=1.2.0" -JSON-log-formatter = "~=0.3.0" -xkcdpass = "~=1.17.3" -django-constance = {extras = ["database"],version = "~=2.7.0"} -semver = "~=2.10.2" -Django = "~=3.1.1" -nbformat = "~=5.0.7" -nbconvert = "~=6.4.5" - - -[requires] -python_version = "3.8" diff --git a/grady/Pipfile.lock b/grady/Pipfile.lock deleted file mode 100644 index 90161f53..00000000 --- a/grady/Pipfile.lock +++ /dev/null @@ -1,1129 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "29b8205fd2ddf3d002a61251a9f6750cc38666561e5cbf5350ff9f3403079c7d" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "asgiref": { - "hashes": [ - "sha256:45a429524fba18aba9d512498b19d220c4d628e75b40cf5c627524dbaebc5cc1", - "sha256:fddeea3c53fa99d0cdb613c3941cc6e52d822491fc2753fba25768fb5bf4e865" - ], - "markers": "python_version >= '3.7'", - "version": "==3.5.1" - }, - "attrs": { - "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" - }, - "autopep8": { - "hashes": [ - "sha256:44f0932855039d2c15c4510d6df665e4730f2b8582704fa48f9c55bd3e17d979", - "sha256:ed77137193bbac52d029a52c59bec1b0629b5a186c495f1eb21b126ac466083f" - ], - "version": "==1.6.0" - }, - "beautifulsoup4": { - "hashes": [ - "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30", - "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693" - ], - "markers": "python_version >= '3.6'", - "version": "==4.11.1" - }, - "bleach": { - "hashes": [ - "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1", - "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565" - ], - "markers": "python_version >= '3.7'", - "version": "==5.0.0" - }, - "certifi": { - "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" - ], - "version": "==2021.10.8" - }, - "charset-normalizer": { - "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" - ], - "markers": "python_version >= '3'", - "version": "==2.0.12" - }, - "coreapi": { - "hashes": [ - "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb", - "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3" - ], - "version": "==2.3.3" - }, - "coreschema": { - "hashes": [ - "sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f", - "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607" - ], - "version": "==0.0.4" - }, - "defusedxml": { - "hashes": [ - "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", - "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.7.1" - }, - "django": { - "hashes": [ - "sha256:0fabc786489af16ad87a8c170ba9d42bfd23f7b699bd5ef05675864e8d012859", - "sha256:72a4a5a136a214c39cf016ccdd6b69e2aa08c7479c66d93f3a9b5e4bb9d8a347" - ], - "index": "pypi", - "version": "==3.1.14" - }, - "django-constance": { - "extras": [ - "database" - ], - "hashes": [ - "sha256:62bdb1a3aef20d80e18d832b30ffcc6626762c538817a5a3571bcefa5a55c849", - "sha256:866a7356d3f8ee08374285e97c1edae70edaa3df6eaf7b2e9699f7cde8a88f3b" - ], - "index": "pypi", - "version": "==2.7.0" - }, - "django-cors-headers": { - "hashes": [ - "sha256:9322255c296d5f75089571f29e520c83ff9693df17aa3cf9f6a4bea7c6740169", - "sha256:db82b2840f667d47872ae3e4a4e0a0d72fbecb42779b8aa233fa8bb965f7836a" - ], - "index": "pypi", - "version": "==3.5.0" - }, - "django-extensions": { - "hashes": [ - "sha256:6809c89ca952f0e08d4e0766bc0101dfaf508d7649aced1180c091d737046ea7", - "sha256:dc663652ac9460fd06580a973576820430c6d428720e874ae46b041fa63e0efa" - ], - "index": "pypi", - "version": "==3.0.9" - }, - "django-picklefield": { - "hashes": [ - "sha256:15ccba592ca953b9edf9532e64640329cd47b136b7f8f10f2939caa5f9ce4287", - "sha256:3c702a54fde2d322fe5b2f39b8f78d9f655b8f77944ab26f703be6c0ed335a35" - ], - "version": "==3.0.1" - }, - "django-silk": { - "hashes": [ - "sha256:a331e55618fa62eaf3cf5a63f31bc1e91205efbeeca5e587c577498b0e251ed8" - ], - "index": "pypi", - "version": "==4.1.0" - }, - "djangorestframework": { - "hashes": [ - "sha256:5cc724dc4b076463497837269107e1995b1fbc917468d1b92d188fd1af9ea789", - "sha256:a5967b68a04e0d97d10f4df228e30f5a2d82ba63b9d03e1759f84993b7bf1b53" - ], - "index": "pypi", - "version": "==3.11.2" - }, - "djangorestframework-camel-case": { - "git": "https://gitlab.gwdg.de/grady-corp/djangorestframework-camel-case.git", - "ref": "39ae6bbde19d3fadc5b60505395c51f44b22a069" - }, - "djangorestframework-jwt": { - "hashes": [ - "sha256:5efe33032f3a4518a300dc51a51c92145ad95fb6f4b272e5aa24701db67936a7", - "sha256:ab15dfbbe535eede8e2e53adaf52ef0cf018ee27dbfad10cbc4cbec2ab63d38c" - ], - "index": "pypi", - "version": "==1.11.0" - }, - "drf-yasg": { - "hashes": [ - "sha256:5572e9d5baab9f6b49318169df9789f7399d0e3c7bdac8fdb8dfccf1d5d2b1ca", - "sha256:7d7af27ad16e18507e9392b2afd6b218fbffc432ec8dbea053099a2241e184ff" - ], - "index": "pypi", - "version": "==1.17.1" - }, - "entrypoints": { - "hashes": [ - "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", - "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" - ], - "markers": "python_version >= '3.6'", - "version": "==0.4" - }, - "gprof2dot": { - "hashes": [ - "sha256:1223189383b53dcc8ecfd45787ac48c0ed7b4dbc16ee8b88695d053eea1acabf" - ], - "version": "==2021.2.21" - }, - "gunicorn": { - "hashes": [ - "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626", - "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c" - ], - "index": "pypi", - "version": "==20.0.4" - }, - "idna": { - "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" - ], - "markers": "python_version >= '3'", - "version": "==3.3" - }, - "importlib-resources": { - "hashes": [ - "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3", - "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8" - ], - "markers": "python_version < '3.9'", - "version": "==5.7.1" - }, - "inflection": { - "hashes": [ - "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", - "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2" - ], - "markers": "python_version >= '3.5'", - "version": "==0.5.1" - }, - "ipython-genutils": { - "hashes": [ - "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", - "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" - ], - "version": "==0.2.0" - }, - "itypes": { - "hashes": [ - "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6", - "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1" - ], - "version": "==1.2.0" - }, - "jinja2": { - "hashes": [ - "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", - "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" - ], - "markers": "python_version >= '3.7'", - "version": "==3.1.2" - }, - "json-log-formatter": { - "hashes": [ - "sha256:03029bddba697d2f6c81419a80f1c58d3a89ae715336c6a88b370e7d2c983198" - ], - "index": "pypi", - "version": "==0.3.1" - }, - "jsonschema": { - "hashes": [ - "sha256:71b5e39324422543546572954ce71c67728922c104902cb7ce252e522235b33f", - "sha256:7c6d882619340c3347a1bf7315e147e6d3dae439033ae6383d6acb908c101dfc" - ], - "markers": "python_version >= '3.7'", - "version": "==4.5.1" - }, - "jupyter-client": { - "hashes": [ - "sha256:05d4ff6a0ade25138c6bb0fbeac7ddc26b5fe835e7dd816b64b4a45b931bdc0b", - "sha256:404abe552540aff3527e66e16beb114b6b4ff58479d51a301f4eb9701e4f52ef" - ], - "markers": "python_version >= '3.7'", - "version": "==7.3.1" - }, - "jupyter-core": { - "hashes": [ - "sha256:a6de44b16b7b31d7271130c71a6792c4040f077011961138afed5e5e73181aec", - "sha256:e7f5212177af7ab34179690140f188aa9bf3d322d8155ed972cbded19f55b6f3" - ], - "markers": "python_version >= '3.7'", - "version": "==4.10.0" - }, - "jupyterlab-pygments": { - "hashes": [ - "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f", - "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d" - ], - "markers": "python_version >= '3.7'", - "version": "==0.2.2" - }, - "markupsafe": { - "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" - ], - "markers": "python_version >= '3.7'", - "version": "==2.1.1" - }, - "mistune": { - "hashes": [ - "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e", - "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4" - ], - "version": "==0.8.4" - }, - "nbclient": { - "hashes": [ - "sha256:40c52c9b5e3c31faecaee69f202b3f53e38d7c1c563de0fadde9d7eda0fdafe8", - "sha256:47ac905af59379913c1f8f541098d2550153cf8dc58553cbe18c702b181518b0" - ], - "markers": "python_version >= '3.7'", - "version": "==0.5.13" - }, - "nbconvert": { - "hashes": [ - "sha256:21163a8e2073c07109ca8f398836e45efdba2aacea68d6f75a8a545fef070d4e", - "sha256:e01d219f55cc79f9701c834d605e8aa3acf35725345d3942e3983937f368ce14" - ], - "index": "pypi", - "version": "==6.4.5" - }, - "nbformat": { - "hashes": [ - "sha256:aa9450c16d29286dc69b92ea4913c1bffe86488f90184445996ccc03a2f60382", - "sha256:f545b22138865bfbcc6b1ffe89ed5a2b8e2dc5d4fe876f2ca60d8e6f702a30f8" - ], - "index": "pypi", - "version": "==5.0.8" - }, - "nest-asyncio": { - "hashes": [ - "sha256:b98e3ec1b246135e4642eceffa5a6c23a3ab12c82ff816a92c612d68205813b2", - "sha256:e442291cd942698be619823a17a86a5759eabe1f8613084790de189fe9e16d65" - ], - "markers": "python_version >= '3.5'", - "version": "==1.5.5" - }, - "packaging": { - "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" - ], - "markers": "python_version >= '3.6'", - "version": "==21.3" - }, - "pandocfilters": { - "hashes": [ - "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38", - "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.5.0" - }, - "psycopg2-binary": { - "hashes": [ - "sha256:0deac2af1a587ae12836aa07970f5cb91964f05a7c6cdb69d8425ff4c15d4e2c", - "sha256:0e4dc3d5996760104746e6cfcdb519d9d2cd27c738296525d5867ea695774e67", - "sha256:11b9c0ebce097180129e422379b824ae21c8f2a6596b159c7659e2e5a00e1aa0", - "sha256:15978a1fbd225583dd8cdaf37e67ccc278b5abecb4caf6b2d6b8e2b948e953f6", - "sha256:1fabed9ea2acc4efe4671b92c669a213db744d2af8a9fc5d69a8e9bc14b7a9db", - "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94", - "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52", - "sha256:6422f2ff0919fd720195f64ffd8f924c1395d30f9a495f31e2392c2efafb5056", - "sha256:6a32f3a4cb2f6e1a0b15215f448e8ce2da192fd4ff35084d80d5e39da683e79b", - "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd", - "sha256:7d92a09b788cbb1aec325af5fcba9fed7203897bbd9269d5691bb1e3bce29550", - "sha256:833709a5c66ca52f1d21d41865a637223b368c0ee76ea54ca5bad6f2526c7679", - "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83", - "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77", - "sha256:950bc22bb56ee6ff142a2cb9ee980b571dd0912b0334aa3fe0fe3788d860bea2", - "sha256:a0c50db33c32594305b0ef9abc0cb7db13de7621d2cadf8392a1d9b3c437ef77", - "sha256:a0eb43a07386c3f1f1ebb4dc7aafb13f67188eab896e7397aa1ee95a9c884eb2", - "sha256:aaa4213c862f0ef00022751161df35804127b78adf4a2755b9f991a507e425fd", - "sha256:ac0c682111fbf404525dfc0f18a8b5f11be52657d4f96e9fcb75daf4f3984859", - "sha256:ad20d2eb875aaa1ea6d0f2916949f5c08a19c74d05b16ce6ebf6d24f2c9f75d1", - "sha256:b4afc542c0ac0db720cf516dd20c0846f71c248d2b3d21013aa0d4ef9c71ca25", - "sha256:b8a3715b3c4e604bcc94c90a825cd7f5635417453b253499664f784fc4da0152", - "sha256:ba28584e6bca48c59eecbf7efb1576ca214b47f05194646b081717fa628dfddf", - "sha256:ba381aec3a5dc29634f20692349d73f2d21f17653bda1decf0b52b11d694541f", - "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729", - "sha256:c2507d796fca339c8fb03216364cca68d87e037c1f774977c8fc377627d01c71", - "sha256:cec7e622ebc545dbb4564e483dd20e4e404da17ae07e06f3e780b2dacd5cee66", - "sha256:d14b140a4439d816e3b1229a4a525df917d6ea22a0771a2a78332273fd9528a4", - "sha256:d1b4ab59e02d9008efe10ceabd0b31e79519da6fb67f7d8e8977118832d0f449", - "sha256:d5227b229005a696cc67676e24c214740efd90b148de5733419ac9aaba3773da", - "sha256:e1f57aa70d3f7cc6947fd88636a481638263ba04a742b4a37dd25c373e41491a", - "sha256:e74a55f6bad0e7d3968399deb50f61f4db1926acf4a6d83beaaa7df986f48b1c", - "sha256:e82aba2188b9ba309fd8e271702bd0d0fc9148ae3150532bbb474f4590039ffb", - "sha256:ee69dad2c7155756ad114c02db06002f4cded41132cc51378e57aad79cc8e4f4", - "sha256:f5ab93a2cb2d8338b1674be43b442a7f544a0971da062a5da774ed40587f18f5" - ], - "index": "pypi", - "version": "==2.8.6" - }, - "pycodestyle": { - "hashes": [ - "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20", - "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.8.0" - }, - "pygments": { - "hashes": [ - "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", - "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" - ], - "markers": "python_version >= '3.6'", - "version": "==2.12.0" - }, - "pyjwt": { - "hashes": [ - "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", - "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96" - ], - "version": "==1.7.1" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "pyrsistent": { - "hashes": [ - "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c", - "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc", - "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e", - "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26", - "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec", - "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286", - "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045", - "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec", - "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8", - "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c", - "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca", - "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22", - "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a", - "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96", - "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc", - "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1", - "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07", - "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6", - "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b", - "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5", - "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6" - ], - "markers": "python_version >= '3.7'", - "version": "==0.18.1" - }, - "python-dateutil": { - "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" - }, - "pytz": { - "hashes": [ - "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", - "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" - ], - "version": "==2022.1" - }, - "pyzmq": { - "hashes": [ - "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b", - "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74", - "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb", - "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0", - "sha256:2841997a0d85b998cbafecb4183caf51fd19c4357075dfd33eb7efea57e4c149", - "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d", - "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f", - "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9", - "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df", - "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067", - "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0", - "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966", - "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666", - "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d", - "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd", - "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd", - "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f", - "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268", - "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d", - "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8", - "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf", - "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b", - "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c", - "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e", - "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356", - "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e", - "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36", - "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70", - "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92", - "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c", - "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7", - "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7", - "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59", - "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57", - "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2", - "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b", - "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2", - "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115", - "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a", - "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364", - "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b", - "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea", - "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1", - "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973", - "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45", - "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93", - "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3" - ], - "index": "pypi", - "version": "==22.3.0" - }, - "requests": { - "hashes": [ - "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", - "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.27.1" - }, - "ruamel.yaml": { - "hashes": [ - "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7", - "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af" - ], - "markers": "python_version >= '3'", - "version": "==0.17.21" - }, - "ruamel.yaml.clib": { - "hashes": [ - "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd", - "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee", - "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0", - "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7", - "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277", - "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104", - "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd", - "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0", - "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78", - "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de", - "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99", - "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527", - "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84", - "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7", - "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468", - "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b", - "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94", - "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233", - "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb", - "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5", - "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe", - "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751", - "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502", - "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed", - "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c" - ], - "markers": "python_version < '3.11' and platform_python_implementation == 'CPython'", - "version": "==0.2.6" - }, - "semver": { - "hashes": [ - "sha256:21e80ca738975ed513cba859db0a0d2faca2380aef1962f48272ebf9a8a44bd4", - "sha256:c0a4a9d1e45557297a722ee9bac3de2ec2ea79016b6ffcaca609b0bc62cf4276" - ], - "index": "pypi", - "version": "==2.10.2" - }, - "setuptools": { - "hashes": [ - "sha256:5534570b9980fc650d45c62877ff603c7aaaf24893371708736cc016bd221c3c", - "sha256:ca6ba73b7fd5f734ae70ece8c4c1f7062b07f3352f6428f6277e27c8f5c64237" - ], - "markers": "python_version >= '3.7'", - "version": "==62.2.0" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "soupsieve": { - "hashes": [ - "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759", - "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d" - ], - "markers": "python_version >= '3.6'", - "version": "==2.3.2.post1" - }, - "sqlparse": { - "hashes": [ - "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", - "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" - ], - "markers": "python_version >= '3.5'", - "version": "==0.4.2" - }, - "testpath": { - "hashes": [ - "sha256:2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f", - "sha256:8ada9f80a2ac6fb0391aa7cdb1a7d11cfa8429f693eda83f74dde570fe6fa639" - ], - "markers": "python_version >= '3.5'", - "version": "==0.6.0" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" - }, - "tornado": { - "hashes": [ - "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb", - "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c", - "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288", - "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95", - "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558", - "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe", - "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791", - "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d", - "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326", - "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b", - "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4", - "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c", - "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910", - "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5", - "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c", - "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0", - "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675", - "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd", - "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f", - "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c", - "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea", - "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6", - "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05", - "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd", - "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575", - "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a", - "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37", - "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795", - "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f", - "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32", - "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c", - "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01", - "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4", - "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2", - "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921", - "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085", - "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df", - "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102", - "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5", - "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68", - "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5" - ], - "markers": "python_version >= '3.5'", - "version": "==6.1" - }, - "traitlets": { - "hashes": [ - "sha256:60474f39bf1d39a11e0233090b99af3acee93bbc2281777e61dd8c87da8a0014", - "sha256:9dd4025123fbe018a2092b2ad6984792f53ea3362c698f37473258b1fa97b0bc" - ], - "markers": "python_version >= '3.7'", - "version": "==5.2.0" - }, - "uritemplate": { - "hashes": [ - "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", - "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e" - ], - "markers": "python_version >= '3.6'", - "version": "==4.1.1" - }, - "urllib3": { - "hashes": [ - "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", - "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.9" - }, - "webencodings": { - "hashes": [ - "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", - "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" - ], - "version": "==0.5.1" - }, - "whitenoise": { - "hashes": [ - "sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7", - "sha256:05d00198c777028d72d8b0bbd234db605ef6d60e9410125124002518a48e515d" - ], - "index": "pypi", - "version": "==5.2.0" - }, - "xkcdpass": { - "hashes": [ - "sha256:9e89291c927671ef5616a9c9ebaa118b7b1b844e188474d53529d1be8a961a3e" - ], - "index": "pypi", - "version": "==1.17.6" - }, - "xlrd": { - "hashes": [ - "sha256:546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2", - "sha256:e551fb498759fa3a5384a94ccd4c3c02eb7c00ea424426e212ac0c57be9dfbde" - ], - "index": "pypi", - "version": "==1.2.0" - }, - "zipp": { - "hashes": [ - "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad", - "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099" - ], - "markers": "python_version < '3.10'", - "version": "==3.8.0" - } - }, - "develop": { - "aspy.yaml": { - "hashes": [ - "sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc", - "sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.3.0" - }, - "attrs": { - "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" - }, - "cached-property": { - "hashes": [ - "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130", - "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0" - ], - "version": "==1.5.2" - }, - "cfgv": { - "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" - ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.1" - }, - "coverage": { - "hashes": [ - "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9", - "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d", - "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf", - "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7", - "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6", - "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4", - "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059", - "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39", - "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536", - "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac", - "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c", - "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903", - "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d", - "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05", - "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684", - "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1", - "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f", - "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7", - "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca", - "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad", - "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca", - "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d", - "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92", - "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4", - "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf", - "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6", - "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1", - "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4", - "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359", - "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3", - "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620", - "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512", - "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69", - "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2", - "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518", - "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0", - "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa", - "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4", - "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e", - "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1", - "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2" - ], - "markers": "python_version >= '3.7'", - "version": "==6.3.2" - }, - "distlib": { - "hashes": [ - "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b", - "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579" - ], - "version": "==0.3.4" - }, - "execnet": { - "hashes": [ - "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5", - "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.9.0" - }, - "factory-boy": { - "hashes": [ - "sha256:2ce2f665045d9f15145a6310565fcb8255d52fc6fd867f3b783b3ac3de6cf10e" - ], - "index": "pypi", - "version": "==3.0.1" - }, - "faker": { - "hashes": [ - "sha256:179418909da04b04000eab5463c403895faed2849d36ef8d9cbda72cc44797a0", - "sha256:edffca9d8106fffc23ccef15797665fa8aebec4c0eeb3fd6d43cd23540978d5b" - ], - "index": "pypi", - "version": "==4.1.8" - }, - "filelock": { - "hashes": [ - "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85", - "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0" - ], - "markers": "python_version >= '3.7'", - "version": "==3.6.0" - }, - "flake8": { - "hashes": [ - "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b", - "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907" - ], - "index": "pypi", - "version": "==3.9.2" - }, - "identify": { - "hashes": [ - "sha256:3acfe15a96e4272b4ec5662ee3e231ceba976ef63fd9980ed2ce9cc415df393f", - "sha256:c83af514ea50bf2be2c4a3f2fb349442b59dc87284558ae9ff54191bff3541d2" - ], - "markers": "python_version >= '3.7'", - "version": "==2.5.0" - }, - "importlib-metadata": { - "hashes": [ - "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6", - "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539" - ], - "markers": "python_version >= '3.7'", - "version": "==4.11.3" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "nodeenv": { - "hashes": [ - "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b", - "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7" - ], - "version": "==1.6.0" - }, - "packaging": { - "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" - ], - "markers": "python_version >= '3.6'", - "version": "==21.3" - }, - "platformdirs": { - "hashes": [ - "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788", - "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19" - ], - "markers": "python_version >= '3.7'", - "version": "==2.5.2" - }, - "pluggy": { - "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.13.1" - }, - "pre-commit": { - "hashes": [ - "sha256:33bb9bf599c334d458fa9e311bde54e0c306a651473b6a36fdb36a61c8605c89", - "sha256:e233f5cf3230ae9ed9ada132e9cf6890e18cc937adc669353fb64394f6e80c17" - ], - "index": "pypi", - "version": "==1.13.0" - }, - "py": { - "hashes": [ - "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", - "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.11.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20", - "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.8.0" - }, - "pyflakes": { - "hashes": [ - "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3", - "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.3.1" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "pytest": { - "hashes": [ - "sha256:4288fed0d9153d9646bfcdf0c0428197dba1ecb27a33bb6e031d002fa88653fe", - "sha256:c0a7e94a8cdbc5422a51ccdad8e6f1024795939cc89159a0ae7f0b316ad3823e" - ], - "index": "pypi", - "version": "==6.1.2" - }, - "pytest-cov": { - "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" - ], - "index": "pypi", - "version": "==2.10.1" - }, - "pytest-django": { - "hashes": [ - "sha256:4de6dbd077ed8606616958f77655fed0d5e3ee45159475671c7fa67596c6dba6", - "sha256:c33e3d3da14d8409b125d825d4e74da17bb252191bf6fc3da6856e27a8b73ea4" - ], - "index": "pypi", - "version": "==3.10.0" - }, - "pytest-forked": { - "hashes": [ - "sha256:8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e", - "sha256:bbbb6717efc886b9d64537b41fb1497cfaf3c9601276be8da2cccfea5a3c8ad8" - ], - "markers": "python_version >= '3.6'", - "version": "==1.4.0" - }, - "pytest-xdist": { - "hashes": [ - "sha256:7c629016b3bb006b88ac68e2b31551e7becf173c76b977768848e2bbed594d90", - "sha256:82d938f1a24186520e2d9d3a64ef7d9ac7ecdf1a0659e095d18e596b8cbd0672" - ], - "index": "pypi", - "version": "==2.1.0" - }, - "python-dateutil": { - "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" - }, - "pyyaml": { - "hashes": [ - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "markers": "python_version >= '3.6'", - "version": "==6.0" - }, - "selenium": { - "hashes": [ - "sha256:2d7131d7bc5a5b99a2d9b04aaf2612c411b03b8ca1b1ee8d3de5845a9be2cb3c", - "sha256:deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d" - ], - "index": "pypi", - "version": "==3.141.0" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "text-unidecode": { - "hashes": [ - "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", - "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93" - ], - "version": "==1.3" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" - }, - "urllib3": { - "hashes": [ - "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", - "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.9" - }, - "virtualenv": { - "hashes": [ - "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a", - "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==20.14.1" - }, - "zipp": { - "hashes": [ - "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad", - "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099" - ], - "markers": "python_version < '3.10'", - "version": "==3.8.0" - } - } -} diff --git a/grady/README.md b/grady/README.md deleted file mode 100644 index b9db2c13..00000000 --- a/grady/README.md +++ /dev/null @@ -1,247 +0,0 @@ - - -# Grady - will correct you! - - -The intention of this tool is to simplify the exam correcting process at the -University of Goettingen. It is deployed as a web application consisting -of a Django-Rest backend and a Vue.js frontend. - -[](https://gitlab.gwdg.de/j.michal/grady/commits/master) [](https://gitlab.gwdg.de/j.michal/grady/commits/master) - -## Overview - -Grady has three basic functions for the three types of users - -* Reviewers can - * edit feedback that has been provided by tutors - * mark feedback as final if it should not be modified (only final feedback is - shown to students) - * delete feedback (submission will be reassigned) -* Tutors can - * request a submission that they have to correct and submit feedback for it - * delete their own feedback - * review feedback of other tutors - * they do not see which student submitted the solution -* Students can - * review their final feedback and score in the post exam review - -An overview over the database can be found in the docs folder. - - -## Contributing - - -Feature proposals are welcome! If you experienced any bugs or otherwise -unexpected behavior please submit an issue using the issue templates. - -It is of course possible to contribute but currently there is no standardized -way since the project is in a very early stage and fairly small. If you feel the -need to help us out anyway, please contact us via our university email -addresses. - - -## Development - -### Dependencies - - -Make sure the following packages and tools are installed: - -- Python 3.8 -- [Pipenv](https://docs.pipenv.org/en/latest/) -- [Docker](https://www.docker.com/) or a local installation of [Postgres](https://www.postgresql.org/) -- `npm` or `yarn` (you can use `npm` to install `yarn`) -- `make` - -These are required to set up the project. All other application dependencies are -listed in the `Pipfile` files. These will be -installed automatically during the installation process. - -### Installing - -To set up a new development instance perform the following steps: - -1. Create a virtual environment with a Python3.6 interpreter and install -all relevant dependencies: - -```shell script -pipenv install --dev -``` - -2. Set the environment variable `DJANGO_DEV` to `True` like this: -```shell script -export DJANGO_DEV=True -``` - -3. Enter a shell in the virtual environment: -```shell script -pipenv shell -``` - -4. Set up a Postgres 9.5 database. If you have docker installed the - easiest way is to just run it in a docker container, like this: -```shell script - docker run -d --rm --name postgres -p 5432:5432 postgres:13 - -``` - -Alternatively, take a look at the Makefile targets that should make your -life easier, e.g `make db`. - -And apply database migrations once the database is up: -```shell script -python manage.py migrate -``` - -5. Create a superuser if necessary: -```shell script -python manage.py createsuperuser -``` -More users can be added in the admin interface. You should be able -to reach it via <http://localhost:8000/admin>. - -7. Everything is set. You can start the development server with: -```shell script -python manage.py runserver -``` - -8. Congratulations! Your backend should now be up an running. To setup the frontend - see the README in the `frontend` folder. - -### Testing - -> "Code without tests is broken by design." -- (Jacob Kaplan-Moss, Django core developer) - -Well, currently this repository lacks tests, thats true. But that will change as -this work until now is merely a prototype that will be developed further. However, -the few existing tests can be seen as examples and can be found in the `tests.py` -file of each app (currently only `core`). You can run those tests with -```shell script -make test -``` -or if you want a coverage report as well you can run: -```shell script -make coverage -``` - -If you'd like to run the functional tests, simply run: -```shell script -make teste2e path=functional_tests -``` - -or -```shell script -make teste2e path=functional_tests headless=True -``` -for headless mode (Note: You might need to install additional dependencies). - - make teste2e - -Notice that this will always issue a complete rebuild of the frontend. If you want to run tests without building the -frontend anew, use - - make teste2e-nc - - -## Production - -In order to run the app in production, a server with -[Docker](https://www.docker.com/) is needed. To make routing to the -respective instances easier, we recommend running [traefik](https://traefik.io/) -as a reverse proxy on the server. For easier configuration of the containers -we recommend using `docker-compose`. The following guide will assume both these -dependencies are available. - -### Setting up a new instance -Simply copy the following `docker-compose.yml` onto your production server: -```yaml -version: "3" - -services: - - postgres: - image: postgres:13 - labels: - traefik.enable: "false" - networks: - - internal - volumes: - - ./database:/var/lib/postgresql/data - - grady: - image: docker.gitlab.gwdg.de/j.michal/grady:master - restart: always - entrypoint: - - ./deploy.sh - volumes: - - ./secret:/code/secret - environment: - GRADY_INSTANCE: ${INSTANCE} - SCRIPT_NAME: ${URLPATH} - networks: - - internal - - proxy - labels: - traefik.backend: ${INSTANCE} - traefik.enable: "true" - traefik.frontend.rule: Host:${GRADY_HOST};PathPrefix:${URLPATH} - traefik.docker.network: proxy - traefik.port: "8000" - depends_on: - - postgres - -networks: - proxy: - external: true - internal: - external: false -``` - -and set the `INSTANCE`, `URLPATH`, `GRADY_HOST` variables either directly in the -compose file or within an `.env` file in the same directory as the `docker-compose.yml` -(it will be automatically loaded by `docker-compose`). -Login to gwdg gitlab docker registry by entering: -```commandline -docker login docker.gitlab.gwdg.de -``` -Running -```commandline -docker-compose pull -docker-compose up -d -``` -will download the latest postgres and grady images and run them in the background. - -### Importing exam data -#### Exam data structure -In order to import the exam data it must be in a specific format. -You need the following: - -1. A .json file file containing the output of the converted ILIAS export which is - generated by [hektor](https://gitlab.gwdg.de/j.michal/hektor) -2. A plain text file containing one username per line. A new **reviewer** account - will be created with the corresponding username and a randomly - generated password. The passwords are written to a `.importer_passwords` file. - This step should not be skipped because a reviewer account is necessary in order - to activate the tutor accounts. - - -#### Importing exam data -In order to create reviewer accounts, open an interactive shell session in the running container: -```commandline -$ docker exec -it <container_id> /bin/sh -``` - -While in the shell, create a new file containing one username per line: -```commandline -$ echo "user1\nuser2" > reviewers -``` - -After creating the file, call the importer script: -```commandline -$ python manage.py importer -``` - -Keep in mind that you can import exam data in two ways. You can either import the .json file using the importer or you can use the frontend to import data in a more user-friendly way. In either case, you will have to use the importer in order to create the reviewer accounts. - -When logging in to an instance that has no data imported you will automatically be prompted to import some data. If you are on an instance that already has data, you can find the import dialog in the dropdown menu next to the logout button. In the import dialog, simply select the .json file and upload it. This procedure may take a while depending on the file size. diff --git a/grady/core/__init__.py b/grady/core/__init__.py deleted file mode 100644 index 17acc4cd..00000000 --- a/grady/core/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = 'core.apps.CoreConfig' diff --git a/grady/core/admin.py b/grady/core/admin.py deleted file mode 100644 index 79001a88..00000000 --- a/grady/core/admin.py +++ /dev/null @@ -1,17 +0,0 @@ -from django.contrib import admin -from django.contrib.auth.models import Group - -from core.models import (ExamType, Feedback, StudentInfo, Submission, - SubmissionType, Test, UserAccount) - -# Stuff we needwant -admin.site.register(UserAccount) -admin.site.register(SubmissionType) -admin.site.register(Feedback) -admin.site.register(Test) -admin.site.register(ExamType) -admin.site.register(Submission) -admin.site.register(StudentInfo) - -# ... and stuff we don't needwant -admin.site.unregister(Group) diff --git a/grady/core/apps.py b/grady/core/apps.py deleted file mode 100644 index 17b18064..00000000 --- a/grady/core/apps.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.apps import AppConfig - - -class CoreConfig(AppConfig): - name = 'core' - verbose_name = 'where everything comes together' - - def ready(self): - import core.signals # noqa diff --git a/grady/core/management/commands/extractsubmissions.py b/grady/core/management/commands/extractsubmissions.py deleted file mode 100644 index 1e25c4ca..00000000 --- a/grady/core/management/commands/extractsubmissions.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.core.management.base import BaseCommand - -from core import models - - -class Command(BaseCommand): - help = 'Extract all submissions from this instance' - - def handle(self, *args, **kwargs): - for submission in models.Submission.objects.filter( - feedback__isnull=False).order_by('type'): - print(submission.feedback.score, repr(submission.text), - file=open(str(submission.type).replace(' ', '_'), 'a')) diff --git a/grady/core/management/commands/importer.py b/grady/core/management/commands/importer.py deleted file mode 100644 index 1d0bd87c..00000000 --- a/grady/core/management/commands/importer.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.core.management.base import BaseCommand - -import util.importer - - -class Command(BaseCommand): - help = 'Start the Grady command line importer' - - def handle(self, *args, **kwargs): - util.importer.start() diff --git a/grady/core/management/commands/maketestdata.py b/grady/core/management/commands/maketestdata.py deleted file mode 100644 index 075cf243..00000000 --- a/grady/core/management/commands/maketestdata.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.core.management.base import BaseCommand - -from util.factories import init_test_instance - - -class Command(BaseCommand): - help = 'Creates some initial test data for the application' - - def handle(self, *args, **options): - init_test_instance() diff --git a/grady/core/management/commands/replaceusernames.py b/grady/core/management/commands/replaceusernames.py deleted file mode 100644 index cf1fe74d..00000000 --- a/grady/core/management/commands/replaceusernames.py +++ /dev/null @@ -1,30 +0,0 @@ -import argparse -import json -import sys - -from django.contrib.auth import get_user_model -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - help = ('replaces all usernames based on a ' - 'matrikel_no -> new_name dict (input should be JSON)') - - def add_arguments(self, parser): - parser.add_argument( - 'matno2username_dict', - help='the mapping as a JSON file', - default=sys.stdin, - type=argparse.FileType('r') - ) - - def _handle(self, matno2username_dict, **kwargs): - matno2username = json.JSONDecoder().decode(matno2username_dict.read()) - for student in get_user_model().get_students(): - if student.student.matrikel_no in matno2username: - new_name = matno2username[student.student.matrikel_no] - student.username = new_name - student.save() - - def handle(self, *args, **options): - self._handle(*args, **options) diff --git a/grady/core/management/commands/setstudentpasswords.py b/grady/core/management/commands/setstudentpasswords.py deleted file mode 100644 index 1fe56916..00000000 --- a/grady/core/management/commands/setstudentpasswords.py +++ /dev/null @@ -1,44 +0,0 @@ -import csv -import re -import secrets -import sys - -from django.contrib.auth import get_user_model -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - help = ('All student passwords will be changed' - 'and a list of these password will be printed') - - def add_arguments(self, parser): - parser.add_argument( - 'instance', - help="Name of the instance that generated the passwords" - ) - - def _handle(self, *args, output=sys.stdout, instance="", **kwargs): - with open('/usr/share/dict/words') as f: - # strip punctuation - words = set(re.sub(r"[^a-z]", "\n", f.read().lower()).split('\n')) - choose_from = list({word.strip().lower() - for word in words if 5 < len(word) < 8}) - - writer = csv.writer(output) - writer.writerow( - ['Name', 'Matrikel', 'Username', 'password', 'instance']) - - for student in get_user_model().get_students(): - password = '-'.join(secrets.choice(choose_from) for _ in range(3)) - - student.set_password(password) - student.save() - - if not student.fullname: - student.fullname = '__no_name__' - - writer.writerow([student.fullname, student.student.matrikel_no, - student.username, password, instance]) - - def handle(self, *args, **options): - self._handle(*args, **options) diff --git a/grady/core/management/commands/usermod.py b/grady/core/management/commands/usermod.py deleted file mode 100644 index 14a95621..00000000 --- a/grady/core/management/commands/usermod.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.contrib.auth import get_user_model -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - help = 'All user accounts will be disabled' - - def add_arguments(self, parser): - parser.add_argument( - 'switch', - choices=('enable', 'disable'), - default='enable', - help='enable all users (enable) or disable all (disable)' - ) - filter_group = parser.add_mutually_exclusive_group() - filter_group.add_argument( - '--exclude', - default=(), - nargs='+', - help='Provide all users you want to exclude from the operation' - ) - filter_group.add_argument( - '--include', - help=('Provide users you want to operate on' - 'Everything else is untouched'), - nargs='+', - default=()) - - def handle(self, switch, exclude=None, include=None, *args, **kwargs): - if include: - for user in get_user_model().objects.filter(username__in=include): - user.is_active = switch == 'enable' - user.save() - else: # this includes nothing set - for user in get_user_model().objects.exclude(username__in=exclude): - user.is_active = switch == 'enable' - user.save() diff --git a/grady/core/migrations/0001_initial.py b/grady/core/migrations/0001_initial.py deleted file mode 100644 index 3624c16e..00000000 --- a/grady/core/migrations/0001_initial.py +++ /dev/null @@ -1,261 +0,0 @@ -# Generated by Django 2.1.11 on 2019-12-01 16:48 - -import core.models.student_info -import core.models.user_account -from django.conf import settings -import django.contrib.auth.models -import django.contrib.auth.validators -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone -import uuid - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('auth', '0009_alter_user_last_name_max_length'), - ] - - operations = [ - migrations.CreateModel( - name='UserAccount', - fields=[ - ('password', models.CharField(max_length=128, verbose_name='password')), - ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), - ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), - ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), - ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), - ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), - ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), - ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('role', models.CharField(choices=[('Student', 'student'), ('Tutor', 'tutor'), ('Reviewer', 'reviewer')], max_length=50)), - ('user_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('fullname', models.CharField(blank=True, max_length=70, verbose_name='full name')), - ('is_admin', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'user', - 'verbose_name_plural': 'users', - 'abstract': False, - }, - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ('corrector', core.models.user_account.TutorReviewerManager()), - ], - ), - migrations.CreateModel( - name='ExamType', - fields=[ - ('exam_type_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('module_reference', models.CharField(max_length=50, unique=True)), - ('total_score', models.PositiveIntegerField()), - ('pass_score', models.PositiveIntegerField()), - ('pass_only', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'ExamType', - 'verbose_name_plural': 'ExamTypes', - }, - ), - migrations.CreateModel( - name='Feedback', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('score', models.DecimalField(decimal_places=2, default=0, max_digits=5)), - ('created', models.DateTimeField(auto_now_add=True)), - ('is_final', models.BooleanField(default=False)), - ('final_by_reviewer', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'Feedback', - 'verbose_name_plural': 'Feedback Set', - }, - ), - migrations.CreateModel( - name='FeedbackComment', - fields=[ - ('comment_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('text', models.TextField(blank=True)), - ('created', models.DateTimeField(auto_now_add=True)), - ('modified', models.DateTimeField(auto_now=True)), - ('visible_to_student', models.BooleanField(default=True)), - ('of_line', models.PositiveIntegerField(default=0)), - ('of_feedback', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='feedback_lines', to='core.Feedback')), - ('of_tutor', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='comment_list', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'Feedback Comment', - 'verbose_name_plural': 'Feedback Comments', - 'ordering': ('created',), - }, - ), - migrations.CreateModel( - name='FeedbackLabel', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('description', models.TextField()), - ('colour', models.CharField(default='#b0b0b0', max_length=7, validators=[django.core.validators.RegexValidator(code='nomatch', message='Colour must be in format: #[0-9A-F]{7}', regex='^#[0-9A-F]{6}$')])), - ('feedback', models.ManyToManyField(related_name='labels', to='core.Feedback')), - ('feedback_comments', models.ManyToManyField(related_name='labels', to='core.FeedbackComment')), - ], - ), - migrations.CreateModel( - name='Group', - fields=[ - ('group_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=120)), - ], - ), - migrations.CreateModel( - name='MetaSubmission', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('done_assignments', models.PositiveIntegerField(default=0)), - ('has_active_assignment', models.BooleanField(default=False)), - ('has_feedback', models.BooleanField(default=False)), - ('has_final_feedback', models.BooleanField(default=False)), - ('feedback_authors', models.ManyToManyField(to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='SolutionComment', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('text', models.TextField()), - ('created', models.DateTimeField(auto_now_add=True)), - ('modified', models.DateTimeField(auto_now=True)), - ('of_line', models.PositiveIntegerField()), - ], - ), - migrations.CreateModel( - name='StudentInfo', - fields=[ - ('student_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('has_logged_in', models.BooleanField(default=False)), - ('matrikel_no', models.CharField(default=core.models.student_info.random_matrikel_no, max_length=30, unique=True)), - ('total_score', models.PositiveIntegerField(default=0)), - ('passes_exam', models.BooleanField(default=False)), - ('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='students', to='core.ExamType')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'Student', - 'verbose_name_plural': 'Student Set', - }, - ), - migrations.CreateModel( - name='Submission', - fields=[ - ('submission_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('seen_by_student', models.BooleanField(default=False)), - ('text', models.TextField(blank=True)), - ('source_code', models.TextField(blank=True, editable=False, null=True)), - ('source_code_available', models.BooleanField(default=False, editable=False)), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='submissions', to='core.StudentInfo')), - ], - options={ - 'verbose_name': 'Submission', - 'verbose_name_plural': 'Submission Set', - 'ordering': ('type__name',), - }, - ), - migrations.CreateModel( - name='SubmissionType', - fields=[ - ('submission_type_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100, unique=True)), - ('full_score', models.PositiveIntegerField(default=0)), - ('description', models.TextField()), - ('solution', models.TextField()), - ('programming_language', models.CharField(choices=[('c', 'C syntax highlighting'), ('java', 'Java syntax highlighting'), ('mipsasm', 'Mips syntax highlighting'), ('haskell', 'Haskell syntax highlighting'), ('python', 'Python syntax highlighting'), ('plaintext', 'No syntax highlighting')], default='c', max_length=25)), - ], - options={ - 'verbose_name': 'SubmissionType', - 'verbose_name_plural': 'SubmissionType Set', - }, - ), - migrations.CreateModel( - name='Test', - fields=[ - ('test_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=30)), - ('label', models.CharField(max_length=50)), - ('annotation', models.TextField()), - ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tests', to='core.Submission')), - ], - options={ - 'verbose_name': 'Test', - 'verbose_name_plural': 'Tests', - }, - ), - migrations.CreateModel( - name='TutorSubmissionAssignment', - fields=[ - ('assignment_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('stage', models.CharField(choices=[('feedback-creation', 'No feedback was ever assigned'), ('feedback-validation', 'Feedback exists but is not validated'), ('feedback-review', 'Review by exam reviewer required')], default='feedback-creation', max_length=60)), - ('is_done', models.BooleanField(default=False)), - ('created', models.DateTimeField(auto_now_add=True)), - ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assignments', to=settings.AUTH_USER_MODEL)), - ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assignments', to='core.Submission')), - ], - ), - migrations.AddField( - model_name='submission', - name='type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='submissions', to='core.SubmissionType'), - ), - migrations.AddField( - model_name='solutioncomment', - name='of_submission_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='solution_comments', to='core.SubmissionType'), - ), - migrations.AddField( - model_name='solutioncomment', - name='of_user', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='solution_comments', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='metasubmission', - name='submission', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='meta', to='core.Submission'), - ), - migrations.AddField( - model_name='feedback', - name='of_submission', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='feedback', to='core.Submission'), - ), - migrations.AddField( - model_name='useraccount', - name='group', - field=models.ManyToManyField(blank=True, related_name='group', to='core.Group'), - ), - migrations.AddField( - model_name='useraccount', - name='groups', - field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups'), - ), - migrations.AddField( - model_name='useraccount', - name='user_permissions', - field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), - ), - migrations.AlterUniqueTogether( - name='test', - unique_together={('submission', 'name')}, - ), - migrations.AlterUniqueTogether( - name='submission', - unique_together={('type', 'student')}, - ), - migrations.AlterUniqueTogether( - name='feedbackcomment', - unique_together={('of_line', 'of_tutor', 'of_feedback')}, - ), - ] diff --git a/grady/core/migrations/0002_auto_20191202_1018.py b/grady/core/migrations/0002_auto_20191202_1018.py deleted file mode 100644 index 07cfd2d1..00000000 --- a/grady/core/migrations/0002_auto_20191202_1018.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.1.11 on 2019-12-02 10:18 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='useraccount', - name='group', - ), - migrations.AddField( - model_name='useraccount', - name='exercise_groups', - field=models.ManyToManyField(blank=True, related_name='users', to='core.Group'), - ), - ] diff --git a/grady/core/migrations/0003_auto_20191203_1445.py b/grady/core/migrations/0003_auto_20191203_1445.py deleted file mode 100644 index 5abadff6..00000000 --- a/grady/core/migrations/0003_auto_20191203_1445.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.11 on 2019-12-03 14:45 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0002_auto_20191202_1018'), - ] - - operations = [ - migrations.AlterField( - model_name='submissiontype', - name='programming_language', - field=models.CharField(choices=[('c', 'C syntax highlighting'), ('java', 'Java syntax highlighting'), ('mipsasm', 'Mips syntax highlighting'), ('haskell', 'Haskell syntax highlighting'), ('python', 'Python syntax highlighting'), ('markdown', 'Markdown syntax highlighting with asciimath rendering'), ('plaintext', 'No syntax highlighting')], default='c', max_length=25), - ), - ] diff --git a/grady/core/migrations/0004_feedback_modified.py b/grady/core/migrations/0004_feedback_modified.py deleted file mode 100644 index 0364705d..00000000 --- a/grady/core/migrations/0004_feedback_modified.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.14 on 2020-04-14 18:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0003_auto_20191203_1445'), - ] - - operations = [ - migrations.AddField( - model_name='feedback', - name='modified', - field=models.DateTimeField(auto_now=True), - ), - ] diff --git a/grady/core/migrations/0005_auto_20200707_1456.py b/grady/core/migrations/0005_auto_20200707_1456.py deleted file mode 100644 index 63d03d44..00000000 --- a/grady/core/migrations/0005_auto_20200707_1456.py +++ /dev/null @@ -1,47 +0,0 @@ -# Generated by Django 2.2.12 on 2020-07-07 14:56 - -import core.models.user_account -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0004_feedback_modified'), - ] - - operations = [ - migrations.RemoveField( - model_name='studentinfo', - name='exam', - ), - migrations.RemoveField( - model_name='studentinfo', - name='passes_exam', - ), - migrations.RemoveField( - model_name='studentinfo', - name='total_score', - ), - migrations.AlterField( - model_name='useraccount', - name='exercise_groups', - field=models.ManyToManyField(blank=True, default=core.models.user_account.group_default, related_name='users', to='core.Group'), - ), - migrations.CreateModel( - name='StudentsExam', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('total_score', models.PositiveIntegerField(default=0)), - ('passes_exam', models.BooleanField(default=False)), - ('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='exam', to='core.ExamType')), - ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='students', to='core.StudentInfo')), - ], - ), - migrations.AddField( - model_name='studentinfo', - name='exams', - field=models.ManyToManyField(blank=True, related_name='exams', to='core.StudentsExam'), - ), - ] diff --git a/grady/core/migrations/0005_auto_20200929_1202.py b/grady/core/migrations/0005_auto_20200929_1202.py deleted file mode 100644 index a4dab173..00000000 --- a/grady/core/migrations/0005_auto_20200929_1202.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2.16 on 2020-09-29 12:02 - -import core.models.user_account -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0004_feedback_modified'), - ] - - operations = [ - migrations.AlterField( - model_name='useraccount', - name='exercise_groups', - field=models.ManyToManyField(blank=True, default=core.models.user_account.group_default, related_name='users', to='core.Group'), - ), - ] diff --git a/grady/core/migrations/0006_auto_20200810_1115.py b/grady/core/migrations/0006_auto_20200810_1115.py deleted file mode 100644 index e9d7d8d1..00000000 --- a/grady/core/migrations/0006_auto_20200810_1115.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.2.12 on 2020-08-10 11:15 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0005_auto_20200707_1456'), - ] - - operations = [ - migrations.RenameModel( - old_name='StudentsExam', - new_name='ExamInfo', - ), - ] diff --git a/grady/core/migrations/0006_auto_20201027_1234.py b/grady/core/migrations/0006_auto_20201027_1234.py deleted file mode 100644 index b3cb85ea..00000000 --- a/grady/core/migrations/0006_auto_20201027_1234.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.2 on 2020-10-27 12:34 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0005_auto_20200929_1202'), - ] - - operations = [ - migrations.AlterField( - model_name='useraccount', - name='first_name', - field=models.CharField(blank=True, max_length=150, verbose_name='first name'), - ), - ] diff --git a/grady/core/migrations/0007_auto_20200922_1026.py b/grady/core/migrations/0007_auto_20200922_1026.py deleted file mode 100644 index a077aaa5..00000000 --- a/grady/core/migrations/0007_auto_20200922_1026.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.12 on 2020-09-22 10:26 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0006_auto_20200810_1115'), - ] - - operations = [ - migrations.RemoveField( - model_name='studentinfo', - name='exams', - ), - migrations.AlterField( - model_name='examinfo', - name='student', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='exams', to='core.StudentInfo'), - ), - ] diff --git a/grady/core/migrations/0008_auto_20200922_1148.py b/grady/core/migrations/0008_auto_20200922_1148.py deleted file mode 100644 index 7426432e..00000000 --- a/grady/core/migrations/0008_auto_20200922_1148.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2.12 on 2020-09-22 11:48 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0007_auto_20200922_1026'), - ] - - operations = [ - migrations.AlterField( - model_name='examinfo', - name='exam', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='exam_infos', to='core.ExamType'), - ), - ] diff --git a/grady/core/migrations/0009_submissiontype_exam_type.py b/grady/core/migrations/0009_submissiontype_exam_type.py deleted file mode 100644 index eaa876ff..00000000 --- a/grady/core/migrations/0009_submissiontype_exam_type.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2.16 on 2020-10-22 11:57 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0008_auto_20200922_1148'), - ] - - operations = [ - migrations.AddField( - model_name='submissiontype', - name='exam_type', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submission_types', to='core.ExamType'), - ), - ] diff --git a/grady/core/migrations/0010_group_examtype.py b/grady/core/migrations/0010_group_examtype.py deleted file mode 100644 index 1c9e45ff..00000000 --- a/grady/core/migrations/0010_group_examtype.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2.16 on 2020-11-03 11:54 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0009_submissiontype_exam_type'), - ] - - operations = [ - migrations.AddField( - model_name='group', - name='examType', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='core.ExamType'), - ), - ] diff --git a/grady/core/migrations/0011_auto_20201103_1211.py b/grady/core/migrations/0011_auto_20201103_1211.py deleted file mode 100644 index 5a42817f..00000000 --- a/grady/core/migrations/0011_auto_20201103_1211.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.16 on 2020-11-03 12:11 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0010_group_examtype'), - ] - - operations = [ - migrations.RenameField( - model_name='group', - old_name='examType', - new_name='exam_type', - ), - ] diff --git a/grady/core/migrations/0012_auto_20201103_1228.py b/grady/core/migrations/0012_auto_20201103_1228.py deleted file mode 100644 index 6de5b385..00000000 --- a/grady/core/migrations/0012_auto_20201103_1228.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.2.16 on 2020-11-03 12:28 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0011_auto_20201103_1211'), - ] - - operations = [ - migrations.AlterModelOptions( - name='group', - options={'verbose_name': 'Group', 'verbose_name_plural': 'Groups'}, - ), - ] diff --git a/grady/core/migrations/0013_auto_20201103_1248.py b/grady/core/migrations/0013_auto_20201103_1248.py deleted file mode 100644 index 8e36cd62..00000000 --- a/grady/core/migrations/0013_auto_20201103_1248.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 2.2.16 on 2020-11-03 12:48 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0012_auto_20201103_1228'), - ] - - operations = [ - migrations.AlterModelOptions( - name='group', - options={}, - ), - migrations.RemoveField( - model_name='group', - name='exam_type', - ), - ] diff --git a/grady/core/migrations/0014_merge_20201123_1252.py b/grady/core/migrations/0014_merge_20201123_1252.py deleted file mode 100644 index e89e1ffc..00000000 --- a/grady/core/migrations/0014_merge_20201123_1252.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-23 12:52 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0013_auto_20201103_1248'), - ('core', '0006_auto_20201027_1234'), - ] - - operations = [ - ] diff --git a/grady/core/migrations/0015_group_exam_type.py b/grady/core/migrations/0015_group_exam_type.py deleted file mode 100644 index 87662145..00000000 --- a/grady/core/migrations/0015_group_exam_type.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.1.7 on 2021-09-02 11:36 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0014_merge_20201123_1252'), - ] - - operations = [ - migrations.AddField( - model_name='group', - name='exam_type', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='core.examtype'), - ), - ] diff --git a/grady/core/migrations/0016_auto_20210902_1140.py b/grady/core/migrations/0016_auto_20210902_1140.py deleted file mode 100644 index 4f975a55..00000000 --- a/grady/core/migrations/0016_auto_20210902_1140.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.7 on 2021-09-02 11:40 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('core', '0015_group_exam_type'), - ] - - operations = [ - migrations.RenameField( - model_name='group', - old_name='exam_type', - new_name='exam', - ), - ] diff --git a/grady/core/migrations/__init__.py b/grady/core/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/grady/core/models/__init__.py b/grady/core/models/__init__.py deleted file mode 100644 index 432bbb04..00000000 --- a/grady/core/models/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from .group import Group # noqa -from .exam_type import ExamType # noqa -from .submission_type import SubmissionType, SolutionComment # noqa -from .user_account import UserAccount, TutorReviewerManager # noqa -from .user_account import UserAccount, TutorReviewerManager # noqa -from .student_info import StudentInfo, random_matrikel_no, ExamInfo # noqa -from .test import Test # noqa -from .submission import Submission, MetaSubmission # noqa -from .feedback import Feedback, FeedbackComment # noqa -from .assignment import (DeletionOfDoneAssignmentsNotPermitted, TutorSubmissionAssignment, # noqa - CanOnlyCallFinishOnUnfinishedAssignments, SubmissionTypeDepleted, # noqa - NotMoreThanTwoOpenAssignmentsAllowed) # noqa -from .label import FeedbackLabel # noqa diff --git a/grady/core/models/assignment.py b/grady/core/models/assignment.py deleted file mode 100644 index 8936bf9a..00000000 --- a/grady/core/models/assignment.py +++ /dev/null @@ -1,111 +0,0 @@ -import logging -import uuid - -import constance -from django.db import models - -from core.models import Submission, UserAccount, MetaSubmission - -log = logging.getLogger(__name__) -config = constance.config - - -class DeletionOfDoneAssignmentsNotPermitted(Exception): - pass - - -class CanOnlyCallFinishOnUnfinishedAssignments(Exception): - pass - - -class SubmissionTypeDepleted(Exception): - pass - - -class NotMoreThanTwoOpenAssignmentsAllowed(Exception): - pass - - -class TutorSubmissionAssignmentManager(models.Manager): - - @staticmethod - def available_assignments(create_assignment_options): - stage = create_assignment_options['stage'] - owner = create_assignment_options['owner'] - submission_type = create_assignment_options['submission_type'] - group = create_assignment_options.get('group') - - stage = TutorSubmissionAssignment.assignment_count_on_stage[stage] - candidates = MetaSubmission.objects.filter( - submission__type__pk=submission_type, - done_assignments=stage, - has_final_feedback=False, - has_active_assignment=False, - ).exclude( - feedback_authors=owner - ) - if group is not None: - candidates = candidates.filter( - submission__student__user__exercise_groups__pk=group - ) - return candidates - - -class TutorSubmissionAssignment(models.Model): - objects = TutorSubmissionAssignmentManager() - - FEEDBACK_CREATION = 'feedback-creation' - FEEDBACK_VALIDATION = 'feedback-validation' - FEEDBACK_REVIEW = 'feedback-review' - - stages = ( - (FEEDBACK_CREATION, 'No feedback was ever assigned'), - (FEEDBACK_VALIDATION, 'Feedback exists but is not validated'), - (FEEDBACK_REVIEW, 'Review by exam reviewer required'), - ) - - assignment_count_on_stage = { - FEEDBACK_CREATION: 0, - FEEDBACK_VALIDATION: 1, - FEEDBACK_REVIEW: 2, - } - - owner = models.ForeignKey(UserAccount, - on_delete=models.CASCADE, - related_name='assignments') - - assignment_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - submission = models.ForeignKey(Submission, - on_delete=models.CASCADE, - related_name='assignments') - - stage = models.CharField(choices=stages, - max_length=60, - default=FEEDBACK_CREATION) - - is_done = models.BooleanField(default=False) - created = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return (f'{self.owner} assigned to {self.submission}' - f' (done={self.is_done})') - - def finish(self): - self.refresh_from_db() - if self.is_done: - raise CanOnlyCallFinishOnUnfinishedAssignments() - - meta = self.submission.meta - meta.feedback_authors.add(self.owner) - meta.done_assignments += 1 - meta.has_active_assignment = False - self.is_done = True - self.save() - meta.save() - - def delete(self, *args, **kwargs): - if self.is_done: - raise DeletionOfDoneAssignmentsNotPermitted() - super().delete(*args, **kwargs) diff --git a/grady/core/models/exam_type.py b/grady/core/models/exam_type.py deleted file mode 100644 index bf9ab0a7..00000000 --- a/grady/core/models/exam_type.py +++ /dev/null @@ -1,44 +0,0 @@ - -import logging -import uuid - -import constance -from django.db import models - -log = logging.getLogger(__name__) -config = constance.config - - -class ExamType(models.Model): - """A model that contains information about the module a submission can - belong to. The information is not needed and is currently, just used to - detect if students already have enough points to pass an exam. - - It is NOT intended to use this for including different exams regarding - submissions types. - - Attributes - ---------- - module_reference : CharField - a unique reference that identifies a module within the university - pass_only : BooleanField - True if no grade is given - pass_score : PositiveIntegerField - minimum score for (just) passing - total_score : PositiveIntegerField - maximum score for the exam (currently never used anywhere) - """ - class Meta: - verbose_name = "ExamType" - verbose_name_plural = "ExamTypes" - - def __str__(self) -> str: - return self.module_reference - - exam_type_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - module_reference = models.CharField(max_length=50, unique=True) - total_score = models.PositiveIntegerField() - pass_score = models.PositiveIntegerField() - pass_only = models.BooleanField(default=False) diff --git a/grady/core/models/feedback.py b/grady/core/models/feedback.py deleted file mode 100644 index 6a83bbe9..00000000 --- a/grady/core/models/feedback.py +++ /dev/null @@ -1,94 +0,0 @@ -import logging -import uuid - -import constance -from django.contrib.auth import get_user_model -from django.db import models - -from core.models.submission import Submission - -log = logging.getLogger(__name__) -config = constance.config - - -class Feedback(models.Model): - """ - Attributes - ---------- - score : PositiveIntegerField - A score that has been assigned to he submission. Is final if it was - accepted. - created : DateTimeField - When the feedback was initially created - modified: DateTimeField - Timestamp indicating the last time the feedback was saved - of_submission : OneToOneField - The submission this feedback belongs to. It finally determines how many - points a student receives for his submission. - origin : IntegerField - Of whom was this feedback originally created. She below for the choices - final_by_reviewer: BooleanField - Whether or not this feedback was set to final by a reviewer once - """ - score = models.DecimalField(max_digits=5, decimal_places=2, default=0) - created = models.DateTimeField(auto_now_add=True) - modified = models.DateTimeField(auto_now=True) - is_final = models.BooleanField(default=False) - final_by_reviewer = models.BooleanField(default=False) - - of_submission = models.OneToOneField( - Submission, - on_delete=models.CASCADE, - related_name='feedback') - - # the denominators that are allowed for the decimal score interpreted as a fraction - ALLOWED_DENOMINATORS = [1, 2] - - class Meta: - verbose_name = "Feedback" - verbose_name_plural = "Feedback Set" - - def __str__(self) -> str: - return 'Feedback for {}'.format(self.of_submission) - - def is_full_score(self) -> bool: - return self.of_submission.type.full_score == self.score - - def get_full_score(self) -> int: - return self.of_submission.type.full_score - - -class FeedbackComment(models.Model): - """ This Class contains the Feedback for a specific line of a Submission""" - comment_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - text = models.TextField(blank=True) - created = models.DateTimeField(auto_now_add=True) - modified = models.DateTimeField(auto_now=True) - - visible_to_student = models.BooleanField(default=True) - - of_line = models.PositiveIntegerField(default=0) - of_tutor = models.ForeignKey( - get_user_model(), - related_name="comment_list", - on_delete=models.PROTECT - ) - of_feedback = models.ForeignKey( - Feedback, - related_name="feedback_lines", - on_delete=models.CASCADE, - null=True - ) - - class Meta: - verbose_name = "Feedback Comment" - verbose_name_plural = "Feedback Comments" - ordering = ('created',) - unique_together = ('of_line', 'of_tutor', 'of_feedback') - - def __str__(self): - return 'Comment on line {} of tutor {}: "{}"'.format(self.of_line, - self.of_tutor, - self.text) diff --git a/grady/core/models/group.py b/grady/core/models/group.py deleted file mode 100644 index f03b8181..00000000 --- a/grady/core/models/group.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.db import models -from core.models.exam_type import ExamType -import uuid - - -class Group(models.Model): - group_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - name = models.CharField(max_length=120) - exam = models.ForeignKey(ExamType, - on_delete=models.CASCADE, - related_name='groups', - null=True) diff --git a/grady/core/models/label.py b/grady/core/models/label.py deleted file mode 100644 index 731b241b..00000000 --- a/grady/core/models/label.py +++ /dev/null @@ -1,21 +0,0 @@ -import logging - -from django.core.validators import RegexValidator -from django.db import models - -from core.models.feedback import Feedback, FeedbackComment - -log = logging.getLogger(__name__) - -HexColourValidator = RegexValidator( - regex='^#[0-9A-F]{6}$', - message='Colour must be in format: #[0-9A-F]{7}', - code='nomatch') - - -class FeedbackLabel(models.Model): - name = models.CharField(max_length=50, unique=True) - description = models.TextField() - colour = models.CharField(validators=[HexColourValidator], max_length=7, default='#b0b0b0') - feedback = models.ManyToManyField(Feedback, related_name='labels') - feedback_comments = models.ManyToManyField(FeedbackComment, related_name='labels') diff --git a/grady/core/models/student_info.py b/grady/core/models/student_info.py deleted file mode 100644 index 1b57910d..00000000 --- a/grady/core/models/student_info.py +++ /dev/null @@ -1,140 +0,0 @@ -import logging -import uuid -from collections import OrderedDict -from random import randrange -from typing import Dict - -import constance -from django.contrib.auth import get_user_model -from django.db import models -from django.db.models import BooleanField, F, When, Sum, QuerySet, Value, Case -from django.db.models.functions import Coalesce - -from core.models.submission_type import SubmissionType -from core.models.exam_type import ExamType - -log = logging.getLogger(__name__) -config = constance.config - - -def random_matrikel_no() -> str: - """Use as a default value for student's matriculation number. - - Returns: - str: an eight digit number - """ - return str(10_000_000 + randrange(90_000_000)) - - -class ExamInfo(models.Model): - exam = models.ForeignKey(ExamType, - on_delete=models.CASCADE, - related_name='exam_infos', - null=False) - - student = models.ForeignKey('StudentInfo', - on_delete=models.CASCADE, - related_name='exams', - null=False) - - total_score = models.PositiveIntegerField(default=0) - passes_exam = models.BooleanField(default=False) - - def update_total_score(self): - ''' This helper is invoked after feedback changes ''' - self.total_score = self.student.submissions.aggregate( - Sum('feedback__score'))['feedback__score__sum'] or 0 - if self.exam is not None: - self.passes_exam = self.total_score >= self.exam.pass_score - self.save() - - def score_per_submission(self) -> Dict[str, int]: - """ TODO: get rid of it and use an annotation. """ - if self.student.submissions.all(): - return OrderedDict({ - s.type.name: s.feedback.score if hasattr(s, 'feedback') else 0 - for s in self.student.submissions.filter(type__exam_type=self.exam) - .order_by('type__name') - }) - - return OrderedDict({ - t.name: 0 for t in SubmissionType.objects.all() - }) - - -class StudentInfo(models.Model): - """ - The StudentInfo model includes all information of a student, that we got - from the E-Learning output, along with some useful classmethods that - provide specially annotated QuerySets. - - Information like email (if given), and the username are stored in the - associated user model. - - Attributes: - exams (ManyToManyField): - Module the student wants te be graded in, or different exercise - assignments for one module. - - has_logged_in (BooleanField): - Login is permitted once. If this is set the user can not log in. - - matrikel_no (CharField): - The matriculation number of the student - """ - student_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - has_logged_in = models.BooleanField(default=False) - matrikel_no = models.CharField(unique=True, - max_length=30, - default=random_matrikel_no) - - user = models.OneToOneField(get_user_model(), - on_delete=models.CASCADE, - related_name='student') - - def add_exam(self, exam): - exam_info = ExamInfo(exam=exam, student=self) - exam_info.save() - self.exams.add(exam_info) - - @classmethod - def get_annotated_score_submission_list(cls) -> QuerySet: - """Can be used to quickly annotate a user with the necessary - information on the overall score of a student and if he does not need - any more correction. - - A student is done if - * module type was pass_only and student has enough points - * every submission got accepted feedback - - Returns - ------- - QuerySet - the annotated QuerySet as described above. - """ - return cls.objects.annotate( - overall_score=Coalesce(Sum('submissions__feedback__score'), - Value(0)), - ).annotate( - done=Case( - When(exam__pass_score__lt=F('overall_score'), then=Value(1)), - default=Value(0), - output_field=BooleanField() - ) - ).order_by('user__username') - - def disable(self): - """The student won't be able to login in anymore, but his current - session can be continued until s/he logs out. - """ - self.has_logged_in = True - self.save() - - def __str__(self) -> str: - return self.user.username - - class Meta: - verbose_name = "Student" - verbose_name_plural = "Student Set" diff --git a/grady/core/models/submission.py b/grady/core/models/submission.py deleted file mode 100644 index f2f98dfe..00000000 --- a/grady/core/models/submission.py +++ /dev/null @@ -1,89 +0,0 @@ -import logging -import uuid - -import constance -from django.contrib.auth import get_user_model -from django.db import models - -from core.models.submission_type import SubmissionType - -log = logging.getLogger(__name__) -config = constance.config - - -class Submission(models.Model): - """The answer of a student to a specific question. Holds the answer and - very often serves as ForeignKey. - - With the method assign_tutor feedback for a submission can be created and a - tutor will be assigned to this feedback permanently (unless deleted by a - reviewer or if it gets reassigned). There cannot be more than ONE feedback - per Submission. - - Attributes - ---------- - seen_by_student : BooleanField - True if the student saw his accepted feedback. - student : ForgeignKey - The student how cause all of this - text : TextField - The code/text submitted by the student - source_code : TextField - If the original "source code" is not easily displayable (like Jupyter Notebooks), - it's converted to readable source code and the original is saved in this field - source_code_available : BooleanField - Whether there is original source code available under `source_code` or not - type : OneToOneField - Relation to the type containing meta information - """ - submission_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - seen_by_student = models.BooleanField(default=False) - text = models.TextField(blank=True) - source_code = models.TextField(null=True, blank=True, editable=False) - source_code_available = models.BooleanField(default=False, editable=False) - type = models.ForeignKey( - SubmissionType, - on_delete=models.PROTECT, - related_name='submissions') - student = models.ForeignKey( - 'StudentInfo', - on_delete=models.CASCADE, - related_name='submissions') - - class Meta: - verbose_name = "Submission" - verbose_name_plural = "Submission Set" - unique_together = (('type', 'student'),) - ordering = ('type__name',) - - def __str__(self) -> str: - return "Submission {}".format(self.pk) - - -class MetaSubmission(models.Model): - - submission = models.OneToOneField('submission', - related_name='meta', - on_delete=models.CASCADE) - done_assignments = models.PositiveIntegerField(default=0) - has_active_assignment = models.BooleanField(default=False) - - # Managed by signal! - has_feedback = models.BooleanField(default=False) - # Managed by signal! - has_final_feedback = models.BooleanField(default=False) - - feedback_authors = models.ManyToManyField(get_user_model()) - - def __str__(self): - return f''' Submission Meta of {self.submission} - - done_assignments = {self.done_assignments} - has_active_assignment = {self.has_active_assignment} - has_feedback = {self.has_feedback} - has_final_feedback = {self.has_final_feedback} - feedback_authors = {self.feedback_authors.values_list('username', - flat=True)} - ''' diff --git a/grady/core/models/submission_type.py b/grady/core/models/submission_type.py deleted file mode 100644 index c37cbfa8..00000000 --- a/grady/core/models/submission_type.py +++ /dev/null @@ -1,128 +0,0 @@ -import logging -import uuid - -import constance -from django.db import models -from django.db.models import (Case, Count, IntegerField, Q, - Value, When) -from django.db.models.query import QuerySet -from core.models.exam_type import ExamType - - -log = logging.getLogger(__name__) -config = constance.config - - -class SubmissionType(models.Model): - """This model mostly holds meta information about the kind of task that was - presented to the student. It serves as a foreign key for the submissions - that are of this type. This model is currently NOT exposed directly in a - view. - - Attributes - ---------- - description : TextField - The task description the student had to fulfill. The content may be - HTML formatted. - full_score : PositiveIntegerField - Maximum score one can get on that one - name : CharField - The original title of the exam. This is wildly used as an identifier by - the preprocessing scripts. - solution : TextField - A sample solution or a correction guideline - """ - - C = 'c' - JAVA = 'java' - MIPS = 'mipsasm' - HASKELL = 'haskell' - TEXT = 'plaintext' - PYTHON = 'python' - MARKDOWN = 'markdown' - - LANGUAGE_CHOICES = ( - (C, 'C syntax highlighting'), - (JAVA, 'Java syntax highlighting'), - (MIPS, 'Mips syntax highlighting'), - (HASKELL, 'Haskell syntax highlighting'), - (PYTHON, 'Python syntax highlighting'), - (MARKDOWN, 'Markdown syntax highlighting with asciimath rendering'), - (TEXT, 'No syntax highlighting'), - ) - - submission_type_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - name = models.CharField(max_length=100, unique=True) - full_score = models.PositiveIntegerField(default=0) - description = models.TextField() - solution = models.TextField() - exam_type = models.ForeignKey(ExamType, - on_delete=models.CASCADE, - related_name='submission_types', - null=True) - programming_language = models.CharField(max_length=25, - choices=LANGUAGE_CHOICES, - default=C) - - def __str__(self) -> str: - return self.name - - class Meta: - verbose_name = "SubmissionType" - verbose_name_plural = "SubmissionType Set" - - @classmethod - def get_annotated_feedback_count(cls) -> QuerySet: - """ Annotates submission lists with counts - - The following fields are annotated: - * number of submissions per submission type - * count of received *accepted* feedback per submission type - * and finally the progress on each submission type as percentage - - The QuerySet that is return is ordered by name lexicographically. - - Returns: - The annotated QuerySet as described above - """ - return cls.objects\ - .annotate( # to display only manual - feedback_final=Count( - Case(When( - Q(submissions__meta__has_final_feedback=True), - then=Value(1)), output_field=IntegerField()) - ), - feedback_in_validation=Count( - Case(When( - Q(submissions__meta__done_assignments=1) & - Q(submissions__meta__has_final_feedback=False), - then=Value(1)), output_field=IntegerField()) - ), - feedback_in_conflict=Count( - Case(When( - Q(submissions__meta__done_assignments=2) & - Q(submissions__meta__has_final_feedback=False), - then=Value(1)), output_field=IntegerField()) - ), - submission_count=Count('submissions'), - ).order_by('name') - - -class SolutionComment(models.Model): - text = models.TextField() - created = models.DateTimeField(auto_now_add=True) - modified = models.DateTimeField(auto_now=True) - - of_line = models.PositiveIntegerField() - of_user = models.ForeignKey( - 'UserAccount', - related_name="solution_comments", - on_delete=models.PROTECT - ) - of_submission_type = models.ForeignKey( - SubmissionType, - related_name="solution_comments", - on_delete=models.PROTECT, - ) diff --git a/grady/core/models/test.py b/grady/core/models/test.py deleted file mode 100644 index b43d3b2c..00000000 --- a/grady/core/models/test.py +++ /dev/null @@ -1,44 +0,0 @@ -import logging -import uuid - -import constance -from django.db import models - -log = logging.getLogger(__name__) -config = constance.config - - -class Test(models.Model): - """Tests contain information that has been unapproved by automated tests, - and directly belongs to a submission. Often certain Feedback was already - given by information provided by these tests. - - Attributes - ---------- - annotation : TextField - All the output of the test (e.g. compiler output) - label : CharField - Indicates SUCCES or FAILURE - name : CharField - The name of the test that was performed - submission : ForeignKey - The submission the tests where unapproved on - """ - test_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - - name = models.CharField(max_length=30) - label = models.CharField(max_length=50) - annotation = models.TextField() - submission = models.ForeignKey('submission', - related_name='tests', - on_delete=models.CASCADE,) - - class Meta: - verbose_name = "Test" - verbose_name_plural = "Tests" - unique_together = (('submission', 'name'),) - - def __str__(self) -> str: - return f'{self.name} {self.label}' diff --git a/grady/core/models/user_account.py b/grady/core/models/user_account.py deleted file mode 100644 index 281d1747..00000000 --- a/grady/core/models/user_account.py +++ /dev/null @@ -1,109 +0,0 @@ -import logging -import uuid - -import constance -from django.contrib.auth.models import AbstractUser, UserManager -from django.db import models -from django.db.models import (Case, Count, IntegerField, Q, - Value, When) -from django.apps import apps - -from core.models import Group - -log = logging.getLogger(__name__) -config = constance.config - - -class TutorReviewerManager(UserManager): - - def get_queryset(self): - return super().get_queryset().filter( - Q(role=UserAccount.TUTOR) | Q(role=UserAccount.REVIEWER)) - - def with_feedback_count(self): - def _get_counter(stage): - return Count(Case( - When( - Q(assignments__stage=stage) & - Q(assignments__is_done=True), - then=Value(1))), - output_field=IntegerField()) - - assignment_model = apps.get_model('core', 'TutorSubmissionAssignment') # noqa - - return self.get_queryset() \ - .annotate(feedback_created=_get_counter( - assignment_model.FEEDBACK_CREATION)) \ - .annotate(feedback_validated=_get_counter( - assignment_model.FEEDBACK_VALIDATION)) - - -def group_default(): - return [Group.objects.get_or_create(name="Default Group")[0].pk] - - -class UserAccount(AbstractUser): - """ - An abstract base class implementing a fully featured User model with - admin-compliant permissions. - - Username and password are required. Other fields are optional. - """ - - STUDENT = 'Student' - TUTOR = 'Tutor' - REVIEWER = 'Reviewer' - - ROLE_CHOICES = ( - (STUDENT, 'student'), - (TUTOR, 'tutor'), - (REVIEWER, 'reviewer') - ) - - # Fields - role = models.CharField(max_length=50, choices=ROLE_CHOICES) - user_id = models.UUIDField(primary_key=True, - default=uuid.uuid4, - editable=False) - - exercise_groups = models.ManyToManyField(Group, - blank=True, - related_name='users', - default=group_default) - - fullname = models.CharField('full name', max_length=70, blank=True) - is_admin = models.BooleanField(default=False) - - # Managers - objects = UserManager() - corrector = TutorReviewerManager() - - # Helper methods - def is_student(self): - return self.role == 'Student' - - def is_tutor(self): - return self.role == 'Tutor' - - def is_reviewer(self): - return self.role == 'Reviewer' - - def set_groups(self, groups): - if groups == [] or groups is None: - self.exercise_groups.set(group_default()) - else: - self.exercise_groups.set(groups) - - # All of these methods are deprecated and should be replaced by custom - # Managers (see tutor manager) - @classmethod - def get_students(cls): - return cls.objects.filter(role=cls.STUDENT) - - @classmethod - def get_tutors(cls): - return cls.objects.filter(role=cls.TUTOR) - - @classmethod - def get_reviewers(cls): - return cls.objects.filter(role=cls.REVIEWER) diff --git a/grady/core/permissions.py b/grady/core/permissions.py deleted file mode 100644 index af557db0..00000000 --- a/grady/core/permissions.py +++ /dev/null @@ -1,62 +0,0 @@ -import logging - -import constance -from django.http import HttpRequest -from django.views import View -from rest_framework import permissions - -log = logging.getLogger(__name__) -config = constance.config - - -class IsUserRoleGenericPermission(permissions.BasePermission): - """ Generic class that encapsulates how to identify someone - as a member of a user Group """ - - def has_permission(self, request: HttpRequest, view: View) -> bool: - """ required by BasePermission. Check if user is instance of any - of the models provided in class' models attribute """ - assert self.roles is not None, ( - "'%s' has to include a `roles` attribute" - % self.__class__.__name__ - ) - - user = request.user - is_authorized = user.is_superuser or (user.is_authenticated and - user.role in self.roles) - - return is_authorized - - -class IsStudent(IsUserRoleGenericPermission): - """ Has student permissions """ - roles = ('Student', ) - - -class IsReviewer(IsUserRoleGenericPermission): - """ Has reviewer permissions """ - roles = ('Reviewer', ) - - -class IsTutor(IsUserRoleGenericPermission): - """ Has tutor permissions """ - roles = ('Tutor', ) - - -class IsTutorOrReviewer(IsUserRoleGenericPermission): - """ Has tutor or reviewer permissions """ - roles = ('Tutor', 'Reviewer') - - -class GenericIsConfigEnabled(permissions.BasePermission): - """ - Generic class that encapsulates how to check if a runtime config is set. - """ - def has_permission(self, request, view) -> bool: - assert self.required_configs is not None, "Need to include at least one config attribute" - - return all(getattr(config, cfg) for cfg in self.required_configs) - - -class SolutionsEnabledToStudents(GenericIsConfigEnabled): - required_configs = ["SHOW_SOLUTION_TO_STUDENTS"] diff --git a/grady/core/serializers/__init__.py b/grady/core/serializers/__init__.py deleted file mode 100644 index a607259e..00000000 --- a/grady/core/serializers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from .common_serializers import * # noqa -from .submission_type import (SubmissionTypeListSerializer, SubmissionTypeSerializer, # noqa - SolutionCommentSerializer) # noqa -from .feedback import (FeedbackSerializer, FeedbackWithStudentSerializer, # noqa - FeedbackCommentSerializer, # noqa - VisibleCommentFeedbackSerializer) # noqa -from .assignment import * # noqa -from .student import * # noqa -from .submission import * # noqa -from .tutor import CorrectorSerializer # noqa -from .label import LabelSerializer # noqa diff --git a/grady/core/serializers/assignment.py b/grady/core/serializers/assignment.py deleted file mode 100644 index 02c3c0a6..00000000 --- a/grady/core/serializers/assignment.py +++ /dev/null @@ -1,73 +0,0 @@ -import secrets - -from rest_framework import serializers - -from core import models -from core.models import (Submission, TutorSubmissionAssignment) -from core.serializers import (DynamicFieldsModelSerializer, FeedbackSerializer, - TestSerializer) - - -class SubmissionAssignmentSerializer(DynamicFieldsModelSerializer): - full_score = serializers.ReadOnlyField(source='type.full_score') - tests = TestSerializer(many=True, read_only=True) - - class Meta: - model = Submission - fields = ('pk', 'type', 'text', 'full_score', 'tests', 'source_code_available') - read_only_fields = ('text', 'type') - - -class AssignmentSerializer(DynamicFieldsModelSerializer): - of_tutor = serializers.CharField(source='owner.username') - - class Meta: - model = TutorSubmissionAssignment - fields = ('pk', 'submission', 'is_done', 'owner', 'stage', 'of_tutor') - read_only_fields = ('is_done', 'submission', 'owner') - - -class AssignmentDetailSerializer(AssignmentSerializer): - feedback = FeedbackSerializer(source='submission.feedback', read_only=True) - submission = SubmissionAssignmentSerializer(read_only=True) - submission_type = serializers.UUIDField(write_only=True) - group = serializers.UUIDField(write_only=True, required=False) - - class Meta: - model = TutorSubmissionAssignment - fields = ('pk', 'submission', 'feedback', 'is_done', - 'owner', 'stage', 'submission_type', 'group') - read_only_fields = ('is_done', 'submission', 'owner') - - def create(self, validated_data): - owner = self.context['request'].user - - open_assignments = TutorSubmissionAssignment.objects.filter( - owner=owner, - is_done=False, - ) - - if len(open_assignments) > 2: - raise models.NotMoreThanTwoOpenAssignmentsAllowed( - 'Not more than two active assignments allowed' - ) - - candidates = TutorSubmissionAssignment.objects.available_assignments({ - **validated_data, - 'owner': owner - }) - - length = len(candidates) - - if length == 0: - raise models.SubmissionTypeDepleted( - 'There are no submissions left for the given criteria' - ) - - index = secrets.choice(range(length)) - - return TutorSubmissionAssignment.objects.create( - submission=candidates[index].submission, - owner=owner, - stage=validated_data.get('stage') - ) diff --git a/grady/core/serializers/common_serializers.py b/grady/core/serializers/common_serializers.py deleted file mode 100644 index c70c5116..00000000 --- a/grady/core/serializers/common_serializers.py +++ /dev/null @@ -1,104 +0,0 @@ -import logging -from collections import defaultdict - -import django.contrib.auth.password_validation as validators -from django.core import exceptions -from django.db.models.manager import Manager -from rest_framework import serializers -from rest_framework.utils import html - -from core import models - -from .generic import DynamicFieldsModelSerializer - -log = logging.getLogger(__name__) - - -class ExamSerializer(DynamicFieldsModelSerializer): - - class Meta: - model = models.ExamType - fields = ('pk', 'module_reference', 'total_score', - 'pass_score', 'pass_only',) - - -class GroupSerializer(serializers.ModelSerializer): - exam = ExamSerializer(many=False) - - class Meta: - model = models.Group - fields = ('pk', 'name', 'exam') - - -class TestSerializer(DynamicFieldsModelSerializer): - - class Meta: - model = models.Test - fields = ('pk', 'name', 'label', 'annotation') - - -class UserAccountSerializer(DynamicFieldsModelSerializer): - exercise_groups = GroupSerializer(many=True) - - def validate(self, data): - password = data.get('password') - - try: - if password is not None: - validators.validate_password(password=password, - user=self.instance) - except exceptions.ValidationError as err: - raise serializers.ValidationError({'password': list(err.messages)}) - return data - - class Meta: - model = models.UserAccount - fields = ('pk', 'username', 'role', 'is_admin', 'password', 'exercise_groups') - read_only_fields = ('pk', 'username', 'role', 'is_admin', 'exercise_groups') - extra_kwargs = {'password': {'write_only': True}} - - -class CommentDictionarySerializer(serializers.ListSerializer): - - def to_internal_value(self, comment_dict): - """ Converts a line_no -> comment list dictionary back to a list - of comments. Currently we do not have any information about the - feedback since it is not available in this scope. Feedback is - responsible to add it later on update/creation """ - if html.is_html_input(comment_dict): - comment_dict = html.parse_html_list(comment_dict) - - if not isinstance(comment_dict, dict): - raise serializers.ValidationError( - 'Comments have to be provided as a dict' - 'with: line -> list of comments' - ) - - ret = [] - errors = [] - - for line, comment in comment_dict.items(): - try: - comment['of_line'] = line - validated = self.child.run_validation(comment) - except serializers.ValidationError as err: - errors.append(err.detail) - else: - ret.append(validated) - errors.append({}) - - if any(errors): - raise serializers.ValidationError(errors) - - return ret - - def to_representation(self, comments): - """ Provides a dict where all the keys correspond to lines and contain - a list of comments on that line. """ - if isinstance(comments, Manager): - comments = comments.all() - - ret = defaultdict(list) - for comment in comments: - ret[comment.of_line].append(self.child.to_representation(comment)) - return ret diff --git a/grady/core/serializers/feedback.py b/grady/core/serializers/feedback.py deleted file mode 100644 index d67db180..00000000 --- a/grady/core/serializers/feedback.py +++ /dev/null @@ -1,252 +0,0 @@ -import logging - -import constance -from django.db import transaction -from rest_framework import serializers - -from core import models -from core.models import Feedback, UserAccount -from core.serializers import CommentDictionarySerializer -from util.factories import GradyUserFactory - -from .generic import DynamicFieldsModelSerializer - -config = constance.config -log = logging.getLogger(__name__) -user_factory = GradyUserFactory() - - -class FeedbackCommentSerializer(DynamicFieldsModelSerializer): - of_tutor = serializers.StringRelatedField(source='of_tutor.username') - labels = serializers.PrimaryKeyRelatedField(many=True, required=False, - queryset=models.FeedbackLabel.objects.all()) - - class Meta: - model = models.FeedbackComment - fields = ('pk', - 'text', - 'created', - 'modified', - 'of_tutor', - 'of_line', - 'labels', - 'visible_to_student') - # visible_to_student is kept in sync with modified, such that the latest modified - # comment is the one that is visible - read_only_fields = ('created', 'of_tutor', 'visible_to_student') - extra_kwargs = { - 'of_feedback': {'write_only': True}, - 'of_line': {'write_only': True}, - } - list_serializer_class = CommentDictionarySerializer - - -class FeedbackSerializer(DynamicFieldsModelSerializer): - feedback_lines = FeedbackCommentSerializer(many=True, required=False) - of_submission_type = serializers.ReadOnlyField( - source='of_submission.type.pk') - feedback_stage_for_user = serializers.SerializerMethodField() - labels = serializers.PrimaryKeyRelatedField(many=True, required=False, - queryset=models.FeedbackLabel.objects.all()) - - def get_feedback_stage_for_user(self, obj): - """ Search for the assignment of this feedback and report in which - stage the tutor has worked on it. - - TODO Note: This method is unorthodox since it mingles the rather dump - feedback object with assignment logic. The reverse lookups in the - method are not pre-fetched. Remove if possible. """ - if 'request' not in self.context: - return - - # This is only required for tutors - user = self.context['request'].user - if user.role == models.UserAccount.REVIEWER: - return None - - assignments = obj.of_submission.assignments.filter(owner=user) - - if assignments.count() == 0: - return None - - return assignments[0].stage - - @transaction.atomic - def create(self, validated_data) -> Feedback: - submission = validated_data.pop('of_submission') - feedback_lines = validated_data.pop('feedback_lines', []) - labels = validated_data.pop('labels', []) - user = self.context['request'].user - if config.SINGLE_CORRECTION: - is_final = True - validated_data.pop('is_final') - else: - is_final = validated_data.pop('is_final', False) - final_by_reviewer = is_final and \ - user.role == UserAccount.REVIEWER - feedback = Feedback.objects.create(of_submission=submission, - is_final=is_final, - final_by_reviewer=final_by_reviewer, - **validated_data) - for label in labels: - feedback.labels.add(label) - - submission.meta.feedback_authors.add(self.context['request'].user) - - for comment in feedback_lines: - labels = comment.pop('labels', []) - comment_instance = models.FeedbackComment.objects.create( - of_feedback=feedback, - of_tutor=self.context['request'].user, - **comment - ) - comment_instance.labels.set(labels) - - return feedback - - @transaction.atomic - def update(self, feedback, validated_data): - user = self.context['request'].user - - if user.role == UserAccount.REVIEWER: - feedback.final_by_reviewer = self.context['request'].data['is_final'] - - for comment in validated_data.pop('feedback_lines', []): - labels = comment.pop('labels', None) - comment_instance, _ = models.FeedbackComment.objects.update_or_create( - of_feedback=feedback, - of_tutor=self.context['request'].user, - of_line=comment.get('of_line'), - defaults={'text': comment.get('text')}) - - if labels is not None: - comment_instance.labels.set(labels) - - # Set all feedback final for when single correction is active - if config.SINGLE_CORRECTION: - feedback.is_final = True - validated_data['is_final'] = True - - return super().update(feedback, validated_data) - - def validate_of_submission(self, submission): - feedback = self.instance - if feedback is not None and feedback.of_submission.pk != submission.pk: - raise serializers.ValidationError( - 'It is not allowed to update this field.') - - return submission - - def validate_is_final(self, is_final): - feedback = self.instance - if feedback is None: - return is_final - - user = self.context['request'].user - meta = feedback.of_submission.meta - user_in_authors = meta.feedback_authors.filter(user_id=user.user_id).exists() - allowed_assignment_count = 3 if user_in_authors else 2 - if meta.done_assignments >= allowed_assignment_count and not is_final: - raise serializers.ValidationError( - 'Conflict resolutions must be final' - ) - - return is_final - - def validate(self, data): - if self.instance: - score = data.get('score', self.instance.score) - submission = data.get('of_submission', self.instance.of_submission) - else: - try: - score = data.get('score') - submission = data.get('of_submission') - except KeyError: - raise serializers.ValidationError( - 'You need a score and a submission.') - - if not 0 <= score <= submission.type.full_score: - raise serializers.ValidationError( - f'Score has to be in range [0..{submission.type.full_score}].') - - if score.as_integer_ratio()[1] not in Feedback.ALLOWED_DENOMINATORS: - raise serializers.ValidationError( - f'For fractional scores, the denominator must be one of ' - f'{Feedback.ALLOWED_DENOMINATORS}' - ) - - has_full_score = score == submission.type.full_score - has_feedback_lines = ('feedback_lines' in data and - len(data['feedback_lines']) > 0 or - self.instance is not None and - self.instance.feedback_lines.count() > 0) - - has_label_attached = ('labels' in data and len(data['labels']) > 0 or - self.instance is not None and - self.instance.labels.count() > 0) - - labels_get_deleted = 'labels' in data and len(data['labels']) == 0 - - # a non-full scored feedback is considered valid if there is - # at least one comment line or a label attached to the feedback - if not (has_full_score or has_feedback_lines or - (has_label_attached and not labels_get_deleted)): - raise serializers.ValidationError( - 'Sorry, you have to explain why this does not get full score') - - if hasattr(submission, 'feedback') and not self.instance: - raise serializers.ValidationError( - 'Feedback for this submission already exists') - - for comment in data.get('feedback_lines', {}): - lines_in_submission = len(submission.text.split('\n')) - - if comment['text'] == '' and 'labels' not in comment: - raise serializers.ValidationError( - "Cannot create feedback with an empty comment attached to it" - ) - if not 0 < comment['of_line'] <= lines_in_submission: - raise serializers.ValidationError( - "Cannot comment line number %d of %d" % ( - comment['of_line'], lines_in_submission)) - - return data - - class Meta: - model = Feedback - fields = ('pk', 'of_submission', 'is_final', 'score', 'feedback_lines', - 'created', 'modified', 'of_submission_type', 'feedback_stage_for_user', 'labels') - - -class FeedbackWithStudentSerializer(FeedbackSerializer): - of_student = serializers.ReadOnlyField(source='of_submission.student.user.fullname') - - class Meta: - model = Feedback - fields = ('pk', 'of_submission', 'is_final', 'score', 'feedback_lines', 'of_student', - 'created', 'modified', 'of_submission_type', 'feedback_stage_for_user', 'labels') - - -class VisibleCommentFeedbackSerializer(FeedbackSerializer): - feedback_lines = serializers.SerializerMethodField() - of_submission_type = serializers.ReadOnlyField( - source='of_submission.type.pk') - - def get_feedback_lines(self, feedback): - comments = feedback.feedback_lines.filter(visible_to_student=True) - serializer = FeedbackCommentSerializer( - comments, - many=True, - fields=('pk', 'text', 'created', 'modified', 'of_line', 'labels') - ) - # this is a weird hack because, for some reason, serializer.data - # just won't contain the correct data. Instead .data returns a list - # containing just the `of_line` attr of the serialized comments - # after long debugging i found that for inexplicable reasons - # `data.serializer._data` contains the correct data. No clue why. - return serializer.data.serializer._data - - class Meta: - model = Feedback - fields = ('pk', 'of_submission', 'is_final', 'score', 'feedback_lines', - 'created', 'of_submission_type', 'labels') diff --git a/grady/core/serializers/generic.py b/grady/core/serializers/generic.py deleted file mode 100644 index 944c7a30..00000000 --- a/grady/core/serializers/generic.py +++ /dev/null @@ -1,18 +0,0 @@ -from rest_framework import serializers - - -class DynamicFieldsModelSerializer(serializers.ModelSerializer): - - def __init__(self, *args, **kwargs): - # Don't pass the 'fields' arg up to the superclass - fields = kwargs.pop('fields', None) - - # Instantiate the superclass normally - super(DynamicFieldsModelSerializer, self).__init__(*args, **kwargs) - - if fields is not None: - # Drop any fields that are not specified in the `fields` argument. - allowed = set(fields) - existing = set(self.fields) - for field_name in existing - allowed: - self.fields.pop(field_name) diff --git a/grady/core/serializers/label.py b/grady/core/serializers/label.py deleted file mode 100644 index 9aad4762..00000000 --- a/grady/core/serializers/label.py +++ /dev/null @@ -1,14 +0,0 @@ -from rest_framework import serializers - -from core.models import FeedbackLabel - - -class LabelSerializer(serializers.ModelSerializer): - class Meta: - model = FeedbackLabel - fields = ( - 'pk', - 'name', - 'description', - 'colour' - ) diff --git a/grady/core/serializers/student.py b/grady/core/serializers/student.py deleted file mode 100644 index 54a234a4..00000000 --- a/grady/core/serializers/student.py +++ /dev/null @@ -1,81 +0,0 @@ -from rest_framework import serializers - -from core.models import StudentInfo, ExamInfo -from core.serializers import DynamicFieldsModelSerializer, ExamSerializer -from core.serializers.submission import (SubmissionListSerializer, - SubmissionNoTextFieldsSerializer, - SubmissionNoTypeSerializer) - - -class ExamInfoListSerializer(DynamicFieldsModelSerializer): - - class Meta: - model = ExamInfo - fields = ('exam', 'student', 'total_score', 'passes_exam') - - -class StudentInfoSerializer(DynamicFieldsModelSerializer): - name = serializers.ReadOnlyField(source='user.fullname') - matrikel_no = serializers.ReadOnlyField(source='user.matrikel_no') - exams = ExamInfoListSerializer(many=True) - submissions = SubmissionListSerializer(many=True) - - class Meta: - model = StudentInfo - fields = ('pk', - 'name', - 'user', - 'matrikel_no', - 'submissions', - 'exams') - - -class StudentInfoForListViewSerializer(DynamicFieldsModelSerializer): - name = serializers.ReadOnlyField(source='user.fullname') - user = serializers.ReadOnlyField(source='user.username') - user_pk = serializers.ReadOnlyField(source='user.pk') - exams = serializers.ReadOnlyField(source='exams.module_reference') - submissions = SubmissionNoTextFieldsSerializer(many=True) - is_active = serializers.BooleanField(source='user.is_active') - - class Meta: - model = StudentInfo - fields = ('pk', - 'name', - 'user', - 'user_pk', - 'exams', - 'submissions', - 'matrikel_no', - 'is_active') - - -class StudentExportSerializer(DynamicFieldsModelSerializer): - name = serializers.ReadOnlyField(source='user.fullname') - user = serializers.ReadOnlyField(source='user.username') - user_pk = serializers.ReadOnlyField(source='user.pk') - exams = ExamInfoListSerializer(many=True) - email = serializers.ReadOnlyField(source='user.email') - is_active = serializers.BooleanField(source='user.is_active') - submissions = SubmissionNoTypeSerializer(many=True) - - class Meta: - model = StudentInfo - fields = ('pk', - 'name', - 'user', - 'user_pk', - 'exams', - 'email', - 'submissions', - 'matrikel_no', - 'is_active') - - -class ExamInfoSerializer(DynamicFieldsModelSerializer): - exam = ExamSerializer() - student = StudentInfoSerializer() - - class Meta: - model = ExamInfo - fields = ('exam', 'student', 'total_score', 'passes_exam') diff --git a/grady/core/serializers/submission.py b/grady/core/serializers/submission.py deleted file mode 100644 index b7b789d2..00000000 --- a/grady/core/serializers/submission.py +++ /dev/null @@ -1,69 +0,0 @@ -from rest_framework import serializers - -from core.models import Submission -from core.serializers import (DynamicFieldsModelSerializer, FeedbackSerializer, - SubmissionTypeListSerializer, - SubmissionTypeSerializer, TestSerializer, - VisibleCommentFeedbackSerializer) - - -class SubmissionNoTextFieldsSerializer(DynamicFieldsModelSerializer): - score = serializers.ReadOnlyField(source='feedback.score') - final = serializers.ReadOnlyField(source='feedback.is_final') - full_score = serializers.ReadOnlyField(source='type.full_score') - - class Meta: - model = Submission - fields = ('pk', 'type', 'score', 'final', 'full_score') - - -class StudentSubmissionSerializer(DynamicFieldsModelSerializer): - type = SubmissionTypeSerializer( - # exclude solution from Type information - fields=(('pk', - 'name', - 'full_score', - 'description', - 'programming_language'))) - feedback = VisibleCommentFeedbackSerializer() - tests = TestSerializer(many=True) - - class Meta: - model = Submission - fields = ('pk', 'type', 'text', 'feedback', 'tests', 'source_code_available') - - -class StudentSubmissionWithSolutionSerializer(StudentSubmissionSerializer): - type = SubmissionTypeSerializer() - - class Meta: - model = Submission - fields = ('pk', 'type', 'text', 'feedback', 'tests', 'source_code_available') - - -class SubmissionNoTypeSerializer(DynamicFieldsModelSerializer): - feedback = FeedbackSerializer() - full_score = serializers.ReadOnlyField(source='type.full_score') - tests = TestSerializer(many=True) - - class Meta: - model = Submission - fields = ('pk', 'type', 'full_score', 'text', 'feedback', 'tests', 'source_code_available') - - -class SubmissionNoTypeWithStudentSerializer(SubmissionNoTypeSerializer): - of_student = serializers.ReadOnlyField(source='student.user.fullname') - - class Meta: - model = Submission - fields = ('pk', 'type', 'full_score', 'text', 'feedback', - 'tests', 'of_student', 'source_code_available') - - -class SubmissionListSerializer(DynamicFieldsModelSerializer): - type = SubmissionTypeListSerializer(fields=('pk', 'name', 'full_score')) - feedback = FeedbackSerializer() - - class Meta: - model = Submission - fields = ('pk', 'type', 'feedback') diff --git a/grady/core/serializers/submission_type.py b/grady/core/serializers/submission_type.py deleted file mode 100644 index d60e44fb..00000000 --- a/grady/core/serializers/submission_type.py +++ /dev/null @@ -1,68 +0,0 @@ -import logging - -from rest_framework import serializers -from rest_framework.exceptions import ValidationError - -from core import models -from core.serializers import (DynamicFieldsModelSerializer, CommentDictionarySerializer, - ExamSerializer) - -log = logging.getLogger(__name__) - - -class SolutionCommentSerializer(DynamicFieldsModelSerializer): - of_user = serializers.StringRelatedField(source='of_user.username') - - def validate(self, attrs): - super().validate(attrs) - submission_type = attrs.get('of_submission_type') - of_line = attrs.get('of_line') - if self.instance: - submission_type = self.instance.of_submission_type - of_line = self.instance.of_line - - max_line_number = len(submission_type.solution.split('\n')) - - if not (0 < of_line <= max_line_number): - raise ValidationError('Invalid line number for comment') - return attrs - - def create(self, validated_data): - validated_data['of_user'] = self.context['request'].user - return super().create(validated_data) - - class Meta: - model = models.SolutionComment - fields = ( - 'pk', - 'text', - 'created', - 'of_user', - 'of_line', - 'of_submission_type' - ) - read_only_fields = ('pk', 'created', 'of_user') - list_serializer_class = CommentDictionarySerializer - - -class SubmissionTypeListSerializer(DynamicFieldsModelSerializer): - - class Meta: - model = models.SubmissionType - fields = ('pk', 'name', 'full_score') - - -class SubmissionTypeSerializer(DynamicFieldsModelSerializer): - solution_comments = SolutionCommentSerializer(many=True, required=False) - exam_type = ExamSerializer() - - class Meta: - model = models.SubmissionType - fields = ('pk', - 'name', - 'exam_type', - 'full_score', - 'description', - 'solution', - 'programming_language', - 'solution_comments') diff --git a/grady/core/serializers/tutor.py b/grady/core/serializers/tutor.py deleted file mode 100644 index b2eff1e8..00000000 --- a/grady/core/serializers/tutor.py +++ /dev/null @@ -1,63 +0,0 @@ -import logging - -import django.contrib.auth.password_validation as validators -from django.core import exceptions -from rest_framework import serializers - -from core import models -from util.factories import GradyUserFactory - -from .generic import DynamicFieldsModelSerializer - -log = logging.getLogger(__name__) -user_factory = GradyUserFactory() - - -class CorrectorSerializer(DynamicFieldsModelSerializer): - feedback_created = serializers.SerializerMethodField() - feedback_validated = serializers.SerializerMethodField() - password = serializers.CharField( - style={'input_type': 'password'}, - write_only=True, - required=False - ) - role = serializers.CharField(read_only=True) - - def get_feedback_created(self, t): - ''' It is required that this field was previously annotated ''' - return t.feedback_created if hasattr(t, 'feedback_created') else 0 - - def get_feedback_validated(self, t): - ''' It is required that this field was previously annotated ''' - return t.feedback_validated if hasattr(t, 'feedback_validated') else 0 - - def create(self, validated_data) -> models.UserAccount: - log_validated_data = dict(validated_data) - log_validated_data['password'] = '******' - log.info("Crating tutor from data %s", log_validated_data) - return user_factory.make_tutor( - username=validated_data['username'], - password=validated_data.get('password'), - is_active=validated_data.get('is_active', False)) - - def validate(self, data): - user = models.UserAccount(**data) - password = data.get('password') - - try: - if password is not None: - validators.validate_password(password=password, user=user) - except exceptions.ValidationError as err: - raise serializers.ValidationError({'password': list(err.messages)}) - return data - - class Meta: - model = models.UserAccount - fields = ('pk', - 'password', - 'is_active', - 'username', - 'feedback_created', - 'feedback_validated', - 'exercise_groups', - 'role') diff --git a/grady/core/signals.py b/grady/core/signals.py deleted file mode 100644 index b857cb0b..00000000 --- a/grady/core/signals.py +++ /dev/null @@ -1,73 +0,0 @@ -import logging - -from django.db.models.signals import post_save, pre_delete, pre_save -from django.dispatch import receiver - -from core import models -from core.models import (Feedback, FeedbackComment, MetaSubmission, Submission, - TutorSubmissionAssignment) - -log = logging.getLogger(__name__) - - -@receiver(post_save, sender=Submission) -def create_meta_after_submission_create(sender, instance, created, **kwargs): - log.debug('SIGNAL -- create_meta_after_submission_create') - if created: - MetaSubmission.objects.create(submission=instance) - - -@receiver(post_save, sender=TutorSubmissionAssignment) -def update_active_after_assignment_save(sender, instance, created, **kwargs): - """ Assignments are created undone therefore save that no other - should use it. If it is already set to done it is not active. - """ - log.debug('SIGNAL -- update_active_after_assignment_save') - meta = instance.submission.meta - meta.has_active_assignment = created and not instance.is_done - meta.save() - - -@receiver(pre_delete, sender=TutorSubmissionAssignment) -def remove_active_assignment_on_delete(sender, instance, **kwargs): - log.debug('SIGNAL -- remove_active_assignment_on_delete') - if instance.is_done: - raise models.DeletionOfDoneAssignmentsNotPermitted() - meta = instance.submission.meta - meta.has_active_assignment = False - meta.save() - - -@receiver(post_save, sender=Feedback) -def update_after_feedback_save(sender, instance, created, **kwargs): - """ Do the following steps when feedback is saved: - - - set that feedback exists - - copy the final status of the feedback - - set all assignments of the submission done and remove active status - """ - log.debug('SIGNAL -- update_after_feedback_save') - meta = instance.of_submission.meta - meta.has_feedback = True - meta.has_final_feedback = instance.is_final or instance.final_by_reviewer - meta.save() - - -@receiver(post_save, sender=Feedback) -def update_student_score(sender, instance, **kwargs): - student = instance.of_submission.student - - for exam_info in student.exams.all(): - exam_info.update_total_score() - log.debug('SIGNAL -- Scores of student %s were updated)', student) - - -@receiver(pre_save, sender=FeedbackComment) -def set_comment_visibility_after_conflict(sender, instance, **kwargs): - log.debug('SIGNAL -- set_comment_visibility_after_conflict') - comments_on_the_same_line = FeedbackComment.objects.filter( - of_line=instance.of_line, - of_feedback=instance.of_feedback, - ) - comments_on_the_same_line.update(visible_to_student=False) - instance.visible_to_student = True diff --git a/grady/core/templates/index.html b/grady/core/templates/index.html deleted file mode 100644 index c94bda45..00000000 --- a/grady/core/templates/index.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load static %} -<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Grady</title><script>MathJax = { - loader: {load: ['input/asciimath', 'output/chtml', 'input/tex']}, - asciimath: { - delimiters: [['$', '$']] - }, - options: { - skipHtmlTags: [// HTML tags that won't be searched for math - 'script', 'noscript', 'style', 'textarea', 'pre', - 'code', 'annotation', 'annotation-xml' - ], - includeHtmlTags: { // HTML tags that can appear within math - br: '\n', wbr: '', '#comment': '' - }, - ignoreHtmlClass: 'tex2jax_ignore', // class that marks tags not to search - processHtmlClass: 'latex', // class that marks tags that should be searched - } - };</script><script id=MathJax-script async src=https://grady.informatik.uni-goettingen.de/static/mathjax/es5/startup.js></script><link href={% static 'css/app.456a8c3b.css' %} rel=preload as=style><link href={% static 'css/chunk-vendors.7792972f.css' %} rel=preload as=style><link href={% static 'js/app.fa6788ea.js' %} rel=preload as=script><link href={% static 'js/chunk-vendors.a2099867.js' %} rel=preload as=script><link href={% static 'css/chunk-vendors.7792972f.css' %} rel=stylesheet><link href={% static 'css/app.456a8c3b.css' %} rel=stylesheet></head><body class=tex2jax_ignore><noscript><strong>We're sorry but frontend doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src={% static 'js/chunk-vendors.a2099867.js' %}></script><script src={% static 'js/app.fa6788ea.js' %}></script></body></html> \ No newline at end of file diff --git a/grady/core/tests/__init__.py b/grady/core/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/grady/core/tests/test_access_rights.py b/grady/core/tests/test_access_rights.py deleted file mode 100644 index 4fbe8575..00000000 --- a/grady/core/tests/test_access_rights.py +++ /dev/null @@ -1,163 +0,0 @@ -from django.urls import reverse -from rest_framework import status -from rest_framework.test import (APIRequestFactory, APITestCase, - force_authenticate) - -from core.views import (ExamApiViewSet, StudentReviewerApiViewSet, - StudentSelfApiView, CorrectorApiViewSet) -from util.factories import GradyUserFactory, make_exams - - -class AccessRightsOfStudentAPIViewTests(APITestCase): - """ All tests that ensure that only students can see what students - should see belong here """ - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.student = self.user_factory.make_student(exam=self.exam) - self.tutor = self.user_factory.make_tutor(exam=self.exam) - self.reviewer = self.user_factory.make_reviewer(exam=self.exam) - self.request = self.factory.get(reverse('student-page')) - self.view = StudentSelfApiView.as_view() - - def test_unauthenticated_access_denied(self): - response = self.view(self.request) - self.assertEqual(status.HTTP_401_UNAUTHORIZED, response.status_code) - - def test_tutor_has_no_access(self): - force_authenticate(self.request, user=self.tutor) - response = self.view(self.request) - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - - def test_reviewer_has_no_access(self): - force_authenticate(self.request, user=self.reviewer) - response = self.view(self.request) - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - - def test_student_is_authorized(self): - force_authenticate(self.request, user=self.student) - response = self.view(self.request) - self.assertEqual(status.HTTP_200_OK, response.status_code) - - -class AccessRightsOfTutorAPIViewTests(APITestCase): - """ Tests to ensure that only Reviewers have access to the TutorList - information """ - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.student = self.user_factory.make_student(exam=self.exam) - self.tutor = self.user_factory.make_tutor(exam=self.exam) - self.reviewer = self.user_factory.make_reviewer(exam=self.exam) - self.request = self.factory.get(reverse('corrector-list')) - self.view = CorrectorApiViewSet.as_view({'get': 'list'}) - - def test_unauthenticated_access_denied(self): - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) - - def test_student_has_no_access(self): - force_authenticate(self.request, user=self.student) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_tutor_has_no_access(self): - force_authenticate(self.request, user=self.tutor) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_reviewer_has_access(self): - force_authenticate(self.request, user=self.reviewer) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_200_OK) - - -class AccessRightsOfStudentReviewerAPIViewTest(APITestCase): - """ Tests to ensure that only Reviewers have access to the - StudentReviewerApi endpoint information""" - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.student = self.user_factory.make_student(exam=self.exam) - self.tutor = self.user_factory.make_tutor(exam=self.exam) - self.reviewer = self.user_factory.make_reviewer(exam=self.exam) - self.request = self.factory.get(reverse('student-list')) - self.view = StudentReviewerApiViewSet.as_view({'get': 'list'}) - - def test_unauthenticated_access_denied(self): - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) - - def test_student_has_no_access(self): - force_authenticate(self.request, user=self.student) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_reviewer_has_access(self): - force_authenticate(self.request, user=self.reviewer) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_200_OK) - - -class AccessRightsOfExamTypeAPIViewTest(APITestCase): - """ In older versions students had no access rights, but since multiple exams can now be - imported and the examselection page is necessary, everyone needs access.""" - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.student = self.user_factory.make_student(exam=self.exam) - self.tutor = self.user_factory.make_tutor(exam=self.exam) - self.reviewer = self.user_factory.make_reviewer(exam=self.exam) - self.request = self.factory.get(reverse('examtype-list')) - self.view = ExamApiViewSet.as_view({'get': 'list'}) - - def test_student_has_access(self): - force_authenticate(self.request, user=self.student) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_200_OK) - - # TODO see issue #90 for details - # def test_tutor_has_no_access(self): - # force_authenticate(self.request, user=self.tutor) - # response = self.view(self.request) - # self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_reviewer_has_access(self): - force_authenticate(self.request, user=self.reviewer) - response = self.view(self.request) - self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/grady/core/tests/test_assignment_views.py b/grady/core/tests/test_assignment_views.py deleted file mode 100644 index a205d97c..00000000 --- a/grady/core/tests/test_assignment_views.py +++ /dev/null @@ -1,317 +0,0 @@ -from rest_framework import status -from rest_framework.test import APIClient, APITestCase - -from core import models -from core.models import (TutorSubmissionAssignment) -from util.factories import make_test_data, make_exams - - -class TestApiEndpoints(APITestCase): - - @classmethod - def setUpTestData(cls): - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - cls.data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type_id': exams[0].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }, - { - 'name': '02. Merge this or that or maybe even this', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - } - ], - 'students': [ - { - 'username': 'student01', - 'password': 'p', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student02', - 'password': 'p', - 'exam': 'Test Exam 01' - } - ], - 'tutors': [ - {'username': 'tutor01', 'password': 'p'}, - {'username': 'tutor02', 'password': 'p'} - ], - 'reviewers': [ - {'username': 'reviewer', 'password': 'p'} - ], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }], - } - - } - }, - { - 'text': 'function blabl\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student01' - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student02' - }, - { - 'text': 'function lorem ipsum etc\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student02' - }, - ]} - ) - - def setUp(self): - self.client = APIClient() - - def test_tutor_gets_an_assignment(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - # we should simply test if any newly created assignment is unfinished - def test_first_work_assignment_was_created_unfinished(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertFalse(TutorSubmissionAssignment.objects.first().is_done) - - def test_assignment_raises_error_when_depleted(self): - self.data['submissions'][0].delete() - self.data['submissions'][2].delete() - - self.client.force_authenticate(user=self.data['tutors'][0]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) - - def test_assignment_delete_of_done_not_permitted(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - first = TutorSubmissionAssignment.objects.first() - first.is_done = True - first.save() - - self.assertRaises(models.DeletionOfDoneAssignmentsNotPermitted, - first.delete) - - def test_assignment_delete_undone_permitted(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - first = TutorSubmissionAssignment.objects.first() - first.delete() - - self.assertEqual(0, TutorSubmissionAssignment.objects.all().count()) - - def tutor_can_release_own_unfinished_assignments(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - self.client.post( - f'/api/assignment/{response.data["pk"]}/finish/', { - "score": 23, - "of_submission": response.data['submission']['pk'], - "feedback_lines": { - 1: {"text": "< some string >", "labels": []}, - 2: {"text": "< some string >", "labels": []} - }, - "labels": [], - } - ) - self.assertEqual(2, TutorSubmissionAssignment.objects.all().count()) - self.assertEqual(1, TutorSubmissionAssignment.objects.filter(is_done=True).count()) - - self.client.force_authenticate(user=self.data['tutors'][1]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - response = self.client.delete('/api/assignment/') - self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) - self.assertEqual(2, TutorSubmissionAssignment.objects.all().count()) - - def test_two_tutors_cant_have_assignments_for_same_submission(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - assignment_fst_tutor = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][1].pk, - "stage": "feedback-creation", - }).data - - self.client.force_authenticate(user=self.data['tutors'][1]) - - assignment_snd_tutor = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][1].pk, - "stage": "feedback-creation", - }).data - - self.assertNotEqual(assignment_fst_tutor['submission']['pk'], - assignment_snd_tutor['submission']['pk']) - - def test_reviewer_can_get_active_assignments(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - assignment = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }).data - - # tutors shouldn't have access - res = self.client.get('/api/assignment/active/') - self.assertEqual(status.HTTP_403_FORBIDDEN, res.status_code) - - self.client.force_authenticate(user=self.data['reviewers'][0]) - - active_assignments = self.client.get('/api/assignment/active/').data - self.assertIn(assignment['pk'], [assignment['pk'] for assignment in active_assignments]) - - def test_reviewer_can_delete_active_assignments(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - assignment = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }).data - - # tutors shouldn't have access - res = self.client.delete('/api/assignment/active/') - self.assertEqual(status.HTTP_403_FORBIDDEN, res.status_code) - - self.client.force_authenticate(user=self.data['reviewers'][0]) - - res = self.client.delete('/api/assignment/active/') - self.assertEqual(status.HTTP_204_NO_CONTENT, res.status_code) - self.assertNotIn( - assignment['pk'], - [assignment.pk for assignment - in TutorSubmissionAssignment.objects.filter(is_done=False)] - ) - - def test_all_stages_of_the_subscription(self): - self.client.force_authenticate(user=self.data['tutors'][0]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-creation", - }) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - response = self.client.post( - f'/api/assignment/{response.data["pk"]}/finish/', { - "score": 23, - "of_submission": response.data['submission']['pk'], - "feedback_lines": { - 1: {"text": "< some string >", "labels": []}, - 2: {"text": "< some string >", "labels": []} - }, - "labels": [], - } - ) - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - # some other tutor reviews it - self.client.force_authenticate(user=self.data['tutors'][1]) - - response = self.client.post('/api/assignment/', { - "submission_type": self.data['submission_types'][0].pk, - "stage": "feedback-validation", - }) - - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - submission_id_in_database = models.Feedback.objects.filter( - is_final=False).first().of_submission.submission_id - submission_id_in_response = response.data['submission']['pk'] - - self.assertEqual( - str(submission_id_in_database), - submission_id_in_response) - - assignment = models.TutorSubmissionAssignment.objects.get(pk=response.data['pk']) - self.assertFalse(assignment.is_done) - response = self.client.post( - f'/api/assignment/{assignment.pk}/finish/', { - "score": 20, - "is_final": True, - "feedback_lines": { - 2: {"text": "< some addition by second tutor>"}, - } - } - ) - - assignment.refresh_from_db() - meta = assignment.submission.meta - self.assertEqual(status.HTTP_200_OK, response.status_code) - self.assertEqual(2, len(response.data['feedback_lines'][2])) - self.assertTrue(assignment.is_done) - self.assertIn(self.data['tutors'][0], meta.feedback_authors.all()) - self.assertIn(self.data['tutors'][1], meta.feedback_authors.all()) diff --git a/grady/core/tests/test_auth.py b/grady/core/tests/test_auth.py deleted file mode 100644 index 38780f25..00000000 --- a/grady/core/tests/test_auth.py +++ /dev/null @@ -1,71 +0,0 @@ -import pytest -import os - -from rest_framework.test import APIClient, APITestCase -from constance.test import override_config -from core.models import UserAccount - - -class AuthTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.credentials = {'username': 'user', 'password': 'p'} - cls.user = UserAccount.objects.create( - username=cls.credentials['username']) - cls.user.set_password(cls.credentials['password']) - cls.user.save() - cls.client = APIClient() - - def test_get_token(self): - response = self.client.post('/api/get-token/', self.credentials) - self.assertContains(response, 'token') - - def test_refresh_token(self): - token = self.client.post('/api/get-token/', self.credentials).data - response = self.client.post('/api/refresh-token/', token) - self.assertContains(response, 'token') - - @override_config(REGISTRATION_PASSWORD='pw') - def test_registration_correct_password(self): - credentials = { - 'username': 'john-doe', - 'password': 'safeandsound', - 'registration_password': 'pw', - } - response = self.client.post('/api/corrector/register/', credentials) - self.assertEqual(201, response.status_code) - - @override_config(REGISTRATION_PASSWORD='wrong_pw') - def test_registration_wrong_password(self): - credentials = { - 'username': 'john-doe', - 'password': 'safeandsound', - 'registration_password': 'pw', - } - response = self.client.post('/api/corrector/register/', credentials) - self.assertEqual(403, response.status_code) - - @pytest.mark.skipif(os.environ.get('DJANGO_DEV', False), - reason="No password strengths checks in dev") - @override_config(REGISTRATION_PASSWORD='pw') - def test_password_is_strong_enough(self): - response = self.client.post('/api/corrector/register/', { - 'username': 'hans', - 'password': 'weak', - 'registration_password': 'pw', - }) - - self.assertEqual(400, response.status_code) - self.assertIn('password', response.data) - - @override_config(REGISTRATION_PASSWORD='pw') - def test_cannot_register_active(self): - response = self.client.post('/api/corrector/register/', { - 'username': 'hans', - 'password': 'safeandsound', - 'registration_password': 'pw', - 'is_active': True - }) - - self.assertEqual(403, response.status_code) diff --git a/grady/core/tests/test_commands.py b/grady/core/tests/test_commands.py deleted file mode 100644 index e313c5a3..00000000 --- a/grady/core/tests/test_commands.py +++ /dev/null @@ -1,39 +0,0 @@ -import json -import tempfile - -from django.contrib.auth import get_user_model -from django.core.management import call_command -from django.test import TestCase - -from util.factories import GradyUserFactory, make_exams - - -class CommandsTestCase(TestCase): - - factory = GradyUserFactory() - - def test_usermod(self): - self.factory.make_tutor(username='otto') - args = ['disable'] - opts = {'include': ('otto',)} - call_command('usermod', *args, **opts) - - someone = get_user_model().objects.get(username='otto') - self.assertFalse(someone.is_active) - - def test_replaceusernames(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.factory.make_student(identifier=88884444, username='before', exam=self.exam) - - with tempfile.NamedTemporaryFile() as matno2username: - matno2username.write(json.dumps({'88884444': 'after'}).encode()) - matno2username.flush() - args = [matno2username.name] - call_command('replaceusernames', *args, **{}) - - student = get_user_model().objects.get(student__matrikel_no=88884444) - self.assertEqual('after', student.username) diff --git a/grady/core/tests/test_configuration_viewset.py b/grady/core/tests/test_configuration_viewset.py deleted file mode 100644 index 23cc354b..00000000 --- a/grady/core/tests/test_configuration_viewset.py +++ /dev/null @@ -1,58 +0,0 @@ -import constance - -from rest_framework import status -from rest_framework.test import APITestCase -from util.factories import GradyUserFactory, make_exams - -config = constance.config - - -class ConfigurationViewTestCase(APITestCase): - factory = GradyUserFactory() - - @classmethod - def setUpTestData(cls): - cls.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - cls.student = cls.factory.make_student(exam=cls.exam) - cls.reviewer = cls.factory.make_reviewer(exam=cls.exam) - - def setUp(self): - self.client.force_authenticate(user=self.reviewer) - self.rev_list_response = self.client.get('/api/config/') - - self.client.force_authenticate(user=self.student) - self.stud_list_response = self.client.get('/api/config/') - - stud_patch_data = { - "singleCorrection": True, - } - - rev_patch_data = { - "exerciseMode": True, - "showSolutionToStudents": False - } - - self.client.force_authenticate(user=self.reviewer) - self.rev_patch_response = self.client.patch('/api/config/change_config/', rev_patch_data) - - self.client.force_authenticate(user=self.student) - self.stud_patch_response = self.client.patch('/api/config/change_config/', stud_patch_data) - - def test_student_can_access(self): - self.assertEqual(status.HTTP_200_OK, self.stud_list_response.status_code) - - def test_reviewer_can_access(self): - self.assertEqual(status.HTTP_200_OK, self.rev_list_response.status_code) - - def test_student_can_not_patch_config(self): - self.assertEqual(status.HTTP_403_FORBIDDEN, self.stud_patch_response.status_code) - self.assertEqual(False, config.SINGLE_CORRECTION) - - def test_reviewers_can_patch_config(self): - self.assertEqual(status.HTTP_206_PARTIAL_CONTENT, self.rev_patch_response.status_code) - self.assertEqual(True, config.EXERCISE_MODE) - self.assertEqual(False, config.SHOW_SOLUTION_TO_STUDENTS) diff --git a/grady/core/tests/test_examlist.py b/grady/core/tests/test_examlist.py deleted file mode 100644 index b5be17cc..00000000 --- a/grady/core/tests/test_examlist.py +++ /dev/null @@ -1,49 +0,0 @@ -""" Tests that we can receive information about what exams where written """ - -from django.urls import reverse -from rest_framework import status -from rest_framework.test import (APIRequestFactory, APITestCase, - force_authenticate) - -from core.models import ExamType -from core.views import ExamApiViewSet -from util.factories import GradyUserFactory - - -class ExamListTest(APITestCase): - """ briefly tests if we are able to retrieve data, and get correct fields - """ - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.request = self.factory.get(reverse('examtype-list')) - self.examtype = ExamType.objects.create(module_reference='B.Inf.9000', - total_score=90, - pass_score=45) - force_authenticate(self.request, - self.user_factory.make_reviewer()) - self.view = ExamApiViewSet.as_view({'get': 'list'}) - self.response = self.view(self.request) - - def test_can_access_when_authenticated(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_getting_all_available_exams(self): - self.assertEqual(1, len(self.response.data)) - - # Tests concerning exam data - def test_exam_data_contains_module_reference(self): - self.assertEqual('B.Inf.9000', - self.response.data[0]["module_reference"]) - - def test_exam_data_contains_total_score(self): - self.assertEqual(90, self.response.data[0]["total_score"]) - - def test_exam_data_contains_pass_score(self): - self.assertEqual(45, self.response.data[0]["pass_score"]) - - def test_exam_data_contains_pass_only_field(self): - self.assertEqual(False, self.response.data[0]["pass_only"]) diff --git a/grady/core/tests/test_export.py b/grady/core/tests/test_export.py deleted file mode 100644 index 3768a277..00000000 --- a/grady/core/tests/test_export.py +++ /dev/null @@ -1,238 +0,0 @@ -from rest_framework import status -from rest_framework.test import APIClient, APITestCase - -from util.factories import make_test_data, make_exams - - -def make_data(): - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'pass_only': True - }] - ) - return make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'pass_only': True, - 'exam_type_id': exams[0].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'programming_language': 'Haskell', - 'exam_type': exams[0] - }, - { - 'name': '02. Shuffle', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - } - ], - 'students': [ - {'username': 'student01', 'exam': 'Test Exam 01'}, - {'username': 'student02', 'exam': 'Test Exam 01'} - ], - 'tutors': [{ - 'username': 'tutor01' - }], - 'reviewers': [ - {'username': 'reviewer'} - ], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' lorem ipsum und so\n', - 'type': '01. Sort', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'reviewer' - }], - } - - } - }, - { - 'text': 'not much', - 'type': '02. Shuffle', - 'user': 'student01' - }, - { - 'text': 'function blabl\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort', - 'user': 'student02' - }, - { - 'text': 'not much to see here', - 'type': '02. Shuffle', - 'user': 'student02' - } - ]} - ) - - -class ExportInstanceTest(APITestCase): - @classmethod - def setUpTestData(cls): - cls.data = make_data() - - def setUp(self): - self.client = APIClient() - self.client.force_login(user=self.data['reviewers'][0]) - self.response = self.client.get('/api/instance/export/') - - def test_can_access(self): - self.assertEqual(status.HTTP_200_OK, self.response.status_code) - - def test_data_is_correct(self): - instance = self.response.json() - - # examTypes fields - self.assertIn('examTypes', instance) - self.assertIn('pk', instance['examTypes'][0]) - self.assertEqual('Test Exam 01', instance['examTypes'][0]['moduleReference']) - self.assertEqual(100, instance['examTypes'][0]['totalScore']) - self.assertEqual(60, instance['examTypes'][0]['passScore']) - self.assertEqual(True, instance['examTypes'][0]['passOnly']) - - # submissionTypes fields - self.assertIn('submissionTypes', instance) - self.assertEqual(2, len(instance['submissionTypes'])) - self.assertIn('pk', instance['submissionTypes'][0]) - self.assertEqual('01. Sort', instance['submissionTypes'][0]['name']) - self.assertEqual(35, instance['submissionTypes'][0]['fullScore']) - self.assertEqual('Very complicated', instance['submissionTypes'][0]['description']) - self.assertEqual('Trivial!', instance['submissionTypes'][0]['solution']) - self.assertEqual('Haskell', instance['submissionTypes'][0]['programmingLanguage']) - - # students fields - self.assertIn('students', instance) - self.assertEqual(2, len(instance['students'])) - self.assertIn('pk', instance['students'][0]) - self.assertIn('userPk', instance['students'][0]) - self.assertIn('exams', instance['students'][0]) - student_users = [s['user'] for s in instance['students']] - self.assertIn('student01', student_users) - self.assertIn('student02', student_users) - self.assertLess(0, len(instance['students'][1]['submissions'])) - - # students[submissions] nested - self.assertIn('submissions', instance['students'][1]) - self.assertLess(0, len(instance['students'][1]['submissions'])) - self.assertIn('pk', instance['students'][1]['submissions'][0]) - self.assertIn('function blabl', instance['students'][1]['submissions'][0]['text']) - self.assertIn('type', instance['students'][1]['submissions'][0]) - self.assertIn('tests', instance['students'][1]['submissions'][0]) - - # students[submissions][feedback] nested - submissions = instance['students'][0]['submissions'] - self.assertIn('feedback', submissions[0]) - self.assertLess(0, len(submissions[0]['feedback'])) - self.assertEqual(5, submissions[0]['feedback']['score']) - self.assertEqual(True, submissions[0]['feedback']['isFinal']) - self.assertIn('created', submissions[0]['feedback']) - - # students[submissions][feedback][feedbackLines] nested - feedback = instance['students'][0]['submissions'][0]['feedback'] - self.assertIn('feedbackLines', feedback) - self.assertLess(0, len(feedback['feedbackLines'])) - self.assertIn('1', feedback['feedbackLines']) - self.assertIn('pk', feedback['feedbackLines']['1'][0]) - self.assertEqual('This is very bad!', feedback['feedbackLines']['1'][0]['text']) - self.assertEqual('reviewer', feedback['feedbackLines']['1'][0]['ofTutor']) - - # reviewers fields - self.assertIn('reviewers', instance) - self.assertLess(0, len(instance['reviewers'])) - self.assertIn('pk', instance['reviewers'][0]) - self.assertEqual('reviewer', instance['reviewers'][0]['username']) - - # tutors fields - self.assertIn('tutors', instance) - self.assertLess(0, len(instance['tutors'])) - tutor_names = [t['username'] for t in instance['tutors']] - self.assertIn('tutor01', tutor_names) - self.assertIn('reviewer', tutor_names) - - -class ExportJSONTest(APITestCase): - @classmethod - def setUpTestData(cls): - cls.data = make_data() - - def setUp(self): - self.client = APIClient() - self.client.force_login(user=self.data['reviewers'][0]) - self.response = self.client.post('/api/export/json/') - - def test_can_access(self): - self.assertEqual(status.HTTP_200_OK, self.response.status_code) - - def test_data_is_correct(self): - # due to using the client, we need to parse the json - student1, student2 = self.response.data - self.assertIn('Matrikel', student1) - self.assertIn('Matrikel', student2) - - self.assertEqual('', student1['Name']) - self.assertEqual('', student2['Name']) - - self.assertEqual('Test Exam 01', student1['Exams'][0]['exam']['module_reference']) - self.assertEqual('Test Exam 01', student2['Exams'][0]['exam']['module_reference']) - - self.assertEqual('student01', student1['Username']) - self.assertEqual('student02', student2['Username']) - - self.assertEqual('********', student2['Password']) - self.assertEqual('********', student1['Password']) - - self.assertEqual('01. Sort', student1['Scores'][0]['submissions'][0]['type']) - self.assertEqual('01. Sort', student2['Scores'][0]['submissions'][0]['type']) - - self.assertEqual('02. Shuffle', student1['Scores'][0]['submissions'][1]['type']) - self.assertEqual('02. Shuffle', student2['Scores'][0]['submissions'][1]['type']) - - self.assertEqual(5, student1['Scores'][0]['submissions'][0]['score']) - self.assertEqual(0, student2['Scores'][0]['submissions'][0]['score']) - - self.assertEqual(0, student2['Scores'][0]['submissions'][1]['score']) - self.assertEqual(0, student2['Scores'][0]['submissions'][1]['score']) - - -class ExportJSONAndSetPasswordsTest(APITestCase): - @classmethod - def setUpTestData(cls): - cls.data = make_data() - - def setUp(self): - self.client = APIClient() - self.client.force_login(user=self.data['reviewers'][0]) - self.response = self.client.post('/api/export/json/', - data={'setPasswords': True}) - - def test_can_access(self): - self.assertEqual(status.HTTP_200_OK, self.response.status_code) - - def test_data_contains_correct_password(self): - student1, student2 = self.response.data - ret = self.client.login(username=student1['Username'], password=student1['Password']) - self.assertTrue(ret) - ret = self.client.login(username=student2['Username'], password=student2['Password']) - self.assertTrue(ret) diff --git a/grady/core/tests/test_factory.py b/grady/core/tests/test_factory.py deleted file mode 100644 index c32ae5aa..00000000 --- a/grady/core/tests/test_factory.py +++ /dev/null @@ -1,52 +0,0 @@ -from django.test import TestCase - -from core import models -from core.models import StudentInfo -from util.factories import GradyUserFactory, make_exams - - -class FactoryTestCase(TestCase): - - factory = GradyUserFactory() - - def test_make_student(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - user = self.factory.make_student(exam=self.exam) - - self.assertEqual(StudentInfo.objects.count(), 1) - self.assertEqual(user.student.exams.first().exam.module_reference, "Test Exam 01") - self.assertEqual(len(str(user.student.matrikel_no)), 8) - - def test_can_create_reviewer(self): - self.assertTrue(isinstance(self.factory.make_reviewer(), - models.UserAccount)) - - def test_reviewer_appears_in_query_set(self): - self.assertIn(self.factory.make_reviewer(), - models.UserAccount.objects.all()) - - def test_can_create_tutor(self): - self.assertIn(self.factory.make_tutor(), - models.UserAccount.objects.all()) - - def test_can_create_student_user(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.assertIn(self.factory.make_student(exam=self.exam), - models.UserAccount.objects.all()) - - def test_can_create_student_info(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - self.assertIn(self.factory.make_student(exam=self.exam).student, - StudentInfo.objects.all()) diff --git a/grady/core/tests/test_feedback.py b/grady/core/tests/test_feedback.py deleted file mode 100644 index 7148854d..00000000 --- a/grady/core/tests/test_feedback.py +++ /dev/null @@ -1,703 +0,0 @@ -import unittest - -from constance.test import override_config -from rest_framework import status -from rest_framework.test import APIRequestFactory, APITestCase - -from core.models import (Feedback, FeedbackComment, - Submission, SubmissionType, - FeedbackLabel, TutorSubmissionAssignment, MetaSubmission) -from util.factories import GradyUserFactory, make_test_data, make_exams - - -class FeedbackRetrieveTestCase(APITestCase): - - factory = GradyUserFactory() - EXPECTED_SCORE = 23 - - @classmethod - def setUpTestData(cls): - cls.score = 23 - cls.tutor = cls.factory.make_tutor() - cls.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - cls.student = cls.factory.make_student(exam=cls.exam) - cls.reviewer = cls.factory.make_reviewer() - cls.tutors = [cls.tutor, cls.reviewer] - cls.request_factory = APIRequestFactory() - cls.submission_type = SubmissionType.objects.create( - name='Cooking some crystal with Jesse') - cls.sub = Submission.objects.create(student=cls.student.student, - type=cls.submission_type) - cls.feedback = Feedback.objects.create(score=23, is_final=False, - of_submission=cls.sub) - - for line in range(1, 3): - for tutor in cls.tutors: - FeedbackComment.objects.create(text='fortytwo', - of_feedback=cls.feedback, - of_tutor=tutor, - of_line=line) - - def setUp(self): - self.client.force_authenticate(user=self.reviewer) - self.response = self.client.get(f'/api/feedback/{self.sub.pk}/') - self.data = self.response.data - - def test_only_one_final_comment_per_line(self): - comments_on_first_line = FeedbackComment.objects.filter(of_line=1) - self.assertEqual(2, comments_on_first_line.count()) - final_comments = [comment for comment in comments_on_first_line.all() - if comment.visible_to_student] - self.assertEqual(1, len(final_comments)) - - def test_can_retrieve_feedback_via_endpoint(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_if_feedback_contains_correct_score(self): - self.assertIn('score', self.data) - self.assertEqual(self.data.get('score'), self.EXPECTED_SCORE) - - def test_if_feedback_contains_linekeys(self): - self.assertIn('feedback_lines', self.data) - self.assertIn(1, self.data['feedback_lines']) - self.assertIn(2, self.data['feedback_lines']) - - def test_if_feedback_contains_final(self): - self.assertIn('is_final', self.data) - self.assertIsNotNone(self.data['is_final']) - - def test_if_comment_contains_text(self): - self.assertIn('text', self.data['feedback_lines'][1][0]) - self.assertEqual( - 'fortytwo', self.data['feedback_lines'][1][0]['text']) - - def test_if_comment_contains_created(self): - self.assertIn('created', self.data['feedback_lines'][1][0]) - self.assertIsNotNone(self.data['feedback_lines'][1][0]['created']) - - def test_if_comment_has_tutor(self): - self.assertIn('of_tutor', self.data['feedback_lines'][1][0]) - self.assertEqual( - self.tutor.username, - self.data['feedback_lines'][1][0]['of_tutor']) - - def test_if_comment_has_final(self): - self.assertIn('visible_to_student', self.data['feedback_lines'][1][0]) - self.assertIsNotNone( - self.data['feedback_lines'][1][0]['visible_to_student']) - - -class FeedbackCreateTestCase(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.url = lambda self: f'/api/assignment/{self.assignment.pk}/finish/' - cls.user_factory = GradyUserFactory() - cls.tutor = cls.user_factory.make_tutor(password='p') - cls.reviewer = cls.user_factory.make_reviewer(password='p') - cls.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - cls.student = cls.user_factory.make_student(exam=cls.exam) - cls.submission_type = SubmissionType.objects.create( - name='Cooking some crystal with Jesse', - full_score=100 - ) - text = ''' First line of defense - We do not have a second line - security via obscurity - is very bad. ''' - cls.sub = Submission.objects.create(student=cls.student.student, - type=cls.submission_type, - text=text) - cls.fst_label = FeedbackLabel.objects.create(name='Label1', description='Bla') - cls.snd_label = FeedbackLabel.objects.create(name='Label2', description='Bla') - - def setUp(self): - self.sub.refresh_from_db() - self.fst_label.refresh_from_db() - self.snd_label.refresh_from_db() - self.client.force_authenticate(user=self.tutor) - self.assignment = TutorSubmissionAssignment.objects.create( - submission=Submission.objects.first(), - owner=self.tutor, - ) - - def test_cannot_create_feedback_without_feedback_lines(self): - # TODO this test has to be adapted to test the various constraints - # e.g. feedback without lines can only be given if the score is equal - # to the max Score for this submission - data = { - 'score': 10, - 'is_final': False, - 'of_submission': self.assignment.submission.pk - - } - self.assertEqual(Feedback.objects.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) - self.assertEqual(Feedback.objects.count(), 0) - - def test_cannot_create_feedback_with_score_higher_than_max(self): - data = { - 'score': 101, - 'is_final': False, - 'of_submission': self.assignment.submission.pk - } - self.assertEqual(Feedback.objects.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(Feedback.objects.count(), 0) - - def test_tutor_cannot_set_feedback_final_on_creation(self): - data = { - 'score': 100, - 'is_final': True, - 'of_submission': self.assignment.submission.pk - } - response = self.client.post(self.url(), data, format='json') - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - self.assertEqual(Feedback.objects.count(), 0) - - @override_config(SINGLE_CORRECTION=True) - def test_tutor_can_set_feedback_final_on_creation_with_single_correction_enabled(self): - data = { - 'score': 100, - 'is_final': True, - 'of_submission': self.assignment.submission.pk - } - response = self.client.post(self.url(), data, format='json') - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - self.assertEqual(Feedback.objects.count(), 1) - - def test_tutor_has_to_write_a_line_if_score_is_not_100_percent(self): - data = { - 'score': 50, - 'is_final': False, - 'of_submission': self.assignment.submission.pk - } - response = self.client.post(self.url(), data, format='json') - self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) - self.assertEqual(Feedback.objects.count(), 0) - - def test_cannot_create_feedback_with_score_less_than_zero(self): - data = { - 'score': -1, - 'is_final': False, - 'of_submission': self.assignment.submission.pk - } - self.assertEqual(Feedback.objects.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(Feedback.objects.count(), 0) - - def test_cannot_create_feedback_with_score_with_invalid_fractional_denominator(self): - data = { - 'score': 1.500000001, - 'is_final': False, - 'of_submission': self.assignment.submission.pk - } - self.assertEqual(Feedback.objects.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(Feedback.objects.count(), 0) - - def test_can_create_with_labels(self): - data = { - 'score': 0, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'labels': [self.fst_label.pk, self.snd_label.pk], - 'feedback_lines': { - '2': { - 'text': 'Why you no learn how to code, man?', - 'labels': [] - } - } - } - self.assertEqual(self.fst_label.feedback.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.fst_label.refresh_from_db() - self.snd_label.refresh_from_db() - self.assertEqual(self.fst_label.feedback.count(), 1) - self.assertEqual(self.snd_label.feedback.count(), 1) - self.assertEqual(Feedback.objects.first().labels.count(), 2) - - def test_can_create_feedback_with_half_points(self): - data = { - 'score': 0.5, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '2': { - 'text': 'Why you no learn how to code, man?', - 'labels': [] - } - } - } - self.client.post(self.url(), data, format='json') - object_score = self.sub.feedback.score - self.assertEqual(object_score, 0.5) - - def test_check_score_is_set_accordingly(self): - data = { - 'score': 5, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '4': { - 'text': 'Why you no learn how to code, man?', - 'labels': [] - } - } - } - self.client.post(self.url(), data, format='json') - object_score = self.sub.feedback.score - self.assertEqual(object_score, 5) - - def test_can_create_feedback_with_comment(self): - data = { - 'score': 0, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '3': { - 'text': 'Nice meth!', - 'labels': [] - } - } - } - self.assertEqual(FeedbackComment.objects.count(), 0) - response = self.client.post(self.url(), data, format='json') - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertEqual(FeedbackComment.objects.count(), 1) - - def test_feedback_comment_is_created_correctly(self): - data = { - 'score': 0, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '3': { - 'text': 'Nice meth!', - 'labels': [] - } - } - } - self.client.post(self.url(), data, format='json') - comment = FeedbackComment.objects.first() - self.assertEqual(comment.of_tutor, self.tutor) - self.assertEqual(comment.text, 'Nice meth!') - self.assertIsNotNone(comment.created) - self.assertEqual(comment.of_line, 3) - self.assertTrue(comment.visible_to_student) - - def test_tutor_cannot_create_without_assignment(self): - data = { - 'score': 0, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '2': { - 'text': 'Well, at least you tried.', - 'labels': [] - }, - } - } - self.assignment.delete() - response = self.client.post(self.url(), data, format='json') - self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) - - def test_reviewer_can_create_without_assignment(self): - data = { - 'score': 0, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '2': { - 'text': 'This is not particularly good...', - 'labels': [] - }, - } - } - self.assignment.delete() - self.client.force_authenticate(user=self.reviewer) - response = self.client.post('/api/feedback/', data, format='json') - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - @override_config(EXERCISE_MODE=True) - def test_tutor_can_create_without_assignment_in_exercise_mode(self): - data = { - 'score': 0, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '2': { - 'text': 'You have failed!1!!11', - 'labels': [] - }, - } - } - self.assignment.delete() - response = self.client.post('/api/feedback/', data, format='json') - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - def test_cannot_create_with_someoneelses_assignment(self): - data = { - 'score': 0, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '1': { - 'text': 'Well, at least you tried.', - 'labels': [] - }, - } - } - other_tutor = self.user_factory.make_tutor('Berta') - self.client.force_authenticate(other_tutor) - response = self.client.post(self.url(), data, format='json') - # returns 404 since the other users assignment is not visible to this one - self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) - - def test_can_create_multiple_feedback_comments(self): - data = { - 'score': 0, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '1': { - 'text': 'Nice meth!', - 'labels': [] - }, - '3': { - 'text': 'Good one!', - 'labels': [] - } - } - } - self.client.post(self.url(), data, format='json') - first_comment = FeedbackComment.objects.get(text='Nice meth!') - self.assertEqual(first_comment.of_tutor, self.tutor) - self.assertIsNotNone(first_comment.created) - self.assertEqual(first_comment.of_line, 1) - self.assertTrue(first_comment.visible_to_student) - - second_comment = FeedbackComment.objects.get(text='Good one!') - self.assertEqual(second_comment.of_tutor, self.tutor) - self.assertIsNotNone(second_comment.created) - self.assertEqual(second_comment.of_line, 3) - self.assertTrue(second_comment.visible_to_student) - - -class FeedbackPatchTestCase(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.burl = '/api/feedback/' - cls.finish_url = lambda self: f'/api/assignment/{self.assignment.pk}/finish/' - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - cls.data = make_test_data({ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }], - 'students': [ - { - 'username': 'student01', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student02', - 'exam': 'Test Exam 01', - } - ], - 'tutors': [ - {'username': 'tutor01'}, - {'username': 'tutor02'} - ], - 'reviewers': [{ - 'username': 'reviewer01', - }], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n', - 'type': '01. Sort this or that', - 'user': 'student01' - }, - { - 'text': 'conflict test', - 'type': '01. Sort this or that', - 'user': 'student02' - }, - ] - }) - - cls.fst_label = FeedbackLabel.objects.create(name='Label1', description='Bla') - cls.snd_label = FeedbackLabel.objects.create(name='Label2', description='Bla') - - # construct submission that has conflicting feedback - cls.conflict_submission = Submission.objects.get(student__user=cls.data['students'][1]) - conflict_meta = MetaSubmission.objects.get( - submission__submission_id=cls.conflict_submission.submission_id - ) - conflict_meta.done_assignments = 2 - conflict_meta.has_final_feedback = False - conflict_meta.has_active_assignment = False - conflict_meta.has_feedback = True - conflict_meta.save() - - Feedback.objects.create(**{ - "score": 0, - "is_final": False, - "final_by_reviewer": False, - "of_submission": cls.conflict_submission - }) - - def setUp(self): - self.tutor01 = self.data['tutors'][0] - self.tutor02 = self.data['tutors'][1] - self.reviewer = self.data['reviewers'][0] - self.client.force_authenticate(user=self.tutor01) - self.assignment = TutorSubmissionAssignment.objects.create( - submission=Submission.objects.get(student__user=self.data['students'][0]), - owner=self.tutor01, - ) - data = { - 'score': 35, - 'is_final': False, - 'of_submission': self.assignment.submission.pk, - 'feedback_lines': { - '2': { - 'text': 'Very good.', - 'labels': [] - }, - } - } - response = self.client.post(self.finish_url(), data, format='json') - self.feedback = Feedback.objects.get( - of_submission=response.data['of_submission']) - self.url = f'{self.burl}{self.feedback.of_submission.submission_id}/' - - self.fst_label.refresh_from_db() - self.snd_label.refresh_from_db() - - def test_can_patch_onto_the_own_feedback(self): - data = { - 'feedback_lines': { - '1': { - 'text': 'Spam spam spam', - 'labels': [] - }, - } - } - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_200_OK, response.status_code) - self.assertEqual( - 'Spam spam spam', - response.data['feedback_lines'][1][0]['text'] - ) - self.assertEqual( - 'Very good.', - response.data['feedback_lines'][2][0]['text'] - ) - - def test_can_update_a_single_line(self): - data = { - 'feedback_lines': { - '2': { - 'text': 'Turns out this is rather bad.', - 'labels': [] - }, - } - } - - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_200_OK, response.status_code) - - @unittest.expectedFailure - def test_tutor_can_not_update_when_there_is_a_new_assignment(self): - # Step 1 - Create a new assignment for Tutor 2 - TutorSubmissionAssignment.objects.create( - submission=Submission.objects.last(), - owner=self.tutor02, - stage='feedback-validation', - ) - - # Step 2 - Tutor 1 tries to patch - data = { - 'feedback_lines': { - '2': {'text': 'Turns out this is rather bad.', 'labels': []}, - } - } - - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - - def test_cannot_patch_first_feedback_final(self): - data = { - 'feedback_lines': { - '2': {'text': 'Turns out this is rather bad.', 'labels': []}, - }, - 'is_final': True - } - - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - - def test_reviewer_can_patch_first_feedback_final(self): - data = { - 'feedback_lines': { - '2': {'text': 'Turns out this is rather bad.', 'labels': []}, - }, - 'is_final': True - } - - self.client.force_authenticate(user=self.reviewer) - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_200_OK, response.status_code) - - def test_cannot_unset_final_on_third_feedback(self): - data = { - 'feedback_lines': { - '2': {'text': 'this is good.', 'labels': []}, - }, - 'is_final': False - } - - url = f'{self.burl}{self.conflict_submission.submission_id}/' - self.client.force_authenticate(user=self.reviewer) - response = self.client.patch(url, data, format='json') - self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) - - def tutor_can_patch_labels(self): - data = { - 'feedback_lines': { - '2': { - 'text': 'Turns out this is rather bad.', - 'labels': [self.fst_label.pk, self.snd_label.pk] - }, - } - } - - self.assertEqual(FeedbackComment.objects.first().labels.count(), 0) - response = self.client.patch(self.url, data, format='json') - self.assertEqual(status.HTTP_200_OK, response.status_code) - self.assertEqual(FeedbackComment.objects.first().labels.count(), 2) - - -class FeedbackCommentApiEndpointTest(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.burl = '/api/feedback/' - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - cls.data = make_test_data({ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }], - 'students': [ - { - 'username': 'student01', - 'exam': 'Test Exam 01' - } - ], - 'tutors': [ - {'username': 'tutor01'}, - {'username': 'tutor02'}, - ], - 'reviewers': [ - {'username': 'reviewer01'}, - ], - 'submissions': [{ - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n', - 'type': '01. Sort this or that', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [{'text': 'This is very bad!', - 'of_tutor': 'tutor01'}], - '2': [{'text': 'And this is even worse!', - 'of_tutor': 'tutor02'}], - } - } - }] - }) - - def setUp(self): - self.url = '/api/feedback-comment/%s/' - self.tutor01 = self.data['tutors'][0] - self.tutor02 = self.data['tutors'][1] - - def test_tutor_can_delete_own_comment(self): - self.client.force_authenticate(user=self.tutor01) - comment = FeedbackComment.objects.get(of_tutor=self.tutor01) - response = self.client.delete(self.url % comment.pk) - self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) - - def test_tutor_cannot_delete_foreign_comment(self): - self.client.force_authenticate(user=self.tutor02) - comment = FeedbackComment.objects.get(of_tutor=self.tutor02) - self.client.force_authenticate(self.tutor01) - response = self.client.delete(self.url % comment.pk) - self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) - - def test_reviewer_can_delete_other_users_comments(self): - reviewer = self.data['reviewers'][0] - self.client.force_authenticate(user=reviewer) - comment01 = FeedbackComment.objects.get(of_tutor=self.tutor01) - comment02 = FeedbackComment.objects.get(of_tutor=self.tutor02) - - response = self.client.delete(self.url % comment01.pk) - self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) - - response = self.client.delete(self.url % comment02.pk) - self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) - self.assertTrue(FeedbackComment.objects.filter(of_tutor=self.tutor02).exists(), - msg='Second comment should not be deleted for feedback with not full score') - try: - FeedbackComment.objects.get(of_tutor=self.tutor01) - except FeedbackComment.DoesNotExist: - pass - else: - self.fail('No exception raised') diff --git a/grady/core/tests/test_functional_views.py b/grady/core/tests/test_functional_views.py deleted file mode 100644 index 5f72f198..00000000 --- a/grady/core/tests/test_functional_views.py +++ /dev/null @@ -1 +0,0 @@ -# TODO test the config view diff --git a/grady/core/tests/test_import_views.py b/grady/core/tests/test_import_views.py deleted file mode 100644 index 52ec4eb0..00000000 --- a/grady/core/tests/test_import_views.py +++ /dev/null @@ -1,82 +0,0 @@ -from rest_framework import status -from rest_framework.test import APIClient, APITestCase -from core.models import UserAccount, SubmissionType - -from util.factories import GradyUserFactory - -test_data = { - "meta": { - "version": "6.0.0" - }, - "data": { - "module": { - "module_reference": "test", - "pass_only": True, - "pass_score": 1, - "total_score": 99 - }, - "students": [ - { - "fullname": "test", - "identifier": "test-test", - "submissions": [ - { - "code": "some messy, perhaps incorrect stuff", - "tests": [], - "type": "[a0] coding stuff" - }, - { - "code": "i don't know man", - "tests": [], - "type": "[a1] improvise" - } - ], - } - ], - "submission_types": [ - { - "description": "code some 1337 stuff", - "full_score": 99, - "name": "[a0] coding stuff", - "programming_language": "c", - "solution": "how dare u" - }, - { - "description": "now this one's hard", - "full_score": 1, - "name": "[a1] improvise", - "programming_language": "haskell", - "solution": "nope" - }, - ] - } -} - - -class ImportViewTest(APITestCase): - - factory = GradyUserFactory() - - def setUp(self): - self.url = '/api/import/' - self.client = APIClient() - self.client.force_login(user=self.factory.make_reviewer()) - - def test_can_not_submit_nothing(self): - res = self.client.post(self.url) - self.assertEqual(status.HTTP_400_BAD_REQUEST, res.status_code) - - def test_will_fail_on_wrong_importer_version(self): - data = {"meta": {"version": "0.0.0"}} - res = self.client.post(self.url, data) - self.assertEqual(status.HTTP_409_CONFLICT, res.status_code) - - def test_data_is_imported_correctly(self): - res = self.client.post(self.url, test_data) - - sub_types = SubmissionType.objects.all() - students = UserAccount.objects.all().filter(role='Student') - - self.assertEqual(2, len(sub_types)) - self.assertEqual(1, len(students)) - self.assertEqual(status.HTTP_201_CREATED, res.status_code) diff --git a/grady/core/tests/test_labels.py b/grady/core/tests/test_labels.py deleted file mode 100644 index 99760fd9..00000000 --- a/grady/core/tests/test_labels.py +++ /dev/null @@ -1,48 +0,0 @@ -from rest_framework import status -from rest_framework.test import APITestCase - -from core.models import FeedbackLabel -from util.factories import GradyUserFactory, make_exams - - -class LabelsTestCases(APITestCase): - @classmethod - def setUpTestData(cls) -> None: - cls.factory = GradyUserFactory() - cls.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - cls.student = cls.factory.make_student(exam=cls.exam) - cls.tutor = cls.factory.make_tutor(exam=cls.exam) - cls.reviewer = cls.factory.make_reviewer(exam=cls.exam) - cls.label_post_data = { - 'name': 'A label', - 'description': 'with a description...' - } - cls.label_url = '/api/label/' - - def test_student_can_read_labels(self): - self.client.force_authenticate(user=self.student) - response = self.client.get(self.label_url) - self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEqual(FeedbackLabel.objects.count(), 0) - - def test_student_can_not_write_labels(self): - self.client.force_authenticate(user=self.student) - response = self.client.post(self.label_url, data=self.label_post_data) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - self.assertEqual(FeedbackLabel.objects.count(), 0) - - def test_tutor_can_create_label(self): - self.client.force_authenticate(user=self.tutor) - response = self.client.post(self.label_url, data=self.label_post_data) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertEqual(FeedbackLabel.objects.count(), 1) - - def test_reviewer_can_create_label(self): - self.client.force_authenticate(user=self.reviewer) - response = self.client.post(self.label_url, data=self.label_post_data) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - self.assertEqual(FeedbackLabel.objects.count(), 1) diff --git a/grady/core/tests/test_student_page.py b/grady/core/tests/test_student_page.py deleted file mode 100644 index 3fdb139d..00000000 --- a/grady/core/tests/test_student_page.py +++ /dev/null @@ -1,264 +0,0 @@ -from django.urls import reverse -from rest_framework.test import (APIRequestFactory, APITestCase, - force_authenticate) - -from core.models import SubmissionType, ExamType -from core.views import StudentSelfApiView, StudentSelfSubmissionsApiView -from util.factories import make_test_data, make_exams - - -class StudentPageTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - - def setUp(self): - exams = make_exams([{ - 'module_reference': 'TestExam B.Inf.0042', - 'total_score': 42, - 'pass_score': 21, - }] - ) - self.test_data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'TestExam B.Inf.0042', - 'total_score': 42, - 'pass_score': 21, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [{ - 'name': 'problem01', - 'full_score': 10, - 'description': 'Very hard', - 'solution': 'Impossible!', - 'exam_type': exams[0] - }], - 'students': [{ - 'username': 'user01', - 'fullname': 'us er01', - 'exam': 'TestExam B.Inf.0042' - }], - 'tutors': [{ - 'username': 'tutor01' - }], - 'reviewers': [{ - 'username': 'reviewer' - }], - 'submissions': [{ - 'user': 'user01', - 'type': 'problem01', - 'text': 'Too hard for me ;-(', - 'feedback': { - 'text': 'Very bad!', - 'score': 3, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }], - } - } - }] - }) - - self.student = self.test_data['students'][0] - self.student_info = self.student.student - self.tutor = self.test_data['tutors'][0] - self.reviewer = self.test_data['reviewers'][0] - self.submission = self.test_data['submissions'][0] - self.feedback = self.submission.feedback - - self.request = self.factory.get(reverse('student-page')) - self.view = StudentSelfApiView.as_view() - force_authenticate(self.request, user=self.student) - self.response = self.view(self.request) - - self.exam_info_id = self.response.data['exams'][0]['exam'] - self.exam_obj = ExamType.objects.get(exam_type_id=self.exam_info_id) - self.submission_list = self.response.data['submissions'] - self.submission_list_first_entry = self.submission_list[0] - - def test_student_information_contains_name(self): - self.assertEqual( - self.response.data['name'], self.student.fullname) - - def test_all_student_submissions_are_loded(self): - self.assertEqual(len(self.submission_list), - SubmissionType.objects.count()) - - # Tests concerning exam data - def test_exam_data_contains_module_reference(self): - self.assertEqual( - self.exam_obj.module_reference, - self.student_info.exams.first().exam.module_reference) - - def test_exam_data_contains_total_score(self): - self.assertEqual( - self.exam_obj.total_score, self.student_info.exams.first().exam.total_score) - - def test_exam_data_contains_pass_score(self): - self.assertEqual( - self.exam_obj.pass_score, self.student_info.exams.first().exam.pass_score) - - def test_exam_data_contains_pass_only_field(self): - self.assertEqual( - self.exam_obj.pass_only, self.student_info.exams.first().exam.pass_only) - - # Tests concerning submission data - def test_a_student_submissions_contains_type_name(self): - self.assertEqual( - self.submission_list_first_entry['type']['name'], - self.student_info.submissions.first().type.name) - - def test_a_student_submissions_contains_type_id(self): - self.assertEqual( - self.submission_list_first_entry['type']['pk'], - str(self.student_info.submissions.first().type.pk)) - - def test_submission_data_contains_full_score(self): - self.assertEqual( - self.submission_list_first_entry['type']['full_score'], - self.student_info.submissions.first().type.full_score) - - def test_submission_data_contains_feedback_score(self): - self.assertEqual( - self.submission_list_first_entry['feedback']['score'], - self.student_info.submissions.first().feedback.score) - - # We don't want a matriculation number here - def test_matriculation_number_is_not_send(self): - self.assertNotIn('matrikel_no', self.submission_list_first_entry) - - -class StudentSelfSubmissionsTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - - def setUp(self): - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - self.test_data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [{ - 'name': 'problem01', - 'full_score': 10, - 'description': 'Very hard', - 'solution': 'Impossible!', - 'exam_type': exams[0] - }], - 'students': [{ - 'username': 'user01', - 'exam': 'Test Exam 01' - }], - 'tutors': [ - { - 'username': 'tutor01' - }, - { - 'username': 'tutor02' - } - ], - 'submissions': [{ - 'user': 'user01', - 'type': 'problem01', - 'text': 'Too hard for me ;-(', - 'feedback': { - 'text': 'Very bad!', - 'score': 3, - 'feedback_lines': { - '1': [ - { - 'text': 'This is very bad!', - 'of_tutor': 'tutor01', - # explicitness to required - # will also be set automatically - 'visible_to_student': False - }, - { - 'text': 'This is good!', - 'of_tutor': 'tutor02' - } - ], - } - } - }] - }) - - self.student = self.test_data['students'][0] - self.student_info = self.student.student - self.tutor = self.test_data['tutors'][0] - self.submission = self.test_data['submissions'][0] - self.feedback = self.submission.feedback - - self.request = self.factory.get(reverse('student-submissions')) - self.view = StudentSelfSubmissionsApiView.as_view() - - force_authenticate(self.request, user=self.student) - self.response = self.view(self.request) - - self.submission_list = self.response.data - self.submission_list_first_entry = self.submission_list[0] - - # Tests concerning submission data - def test_a_student_submissions_contains_type_name(self): - self.assertEqual( - self.submission_list_first_entry['type']['name'], - self.student_info.submissions.first().type.name) - - def test_a_student_submissions_contains_type_id(self): - self.assertEqual( - self.submission_list_first_entry['type']['pk'], - str(self.student_info.submissions.first().type.pk)) - - def test_submission_data_contains_full_score(self): - self.assertEqual( - self.submission_list_first_entry['type']['full_score'], - self.student_info.submissions.first().type.full_score) - - def test_submission_data_contains_description(self): - self.assertEqual( - self.submission_list_first_entry['type']['description'], - self.student_info.submissions.first().type.description) - - def test_submission_data_not_contains_solution(self): - self.assertNotIn('solution', self.submission_list_first_entry['type']) - - def test_submission_data_contains_final_status(self): - self.assertEqual( - self.submission_list_first_entry['feedback']['is_final'], - self.student_info.submissions.first().feedback.is_final) - - def test_submission_data_contains_feedback_score(self): - self.assertEqual( - self.submission_list_first_entry['feedback']['score'], - self.student_info.submissions.first().feedback.score) - - def test_submission_feedback_contains_submission_lines(self): - self.assertIn( - 'feedback_lines', - self.submission_list_first_entry['feedback'] - ) - - def test_feedback_contains_one_comment_per_line(self): - lines = self.submission_list_first_entry['feedback']['feedback_lines'] - self.assertEqual(len(lines[1]), 1) - - def test_feedback_comment_does_not_contain_tutor(self): - lines = self.submission_list_first_entry['feedback']['feedback_lines'] - self.assertNotIn('of_tutor', lines[1][0]) - - # We don't want a matriculation number here - def test_matriculation_number_is_not_send(self): - self.assertNotIn('matrikel_no', self.submission_list_first_entry) diff --git a/grady/core/tests/test_student_reviewer_viewset.py b/grady/core/tests/test_student_reviewer_viewset.py deleted file mode 100644 index 8cb650e7..00000000 --- a/grady/core/tests/test_student_reviewer_viewset.py +++ /dev/null @@ -1,156 +0,0 @@ -from django.urls import reverse -from rest_framework import status -from rest_framework.test import (APIRequestFactory, APITestCase, - force_authenticate) - -from core import models -from core.views import StudentReviewerApiViewSet -from util.factories import make_test_data, make_exams, make_groups - - -class StudentPageTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - - def setUp(self): - exams = make_exams([{ - 'module_reference': 'TestExam B.Inf.0042', - 'total_score': 42, - 'pass_score': 21, - }]) - groups = make_groups([{ - 'name': 'Group 01', - 'exam': exams[0] - }, - { - 'name': 'Group 02', - 'exam': exams[0] - }]) - self.test_data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'TestExam B.Inf.0042', - 'total_score': 42, - 'pass_score': 21, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [{ - 'name': 'problem01', - 'full_score': 10, - 'description': 'Very hard', - 'solution': 'Impossible!', - 'exam_type': exams[0] - }], - 'students': [ - { - 'username': 'user01', - 'exam': 'TestExam B.Inf.0042', - 'exercise_groups': [groups[0]], - }, - { - 'username': 'user02', - 'exam': 'TestExam B.Inf.0042', - 'exercise_groups': [groups[1]], - }, - { - 'username': 'user03', - 'exam': 'TestExam B.Inf.0042', - 'exercise_groups': [groups[1]], - } - ], - 'tutors': [{ - 'username': 'tutor', - 'exercise_groups': [groups[1]], - }], - 'reviewers': [{ - 'username': 'reviewer', - 'exercise_groups': ['Group 1337'], - }], - 'submissions': [{ - 'user': 'user01', - 'type': 'problem01', - 'text': 'Too hard for me ;-(', - 'feedback': { - 'score': 3, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'tutor' - }], - } - } - }] - }) - - self.student = self.test_data['students'][0].student - self.reviewer = self.test_data['reviewers'][0] - self.tutor = self.test_data['tutors'][0] - self.submission = self.test_data['submissions'][0] - - self.request = self.factory.get(reverse('student-list')) - self.view = StudentReviewerApiViewSet.as_view({'get': 'list'}) - - force_authenticate(self.request, user=self.reviewer) - self.rev_response = self.view(self.request) - - force_authenticate(self.request, user=self.tutor) - self.tut_response = self.view(self.request) - - def test_reviewer_can_access(self): - self.assertEqual(self.rev_response.status_code, status.HTTP_200_OK) - - def test_tutor_can_see_no_students_when_not_in_exercise_mode(self): - self.assertEqual(0, len(self.tut_response.data)) - - def test_reviewer_can_see_all_students(self): - self.assertEqual(3, len(self.rev_response.data)) - - # ! Test fails in testing environtment, but cannot reproduced manually. - # Idea: make groups independent of exam_type, then look what happens. - - # @override_config(EXERCISE_MODE=True) - # def test_tutor_can_only_see_group_members_when_in_exercise_mode(self): - # force_authenticate(self.request, user=self.tutor) - # response = self.view(self.request) - # self.assertEqual(2, len(response.data)) - - def test_submissions_score_is_included(self): - res_with_sub = None - for res in self.rev_response.data: - if len(res['submissions']) > 0: - res_with_sub = res - self.assertEqual(self.student.submissions.first().feedback.score, - res_with_sub['submissions'][0]['score']) - - def test_submissions_full_score_is_included(self): - res_with_sub = None - for res in self.rev_response.data: - if len(res['submissions']) > 0: - res_with_sub = res - self.assertEqual(self.student.submissions.first().type.full_score, - res_with_sub['submissions'][0]['full_score']) - - def tutor_can_not_deactivate_students(self): - self.client.force_authenticate(self.tutor) - response = self.client.post(reverse('student-list') + 'deactivate/') - self.assertEqual(status.HTTP_401_UNAUTHORIZED, response.status_code) - users = [stud.user for stud in models.StudentInfo.objects.all()] - self.assertTrue(all([user.is_active for user in users])) - - def tutor_can_not_activate_students(self): - self.client.force_authenticate(self.tutor) - response = self.client.post(reverse('student-list') + 'activate/') - self.assertEqual(status.HTTP_401_UNAUTHORIZED, response.status_code) - - def test_can_deactivate_all_students(self): - self.client.force_authenticate(self.reviewer) - self.client.post(reverse('student-list') + 'deactivate/') - users = [stud.user for stud in models.StudentInfo.objects.all()] - self.assertTrue(all([not user.is_active for user in users])) - - def test_can_activate_all_students(self): - self.client.force_authenticate(self.reviewer) - self.client.post(reverse('student-list') + 'activate/') - users = [stud.user for stud in models.StudentInfo.objects.all()] - self.assertTrue(all([user.is_active for user in users])) diff --git a/grady/core/tests/test_submissiontypeview.py b/grady/core/tests/test_submissiontypeview.py deleted file mode 100644 index 864558fa..00000000 --- a/grady/core/tests/test_submissiontypeview.py +++ /dev/null @@ -1,102 +0,0 @@ -""" Tests that we can receive information about different submission types """ - -from constance.test import override_config -from django.urls import reverse -from rest_framework import status -from rest_framework.test import (APIRequestFactory, APITestCase, - force_authenticate) - -from core.models import SubmissionType -from core.views import SubmissionTypeApiView -from util.factories import GradyUserFactory, make_exams - -# TODO: add tests to test the remaining counts in conjunction with the assignment logic -# TODO: also test for pass only and stuff - - -class SubmissionTypeViewTestList(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.request = self.factory.get(reverse('submissiontype-list')) - SubmissionType.objects.create(name='Hard question', - full_score=20, - description='Whatever') - force_authenticate(self.request, - self.user_factory.make_reviewer()) - self.view = SubmissionTypeApiView.as_view({'get': 'list'}) - self.response = self.view(self.request) - - def test_can_access_when_authenticated(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_get_all_available_submissiontypes(self): - self.assertEqual(1, len(self.response.data)) - - def test_get_sumbission_type_name(self): - self.assertEqual('Hard question', self.response.data[0]['name']) - - def test_get_full_score(self): - self.assertEqual(20, self.response.data[0]['full_score']) - - -class SubmissionTypeViewTestRetrieve(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - cls.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - cls.student = cls.user_factory.make_student(exam=cls.exam) - - def setUp(self): - self.request = self.factory.get('/api/submissiontype/') - SubmissionType.objects.create(name='Hard question', - full_score=20, - description='Whatever') - self.pk = SubmissionType.objects.first().pk - force_authenticate(self.request, - self.user_factory.make_reviewer()) - self.view = SubmissionTypeApiView.as_view({'get': 'retrieve'}) - self.response = self.view(self.request, pk=self.pk) - - def test_can_access_when_authenticated(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_students_can_not_access(self): - request = self.factory.get('/api/submissiontype/') - force_authenticate(request, self.student) - view = SubmissionTypeApiView.as_view({'get': 'retrieve'}) - response = view(request, pk=self.pk) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - @override_config(SHOW_SOLUTION_TO_STUDENTS=True) - def test_student_can_access_when_config_is_set(self): - request = self.factory.get('/api/submissiontype/') - force_authenticate(request, self.student) - view = SubmissionTypeApiView.as_view({'get': 'retrieve'}) - response = view(request, pk=self.pk) - self.assertEqual(response.status_code, status.HTTP_200_OK) - - def test_get_id(self): - self.assertEqual(str(self.pk), self.response.data['pk']) - - def test_get_sumbission_type_name(self): - self.assertEqual('Hard question', self.response.data['name']) - - def test_get_full_score(self): - self.assertEqual(20, self.response.data['full_score']) - - def test_get_descritpion(self): - self.assertEqual('Whatever', self.response.data['description']) - - def test_there_is_no_solution_to_nothing(self): - self.assertEqual('', self.response.data['solution']) diff --git a/grady/core/tests/test_tutor_api_endpoints.py b/grady/core/tests/test_tutor_api_endpoints.py deleted file mode 100644 index ee84cf7d..00000000 --- a/grady/core/tests/test_tutor_api_endpoints.py +++ /dev/null @@ -1,256 +0,0 @@ -""" Two api endpoints are currently planned - - * GET /tutor/:id to retrive information about some tutor - * POST /tutor/:username/:email create a new tutor and email password - * GET /tutorlist list of all tutors with their scores -""" -from django.contrib.auth import get_user_model -from constance.test import override_config -from rest_framework import status -from rest_framework.reverse import reverse -from rest_framework.test import (APIClient, APIRequestFactory, APITestCase, - force_authenticate) - -from core.models import Feedback, TutorSubmissionAssignment -from core.views import CorrectorApiViewSet -from util.factories import GradyUserFactory, make_test_data, make_exams - -NUMBER_OF_TUTORS = 3 - - -class TutorDeleteTest(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.tutor = self.user_factory.make_tutor(username='UFO') - self.reviewer = self.user_factory.make_reviewer() - self.request = self.factory.delete(reverse('corrector-detail', - args=[str(self.tutor.pk)])) - self.view = CorrectorApiViewSet.as_view({'delete': 'destroy'}) - - force_authenticate(self.request, user=self.reviewer) - self.response = self.view(self.request, pk=str(self.tutor.pk)) - - def test_can_delete_tutor_soapbox(self): - """ see if the tutor was deleted """ - self.assertEqual(0, get_user_model().get_tutors().count()) - - def test_user_is_deleted_too(self): - """ see if the associated user was deleted (reviewer remains) """ - self.assertNotIn(self.tutor, get_user_model().objects.all()) - - -class TutorListTests(APITestCase): - - @classmethod - def setUpTestData(cls): - factory = APIRequestFactory() - - request = factory.get(reverse('corrector-list')) - view = CorrectorApiViewSet.as_view({'get': 'list'}) - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type': exams[0].exam_type_id - }], - 'submission_types': [{ - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }], - 'students': [ - { - 'username': 'student01', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student02', - 'exam': 'Test Exam 01' - } - ], - 'tutors': [ - {'username': 'tutor01'}, - {'username': 'tutor02'} - ], - 'reviewers': [ - {'username': 'reviewer'} - ], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n', - 'type': '01. Sort this or that', - 'user': 'student01' - }, - { - 'text': 'function blabl\n' - ' on multi lines\n', - 'type': '01. Sort this or that', - 'user': 'student02' - } - ]} - ) - - def feedback_cycle(tutor, stage): - submissions = TutorSubmissionAssignment.objects.available_assignments({ - 'owner': tutor, - 'stage': stage, - 'submission_type': data['submission_types'][0].pk - }) - assignment = TutorSubmissionAssignment.objects.create( - owner=tutor, - stage=stage, - submission=submissions.first().submission - ) - Feedback.objects.update_or_create( - of_submission=assignment.submission, - score=35) - assignment.finish() - - tutor01 = data['tutors'][0] - tutor02 = data['tutors'][1] - reviewer = data['reviewers'][0] - - feedback_cycle(tutor01, TutorSubmissionAssignment.FEEDBACK_CREATION) - feedback_cycle(tutor02, TutorSubmissionAssignment.FEEDBACK_VALIDATION) - - force_authenticate(request, user=reviewer) - cls.response = view(request) - - def test_can_access(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_get_a_list_of_all_correctos(self): - self.assertEqual(3, len(self.response.data)) - - def test_feedback_created_count_matches_database(self): - def verify_fields(tutor_obj): - t = get_user_model().objects.get(username=tutor_obj['username']) - feedback_created_count = TutorSubmissionAssignment.objects.filter( - is_done=True, - stage=TutorSubmissionAssignment.FEEDBACK_CREATION, # noqa - owner=t - ).count() - return feedback_created_count == tutor_obj['feedback_created'] - - self.assertTrue(all(map(verify_fields, self.response.data))) - - def test_feedback_validated_count_matches_database(self): - def verify_fields(tutor_obj): - t = get_user_model().objects.get(username=tutor_obj['username']) - feedback_validated_cnt = TutorSubmissionAssignment.objects.filter( - is_done=True, - stage=TutorSubmissionAssignment.FEEDBACK_VALIDATION, # noqa - owner=t - ).count() - return feedback_validated_cnt == tutor_obj['feedback_validated'] - - self.assertTrue(all(map(verify_fields, self.response.data))) - - def test_sum_of_done_assignments(self): - self.assertEqual( - sum(obj['feedback_created'] + obj['feedback_validated'] - for obj in self.response.data), - TutorSubmissionAssignment.objects.filter(is_done=True).count() - ) - - -class TutorCreateTests(APITestCase): - - USERNAME = 'some_weird_name' - - @classmethod - def setUpTestData(cls): - cls.factory = APIRequestFactory() - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.reviewer = self.user_factory.make_reviewer() - self.request = self.factory.post(reverse('corrector-list'), - {'username': self.USERNAME}) - self.view = CorrectorApiViewSet.as_view({'post': 'create'}) - - force_authenticate(self.request, user=self.reviewer) - self.response = self.view(self.request, username=self.USERNAME) - - def test_can_access(self): - self.assertEqual(self.response.status_code, status.HTTP_201_CREATED) - - def test_can_create(self): - self.assertEqual(self.USERNAME, - get_user_model().get_tutors().first().username) - - -class TutorDetailViewTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.tutor = self.user_factory.make_tutor(username='fetterotto') - self.reviewer = self.user_factory.make_reviewer() - self.client = APIClient() - self.client.force_authenticate(user=self.reviewer) - - url = reverse('corrector-detail', kwargs={'pk': str(self.tutor.pk)}) - self.response = self.client.get(url, format='json') - - def test_can_access(self): - self.assertEqual(self.response.status_code, status.HTTP_200_OK) - - def test_can_view_tutor(self): - self.assertEqual(self.response.data['username'], - self.tutor.username) - - -class TutorRegisterTests(APITestCase): - - @classmethod - def setUpTestData(cls): - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.reviewer = self.user_factory.make_reviewer() - self.client = APIClient() - - @override_config(REGISTRATION_PASSWORD='pw') - def test_reviewer_can_activate_tutor(self): - response = self.client.post('/api/corrector/register/', { - 'username': 'hans', - 'password': 'safeandsound', - 'registration_password': 'pw', - }) - - self.assertEqual(status.HTTP_201_CREATED, response.status_code) - - self.client.force_authenticate(self.reviewer) - response = self.client.put('/api/corrector/%s/' % response.data['pk'], { - 'username': 'hans', - 'is_active': True - }) - - self.assertEqual(status.HTTP_200_OK, response.status_code) - - def test_trottle_is_not_active_while_testing(self): - r = self.client.post('/api/corrector/register/', {'username': 'hans'}) - r = self.client.post('/api/corrector/register/', {'username': 'the'}) - r = self.client.post('/api/corrector/register/', {'username': 'brave'}) - r = self.client.post('/api/corrector/register/', {'username': 'fears'}) - r = self.client.post('/api/corrector/register/', {'username': 'spiders'}) - - self.assertNotEqual(status.HTTP_429_TOO_MANY_REQUESTS, r.status_code) diff --git a/grady/core/tests/test_user_account_views.py b/grady/core/tests/test_user_account_views.py deleted file mode 100644 index e64beb3c..00000000 --- a/grady/core/tests/test_user_account_views.py +++ /dev/null @@ -1,170 +0,0 @@ -from rest_framework import status -from rest_framework.test import (APIClient, APITestCase) - -from util.factories import GradyUserFactory, make_exams - - -class TutorReviewerCanChangePasswordTests(APITestCase): - @classmethod - def setUpTestData(cls): - cls.user_factory = GradyUserFactory() - cls.data = { - 'old_password': 'l', - 'new_password': 'chompreviver0.' - } - - def setUp(self): - self.reviewer = self.user_factory.make_reviewer(password='l') - self.tutor1 = self.user_factory.make_tutor(password='l') - self.tutor2 = self.user_factory.make_tutor(password='l') - self.client = APIClient() - - def _change_password(self, changing_user, user_to_change=None, data=None): - if user_to_change is None: - user_to_change = changing_user - if data is None: - data = self.data - - self.client.force_authenticate(user=changing_user) - url = f"/api/user/{user_to_change.pk}/change_password/" - return self.client.patch(url, data=data) - - def test_tutor_needs_to_provide_current_password(self): - res = self._change_password(self.tutor1, - data={'new_password': 'chompreviver0.'}) - self.assertEqual(status.HTTP_401_UNAUTHORIZED, res.status_code) - ret = self.client.login(username=self.tutor1.username, - password='chompreviver0.') - self.assertFalse(ret) - - def test_reviewer_needs_to_provide_current_password_for_self(self): - res = self._change_password(self.reviewer, - data={'new_password': 'chompreviver0.'}) - self.assertEqual(status.HTTP_401_UNAUTHORIZED, res.status_code) - ret = self.client.login(username=self.tutor1.username, - password='chompreviver0.') - self.assertFalse(ret) - - def test_tutor_can_change_own_password(self): - res = self._change_password(self.tutor1) - self.assertEqual(status.HTTP_200_OK, res.status_code) - ret = self.client.login(username=self.tutor1.username, - password='chompreviver0.') - self.assertTrue(ret) - - def test_tutor_cant_change_other_password(self): - res = self._change_password(self.tutor1, self.tutor2) - self.assertEqual(status.HTTP_403_FORBIDDEN, res.status_code) - ret = self.client.login(username=self.tutor2.username, - password='chompreviver0.') - self.assertFalse(ret) - - def test_reviewer_can_change_own_password(self): - res = self._change_password(self.reviewer) - self.assertEqual(status.HTTP_200_OK, res.status_code) - ret = self.client.login(username=self.reviewer.username, - password='chompreviver0.') - self.assertTrue(ret) - - def test_reviewer_can_change_tutor_password(self): - res = self._change_password(self.reviewer, self.tutor1, - data={'new_password': 'chompreviver0.'}) - self.assertEqual(status.HTTP_200_OK, res.status_code) - ret = self.client.login(username=self.tutor1.username, - password='chompreviver0.') - self.assertTrue(ret) - - def test_student_cant_change_password(self): - self.exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - student = self.user_factory.make_student(password='l', exam=self.exam) - res = self._change_password(student) - self.assertEqual(status.HTTP_403_FORBIDDEN, res.status_code) - ret = self.client.login(username=student.username, - password='chompreviver0.') - self.assertFalse(ret) - - def test_reviewer_cannot_revoke_own_access(self): - user_pk = self.reviewer.pk - url = f"/api/user/{user_pk}/change_active/" - data = {'is_active': False} - self.client.force_authenticate(user=self.reviewer) - res = self.client.patch(url, data) - self.assertEqual(status.HTTP_403_FORBIDDEN, res.status_code) - - -class ReviewerCanChangeCorrectorRoleTests(APITestCase): - @classmethod - def setUpTestData(cls): - cls.user_factory = GradyUserFactory() - - def setUp(self): - self.reviewer1 = self.user_factory.make_reviewer() - self.client = APIClient() - - def _set_role(self, new_value, changing_user, user_to_change): - self.client.force_authenticate(user=changing_user) - url = f"/api/user/{user_to_change.pk}/change_role/" - return self.client.patch(url, data={'role': new_value}) - - def _make_reviewer(self, changing_user, user_to_change): - return self._set_role('Reviewer', changing_user, user_to_change) - - def _make_tutor(self, changing_user, user_to_change): - return self._set_role('Tutor', changing_user, user_to_change) - - def test_reviewer_can_promote_tutor_to_reviewer(self): - tutor = self.user_factory.make_tutor() - response = self._make_reviewer(self.reviewer1, tutor) - self.assertEqual(response.status_code, status.HTTP_200_OK) - tutor.refresh_from_db() - self.assertTrue(tutor.is_reviewer()) - - def test_reviewer_can_demote_other_reviewer_to_tutor(self): - reviewer2 = self.user_factory.make_reviewer() - response = self._make_tutor(self.reviewer1, reviewer2) - self.assertEqual(response.status_code, status.HTTP_200_OK) - reviewer2.refresh_from_db() - self.assertFalse(reviewer2.is_reviewer()) - - def test_reviewer_cannot_promote_student_to_reviewer(self): - exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - student = self.user_factory.make_student(exam=exam) - response = self._make_reviewer(self.reviewer1, student) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_reviewer_cannot_promote_student_to_tutor(self): - exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - student = self.user_factory.make_student(exam=exam) - response = self._make_tutor(self.reviewer1, student) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_student_cannot_change_access_rights(self): - exam = make_exams(exams=[{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }])[0] - student = self.user_factory.make_student(exam=exam) - response = self._make_reviewer(student, self.reviewer1) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_tutor_cannot_change_access_rights(self): - tutor = self.user_factory.make_tutor() - response = self._make_reviewer(tutor, self.reviewer1) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - - def test_reviewer_cannot_demote_self_to_tutor(self): - response = self._make_tutor(self.reviewer1, self.reviewer1) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) diff --git a/grady/core/urls.py b/grady/core/urls.py deleted file mode 100644 index ecceb7f5..00000000 --- a/grady/core/urls.py +++ /dev/null @@ -1,63 +0,0 @@ -from django.urls import path, re_path -from drf_yasg.views import get_schema_view -from drf_yasg import openapi -from rest_framework.routers import DefaultRouter -from rest_framework.permissions import AllowAny - -from core import views - -# Create a router and register our viewsets with it. - -router = DefaultRouter() -router.register('student', views.StudentReviewerApiViewSet, - basename='student') -router.register('examtype', views.ExamApiViewSet, basename='examtype') -router.register('feedback', views.FeedbackApiView, basename='feedback') -router.register('feedback-comment', views.FeedbackCommentApiView, basename='feedback-comment') -router.register('submission', views.SubmissionViewSet, - basename='submission') -router.register('submissiontype', views.SubmissionTypeApiView, basename='submissiontype') -router.register('corrector', views.CorrectorApiViewSet, basename='corrector') -router.register('assignment', views.AssignmentApiViewSet, basename='assignment') -router.register('statistics', views.StatisticsEndpoint, basename='statistics') -router.register('user', views.UserAccountViewSet, basename='user') -router.register('label', views.LabelApiViewSet, basename='label') -router.register('label-statistics', views.LabelStatistics, basename='label-statistics') -router.register('solution-comment', views.SolutionCommentApiViewSet, basename='solution-comment') -router.register('group', views.GroupApiViewSet, basename='group') -router.register('config', views.InstanceConfigurationViewSet, basename='config') - -schema_view = get_schema_view( - openapi.Info( - title="Grady API", - default_version='v1', - description="Blub", - ), - # validators=['flex', 'ssv'], - public=True, - permission_classes=(AllowAny,), -) - -# regular views that are not viewsets -regular_views_urlpatterns = [ - path('student-page/', - views.StudentSelfApiView.as_view(), - name='student-page'), - path('student-submissions/', - views.StudentSelfSubmissionsApiView.as_view(), - name='student-submissions'), - path('instance/export/', views.InstanceExport.as_view(), name="instance-export"), - path('export/json/', views.StudentJSONExport.as_view(), name='export-json'), - path('import/', views.ImportApiViewSet.as_view(), name='import-json'), - re_path(r'swagger(?P<format>\.json|\.yaml)$', - schema_view.without_ui(cache_timeout=0), name='schema-json'), - re_path(r'swagger/$', schema_view.with_ui('swagger', cache_timeout=0), - name='schema-swagger-ui'), - re_path(r'redoc/$', schema_view.with_ui('redoc', cache_timeout=0), - name='schema-redoc'), -] - -urlpatterns = [ - *router.urls, - *regular_views_urlpatterns, -] diff --git a/grady/core/views/__init__.py b/grady/core/views/__init__.py deleted file mode 100644 index 1073d217..00000000 --- a/grady/core/views/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from .feedback import FeedbackApiView, FeedbackCommentApiView # noqa -from .assignment import AssignmentApiViewSet # noqa -from .common_views import * # noqa -from .export import StudentJSONExport, InstanceExport # noqa -from .label import LabelApiViewSet, LabelStatistics # noqa -from .importer import ImportApiViewSet # noqa -from .group import GroupApiViewSet # noqa diff --git a/grady/core/views/assignment.py b/grady/core/views/assignment.py deleted file mode 100644 index 1182d7b9..00000000 --- a/grady/core/views/assignment.py +++ /dev/null @@ -1,126 +0,0 @@ -import logging - -from rest_framework import mixins, status, viewsets -from rest_framework import decorators -from rest_framework.exceptions import PermissionDenied -from rest_framework.response import Response - -from core import models, serializers -from core.models import TutorSubmissionAssignment -from core.permissions import IsReviewer, IsTutorOrReviewer -from core.serializers import AssignmentDetailSerializer, AssignmentSerializer - -from multiprocessing import Lock - -from core.views.util import tutor_attempts_to_patch_first_feedback_final - -log = logging.getLogger(__name__) - - -class AssignmentApiViewSet( - mixins.RetrieveModelMixin, - mixins.ListModelMixin, - viewsets.GenericViewSet): - serializer_class = AssignmentSerializer - permission_classes = (IsTutorOrReviewer, ) - - def get_queryset(self): - base_queryset = TutorSubmissionAssignment.objects.all() - if self.action in ['list', 'active', 'destroy']: - return base_queryset.all() - else: - return base_queryset.filter(owner=self.request.user) - - def _fetch_assignment(self, serializer): - try: - serializer.save() - except models.SubmissionTypeDepleted as err: - return Response({'Error': str(err)}, - status=status.HTTP_404_NOT_FOUND) - except models.NotMoreThanTwoOpenAssignmentsAllowed as err: - return Response({'Error': str(err)}, - status=status.HTTP_403_FORBIDDEN) - return Response(serializer.data, status=status.HTTP_201_CREATED) - - @decorators.permission_classes((IsReviewer,)) - def list(self, *args, **kwargs): - return super().list(*args, **kwargs) - - @decorators.action(detail=False, permission_classes=(IsReviewer,), methods=['get', 'delete']) - def active(self, request): - if request.method == 'GET': - queryset = self.get_queryset().filter(is_done=False) - serializer = self.get_serializer(queryset, many=True) - return Response(serializer.data) - else: - self.get_queryset().filter(is_done=False).delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - @decorators.action(detail=False, permission_classes=(IsTutorOrReviewer,), methods=['delete']) - def release(self, request): - self.get_queryset().filter( - is_done=False - ).delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - @decorators.action(detail=True, methods=['post']) - def finish(self, request, *args, **kwargs): - context = self.get_serializer_context() - instance = self.get_object() - if instance.is_done or (instance.owner != request.user): - return Response(status=status.HTTP_403_FORBIDDEN) - try: - orig_feedback = instance.submission.feedback - serializer = serializers.FeedbackSerializer( - orig_feedback, - data=request.data, - context=context, - partial=True) - if orig_feedback.final_by_reviewer and request.user.role == models.UserAccount.TUTOR: - raise PermissionDenied(detail="Unfortunately you won't be able to finish this" - "assignment since a reviewer has marked it as " - "final while you were assigned.") - except models.Feedback.DoesNotExist: - serializer = serializers.FeedbackSerializer( - data=request.data, - context=context) - - serializer.is_valid(raise_exception=True) - if tutor_attempts_to_patch_first_feedback_final(serializer, self.request.user, instance): - raise PermissionDenied( - detail='Cannot set the first feedback final.') - serializer.save() - instance.finish() - response_status = status.HTTP_201_CREATED if \ - instance.stage == \ - models.TutorSubmissionAssignment.FEEDBACK_CREATION else status.HTTP_200_OK - return Response(serializer.data, status=response_status) - - def destroy(self, request, pk=None): - """ Stop working on the assignment before it is finished """ - instance = self.get_object() - - if instance.is_done or (instance.owner != request.user and - not request.user.is_reviewer()): - return Response(status=status.HTTP_403_FORBIDDEN) - - instance.delete() - return Response(status=status.HTTP_204_NO_CONTENT) - - def create(self, request, *args, **kwargs): - with Lock(): - context = self.get_serializer_context() - data = request.data - serializer = AssignmentDetailSerializer(data=data, - context=context) - serializer.is_valid(raise_exception=True) - assignment = self._fetch_assignment(serializer) - - return assignment - - def retrieve(self, request, *args, **kwargs): - assignment = self.get_object() - if assignment.owner != request.user: - return Response(status=status.HTTP_403_FORBIDDEN) - serializer = AssignmentDetailSerializer(assignment) - return Response(serializer.data) diff --git a/grady/core/views/common_views.py b/grady/core/views/common_views.py deleted file mode 100644 index 237b394e..00000000 --- a/grady/core/views/common_views.py +++ /dev/null @@ -1,434 +0,0 @@ -""" All API views that are used to retrieve data from the database. They -can be categorized by the permissions they require. All views require a -user to be authenticated and most are only accessible by one user group """ -import logging - -import os - -import constance -import django.contrib.auth.password_validation as validators -import nbformat -from django.conf import settings -from django.contrib.auth.hashers import check_password -from django.core import exceptions -from django.db.models import Avg -from nbconvert import HTMLExporter -from rest_framework import generics, mixins, status, viewsets -from rest_framework.decorators import (throttle_classes, - action) -from rest_framework.exceptions import PermissionDenied -from rest_framework.permissions import AllowAny -from rest_framework.response import Response -from rest_framework.throttling import AnonRateThrottle - -from core import models -from core.models import (ExamType, StudentInfo, - SubmissionType, TutorSubmissionAssignment, Group) -from core.permissions import IsReviewer, IsStudent, IsTutorOrReviewer, SolutionsEnabledToStudents -from core.serializers import (ExamSerializer, StudentInfoSerializer, - StudentInfoForListViewSerializer, - StudentSubmissionWithSolutionSerializer, - SubmissionNoTypeSerializer, StudentSubmissionSerializer, - SubmissionTypeSerializer, CorrectorSerializer, - UserAccountSerializer, SolutionCommentSerializer, - SubmissionNoTypeWithStudentSerializer) - -log = logging.getLogger(__name__) -config = constance.config - - -class StudentSelfApiView(generics.RetrieveAPIView): - """ Gets all data that belongs to one student """ - permission_classes = (IsStudent,) - serializer_class = StudentInfoSerializer - - def get_object(self) -> StudentInfo: - """ The object in question is the student associated with the requests - user. Since the permission IsStudent is satisfied the member exists """ - if self.request.user.is_superuser: - return StudentInfo.objects.last() - return self.request.user.student - - -class StudentSelfSubmissionsApiView(generics.ListAPIView): - permission_classes = (IsStudent,) - - def get_serializer_class(self): - if config.SHOW_SOLUTION_TO_STUDENTS: - return StudentSubmissionWithSolutionSerializer - - return StudentSubmissionSerializer - - def get_queryset(self): - return self.request.user.student.submissions - - -class StudentReviewerApiViewSet(viewsets.ReadOnlyModelViewSet): - """ Gets a list of all students without individual submissions """ - permission_classes = (IsTutorOrReviewer,) - serializer_class = StudentInfoForListViewSerializer - - def get_queryset(self): - queryset = StudentInfo.objects \ - .select_related('user') \ - .prefetch_related('submissions') \ - .prefetch_related('submissions__feedback') \ - .prefetch_related('submissions__type') \ - .all() - - if self.request.user.is_reviewer(): - return queryset - - elif self.request.user.is_tutor() and config.EXERCISE_MODE: - return queryset.filter( - user__exercise_groups__in=self.request.user.exercise_groups.all() - ) - - else: - return [] - - def _set_students_active(self, active): - for student in self.get_queryset(): - user = student.user - user.is_active = active - user.save() - - @action(detail=False, methods=['post'], permission_classes=(IsReviewer,)) - def deactivate(self, request): - self._set_students_active(False) - return Response(status=status.HTTP_200_OK) - - @action(detail=False, methods=['post'], permission_classes=(IsReviewer,)) - def activate(self, request): - self._set_students_active(True) - return Response(status=status.HTTP_200_OK) - - -class ExamApiViewSet(viewsets.ReadOnlyModelViewSet): - """ Gets a list of an individual exam by Id if provided """ - queryset = ExamType.objects.all() - serializer_class = ExamSerializer - - -class CorrectorApiViewSet( - mixins.RetrieveModelMixin, - mixins.UpdateModelMixin, - mixins.CreateModelMixin, - mixins.DestroyModelMixin, - mixins.ListModelMixin, - viewsets.GenericViewSet): - """ Api endpoint for creating, listing, viewing or deleting tutors """ - permission_classes = (IsReviewer,) - queryset = models.UserAccount.corrector \ - .with_feedback_count() \ - .prefetch_related('assignments') - serializer_class = CorrectorSerializer - - @action(detail=False, methods=['post'], permission_classes=[AllowAny]) - @throttle_classes([AnonRateThrottle]) - def register(self, request): - serializer = self.get_serializer(data=request.data) - serializer.is_valid(raise_exception=True) - - if serializer.validated_data.get('is_active', False): - raise PermissionDenied(detail='Cannot be created active') - - registration_password = request.data.get('registration_password', None) - if registration_password is None or registration_password != config.REGISTRATION_PASSWORD: - raise PermissionDenied(detail='Invalid registration password') - - serializer.save() - return Response(serializer.data, status=status.HTTP_201_CREATED) - - -class SubmissionTypeApiView(viewsets.ReadOnlyModelViewSet): - """ Gets a list or a detail view of a single SubmissionType """ - queryset = SubmissionType.objects.all() - serializer_class = SubmissionTypeSerializer - permission_classes = [IsTutorOrReviewer | SolutionsEnabledToStudents] - - @action(detail=False) - def available(self, request, *args, **kwargs): - """ - GET Endpoint to fetch available counts for SubmissionTypes. Can be queried - by group using the ?group query_parameter - - :return: Response with dictionary that contains available counts for each SubmissionType - """ - - group_param = request.query_params.get('group', None) - group = Group.objects.filter(pk=group_param).first() - sub_types = self.get_queryset() - res = {} - for sub_type in sub_types: - counts_for_type = {} - for stage, _ in models.TutorSubmissionAssignment.stages: - counts_in_stage = TutorSubmissionAssignment.objects.available_assignments({ - 'stage': stage, - 'submission_type': sub_type.pk, - 'owner': self.request.user, - 'group': None if not group else group.pk - }).count() - counts_for_type[str(stage)] = counts_in_stage - res[str(sub_type.pk)] = counts_for_type - - return Response(res) - - -class SolutionCommentApiViewSet( - mixins.CreateModelMixin, - mixins.UpdateModelMixin, - mixins.DestroyModelMixin, - viewsets.GenericViewSet): - permission_classes = (IsTutorOrReviewer,) - queryset = models.SolutionComment.objects.all() - serializer_class = SolutionCommentSerializer - - def destroy(self, request, *args, **kwargs): - instance = self.get_object() - if not request.user.is_reviewer() and instance.of_user != request.user: - raise PermissionDenied(detail="You can only delete comments you made") - self.perform_destroy(instance) - return Response(status=status.HTTP_204_NO_CONTENT) - - def update(self, request, *args, **kwargs): - instance = self.get_object() - if instance.of_user != request.user: - raise PermissionDenied(detail="You can only update comments you made") - return super().update(request, *args, **kwargs) - - -class StatisticsEndpoint(viewsets.ViewSet): - permission_classes = (IsTutorOrReviewer,) - - def retrieve(self, request, pk=None): - first_sub_type = models.SubmissionType.objects.filter(exam_type_id=pk).first() - - return Response({ - 'submissions_per_type': - first_sub_type.submissions.count() if first_sub_type is not None else 0, - - 'submissions_per_student': - models.SubmissionType.objects.filter(exam_type_id=pk).count(), - - 'current_mean_score': - models.Feedback.objects.filter(of_submission__type__exam_type_id=pk).aggregate - (avg=Avg('score')).get('avg', 0), - - 'submission_type_progress': - # Queryset is explicitly evaluated so camelizer plugin camelizes it - list(models.SubmissionType.get_annotated_feedback_count().filter( - exam_type_id=pk).values( - 'pk', - 'name', - 'submission_count', - 'feedback_final', - 'feedback_in_validation', - 'feedback_in_conflict')) - }) - - -class SubmissionViewSet(viewsets.ReadOnlyModelViewSet): - permission_classes = (IsTutorOrReviewer,) - - def get_serializer_class(self): - if self.request.user.is_reviewer() or config.EXERCISE_MODE: - # this contains student fullname - # in most cases a pseudonym, but useful for - # tracking students across views in the frontend - return SubmissionNoTypeWithStudentSerializer - return SubmissionNoTypeSerializer - - def get_queryset(self): - base_queryset = models.Submission.objects \ - .select_related('type') \ - .select_related('feedback') \ - .prefetch_related('tests') \ - .prefetch_related('feedback__feedback_lines') \ - .prefetch_related('feedback__feedback_lines__of_tutor') \ - .all() - - if self.request.user.is_reviewer() \ - or (self.request.user.is_tutor() and config.EXERCISE_MODE): - return base_queryset - elif self.request.user.is_student(): - return base_queryset.filter( - student__user=self.request.user - ) - else: - return base_queryset.filter( - assignments__owner=self.request.user - ) - - @action(detail=True, ) - def source_code(self, request, *args, **kwargs): - submission = self.get_object() - if submission.source_code_available: - return Response(data={'source_code': submission.source_code}) - return Response(status=status.HTTP_404_NOT_FOUND) - - @action(detail=True, permission_classes=(IsStudent,)) - def html(self, request, *args, **kwargs): - submission = self.get_object() - if submission.type.programming_language == models.SubmissionType.PYTHON and \ - submission.source_code_available: - notebook = nbformat.reads(submission.source_code, as_version=4) - html_exporter = HTMLExporter() - body, _ = html_exporter.from_notebook_node(notebook) - return Response(body, content_type='text/html') - return Response(status=status.HTTP_404_NOT_FOUND) - - -class UserAccountViewSet(viewsets.ReadOnlyModelViewSet): - serializer_class = UserAccountSerializer - queryset = models.UserAccount.objects.all() - - @action(detail=True, methods=['patch'], permission_classes=(IsTutorOrReviewer,)) - def change_password(self, request, *args, **kwargs): - user = self.get_object() - if request.user != user and not request.user.is_reviewer(): - return Response(status=status.HTTP_403_FORBIDDEN) - old_password = request.data.get('old_password') - - # tutors must always provide their current password - # reviewers must provide their current password when they change - # their own, not if they change the password of a tutor - if (request.user.is_tutor() or - request.user.is_reviewer and request.user == user) \ - and \ - (old_password is None or - not check_password(old_password, user.password)): - return Response(status=status.HTTP_401_UNAUTHORIZED) - - new_password = request.data.get('new_password') - # validate password - try: - if new_password is not None: - validators.validate_password(password=new_password, user=user) - except exceptions.ValidationError as err: - return Response({'new_password': list(err.messages)}, - status=status.HTTP_406_NOT_ACCEPTABLE) - user.set_password(new_password) - user.save() - log.info(f"User {request.user} changed password of {user}") - return Response(status=status.HTTP_200_OK) - - @action(detail=True, methods=['patch']) - def change_active(self, request, *args, **kwargs): - active = request.data.get('is_active') - req_user = request.user - user = self.get_object() - if active is None: - error_msg = "You need to provide an 'active' field" - return Response({'Error': error_msg}, status.HTTP_400_BAD_REQUEST) - if req_user.is_reviewer() and req_user == user: - error_msg = "As a reviewer, you cannot revoke your own access." - return Response({'Error': error_msg}, status.HTTP_403_FORBIDDEN) - if (req_user.is_student() or req_user.is_tutor()) and req_user != user: - return Response(status.HTTP_403_FORBIDDEN) - user.is_active = active - user.save() - return Response(status.HTTP_200_OK) - - @action(detail=True, methods=['patch'], permission_classes=(IsReviewer,)) - def change_groups(self, request, *args, **kwargs): - # for some reason only the newly added groups come as a group object - groups = [x.get('pk') if type(x) is not str else x for x in request.data] - req_user = request.user - user = self.get_object() - if groups is None: - error_msg = "You need to provide an 'groups' field" - return Response({'Error': error_msg}, status.HTTP_400_BAD_REQUEST) - if req_user.is_student() or req_user.is_tutor(): - return Response(status.HTTP_403_FORBIDDEN) - user.set_groups(groups) - user.save() - return Response(status.HTTP_200_OK) - - @action(detail=True) - def get_groups(self, request, *args, **kwargs): - req_user = request.user - if req_user.is_student() or req_user.is_tutor(): - return Response(status.HTTP_403_FORBIDDEN) - user = self.get_object() - return Response(user.exercise_groups, status=status.HTTP_200_OK) - - @action(detail=True, methods=["patch"]) - def change_role(self, request, *args, **kwargs): - new_role = request.data.get('role') - user = self.get_object() - valid_values = [ - models.UserAccount.STUDENT, - models.UserAccount.REVIEWER, - models.UserAccount.TUTOR, - ] - if new_role not in valid_values: - error_msg = ( - "You need to provide a 'role' field with one of these values: " - + ', '.join(valid_values) - ) - return Response({'Error': error_msg}, status.HTTP_400_BAD_REQUEST) - if not request.user.is_reviewer(): - error_msg = 'Only reviewers can manage access rights.' - return Response({'Error': error_msg}, status.HTTP_403_FORBIDDEN) - if user.is_student(): - error_msg = 'Cannot promote a student to another role.' - return Response({'Error': error_msg}, status.HTTP_403_FORBIDDEN) - if user == request.user and not new_role == models.UserAccount.REVIEWER: - error_msg = 'As a reviewer, you cannot demote yourself.' - return Response({'Error': error_msg}, status.HTTP_403_FORBIDDEN) - user.role = new_role - user.save() - return Response(status.HTTP_200_OK) - - @action(detail=False) - def me(self, request): - serializer = self.get_serializer(request.user) - return Response(serializer.data, status=status.HTTP_200_OK) - - -class InstanceConfigurationViewSet(viewsets.ViewSet): - @action(detail=False, methods=['patch']) - def change_config(self, request): - """ - PATCH Endpoint to modify constance settings. Requires reviewer permissions. - - :return: Response with dictionary of all modified constance fields. - """ - if not self.request.user.is_reviewer(): - return Response(status=status.HTTP_403_FORBIDDEN) - - res = {} - for key in request.data: - - # capitalize key and check if it is a valid constance entry - caps_key = key.upper() - if getattr(config, caps_key, None) is None: - return Response( - f"{key} is not a valid setting.", - status=status.HTTP_409_CONFLICT - ) - - val = request.data[key] - setattr(config, caps_key, val) - res[key] = val - - return Response(res, status=status.HTTP_206_PARTIAL_CONTENT) - - def list(self, request): - """ - GET Endpoint to list constance settings as well as additional config values. - Constance settings will be supplied in the "instance_settings" field. - - :return: Response with dictionary of all settings and config values. - """ - - # construct constance data, lowercase the key so that it is correctly camel-cased - settings_dict = {key.lower(): getattr(config, key) for key in dir(config)} - res = { - 'timeDelta': settings.JWT_AUTH['JWT_EXPIRATION_DELTA'].seconds * 1000, - 'version': os.environ.get('VERSION'), - 'instanceSettings': settings_dict, - } - - return Response(res, status=status.HTTP_200_OK) diff --git a/grady/core/views/export.py b/grady/core/views/export.py deleted file mode 100644 index 7a02c8e2..00000000 --- a/grady/core/views/export.py +++ /dev/null @@ -1,79 +0,0 @@ -from django.db import transaction - -from rest_framework.response import Response -from rest_framework.views import APIView - -import xkcdpass.xkcd_password as xp - -from core.models import StudentInfo, UserAccount, ExamType, SubmissionType -from core.permissions import IsReviewer -from core.serializers import SubmissionTypeSerializer, \ - ExamSerializer, UserAccountSerializer -from core.serializers.student import StudentExportSerializer, ExamInfoSerializer -from core.serializers.tutor import CorrectorSerializer - -words = xp.generate_wordlist(wordfile=xp.locate_wordfile(), min_length=5, max_length=8) - - -@transaction.atomic -def _set_student_passwords(): - student_password_dict = {} - # TODO use bulk update with django makepassword function - for student in UserAccount.get_students(): - password = xp.generate_xkcdpassword(words, numwords=3, delimiter='-') - student.set_password(password) - student.save() - student_password_dict[student.pk] = password - - return student_password_dict - - -class StudentJSONExport(APIView): - permission_classes = (IsReviewer,) - - def post(self, request, format=None): - set_passwords = request.data.get('set_passwords') - passwords = _set_student_passwords() if set_passwords else None - - content = [ - {'Matrikel': student.matrikel_no, - 'Name': student.user.fullname, - 'Username': student.user.username, - 'Email': student.user.email, - 'Exams': ExamInfoSerializer(student.exams.all(), many=True).data, - 'Password': passwords[student.user.pk] if set_passwords else '********', - 'Scores': [ - { - 'exam': exam_info.exam.module_reference, - 'submissions': [ - { - 'type': submission_type, - 'score': score - } for submission_type, score in exam_info.score_per_submission().items()] - } for exam_info in student.exams.all()] - } for student - in StudentInfo.objects.all()] - return Response(content) - - -class InstanceExport(APIView): - permission_classes = (IsReviewer,) - - def get(self, request): - exam_types_serializer = ExamSerializer(ExamType.objects.all(), many=True) - submission_types_serializer = SubmissionTypeSerializer( - SubmissionType.objects.all(), many=True) - tutors_serializer = CorrectorSerializer( - UserAccount.corrector.with_feedback_count(), - many=True) - reviewer_serializer = UserAccountSerializer(UserAccount.get_reviewers(), many=True) - student_serializer = StudentExportSerializer(StudentInfo.objects.all(), many=True) - - content = { - "examTypes": exam_types_serializer.data, - "submissionTypes": submission_types_serializer.data, - "students": student_serializer.data, - "tutors": tutors_serializer.data, - "reviewers": reviewer_serializer.data - } - return Response(content) diff --git a/grady/core/views/feedback.py b/grady/core/views/feedback.py deleted file mode 100644 index 4225c86a..00000000 --- a/grady/core/views/feedback.py +++ /dev/null @@ -1,123 +0,0 @@ -import logging -from multiprocessing import Lock - -import constance -from rest_framework import mixins, status, viewsets -from rest_framework.exceptions import PermissionDenied -from rest_framework.response import Response - -from core import models, permissions, serializers -from core.views.util import tutor_attempts_to_patch_first_feedback_final, \ - get_implicit_assignment_for_user - -log = logging.getLogger(__name__) -config = constance.config - - -class FeedbackApiView( - mixins.CreateModelMixin, - mixins.RetrieveModelMixin, - mixins.ListModelMixin, - viewsets.GenericViewSet): - """ Gets a list of an individual exam by Id if provided """ - permission_classes = (permissions.IsTutorOrReviewer,) - lookup_field = 'of_submission__pk' - lookup_url_kwarg = 'submission_pk' - - def _tutor_attempts_to_change_final_feedback_of_reviewer(self, serializer): - feedback_final_by_reviewer = serializer.instance.final_by_reviewer - user_is_tutor = self.request.user.role == models.UserAccount.TUTOR - return feedback_final_by_reviewer and user_is_tutor - - def _tutor_attempts_to_set_first_feedback_final(self, serializer): - is_final_set = serializer.validated_data.get('is_final', False) - user_is_tutor = self.request.user.role == models.UserAccount.TUTOR - return is_final_set and user_is_tutor - - def get_serializer_class(self): - if config.EXERCISE_MODE: - return serializers.FeedbackWithStudentSerializer - return serializers.FeedbackSerializer - - def get_queryset(self): - base_queryset = models.Feedback.objects \ - .select_related('of_submission') \ - .select_related('of_submission__type') \ - .select_related('of_submission__student') \ - .select_related('of_submission__student__user') \ - .all() - - if self.request.user.is_reviewer(): - return base_queryset \ - .prefetch_related('feedback_lines') \ - .prefetch_related('feedback_lines__of_tutor') \ - .all() - - user_groups = self.request.user.exercise_groups.all() - if self.request.user.is_tutor() and config.EXERCISE_MODE: - return base_queryset.filter( - of_submission__student__user__exercise_groups__in=user_groups - ) - - return base_queryset.filter( - of_submission__assignments__owner=self.request.user - ) - - def create(self, request, *args, **kwargs): - if request.user.is_tutor() and not config.EXERCISE_MODE: - return Response(status=status.HTTP_401_UNAUTHORIZED) - - serializer = self.get_serializer(data=request.data) - serializer.is_valid(raise_exception=True) - self.perform_create(serializer) - - # update MetaSubmission information - meta = serializer.validated_data.get('of_submission').meta - meta.feedback_authors.add(self.request.user) - return Response(serializer.data, - status=status.HTTP_201_CREATED) - - def partial_update(self, request, **kwargs): - feedback = self.get_object() - serializer = self.get_serializer(feedback, data=request.data, - partial=True) - serializer.is_valid(raise_exception=True) - - assignment = get_implicit_assignment_for_user(feedback.of_submission, self.request.user) - - if self._tutor_attempts_to_change_final_feedback_of_reviewer(serializer): # noqa - raise PermissionDenied( - detail="Changing feedback set to final by a reviewer is not allowed.") - - if tutor_attempts_to_patch_first_feedback_final(serializer, self.request.user, assignment): - raise PermissionDenied( - detail='Cannot set the first feedback final.') - serializer.save() - return Response(serializer.data) - - -class FeedbackCommentApiView( - mixins.DestroyModelMixin, - viewsets.GenericViewSet): - """ Gets a list of an individual exam by Id if provided """ - permission_classes = (permissions.IsTutorOrReviewer,) - serializer_class = serializers.FeedbackCommentSerializer - - def get_queryset(self): - base_queryset = models.FeedbackComment.objects.all() - - user = self.request.user - if user.role == models.UserAccount.REVIEWER: - return base_queryset - return base_queryset.filter(of_tutor=user) - - def destroy(self, request, *args, **kwargs): - with Lock(): - instance = self.get_object() - if instance.of_feedback.feedback_lines.count() == 1 and \ - not instance.of_feedback.is_full_score(): - raise PermissionDenied(detail="Last comment can not be deleted for submissions " - "with non full score") - - self.perform_destroy(instance) - return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/grady/core/views/group.py b/grady/core/views/group.py deleted file mode 100644 index e083f26d..00000000 --- a/grady/core/views/group.py +++ /dev/null @@ -1,14 +0,0 @@ -import logging - -from rest_framework import mixins, viewsets - -from core import models, permissions, serializers - -log = logging.getLogger(__name__) - - -class GroupApiViewSet(viewsets.GenericViewSet, - mixins.ListModelMixin): - permission_classes = (permissions.IsTutorOrReviewer, ) - queryset = models.Group.objects.all() - serializer_class = serializers.GroupSerializer diff --git a/grady/core/views/importer.py b/grady/core/views/importer.py deleted file mode 100644 index ee5c1975..00000000 --- a/grady/core/views/importer.py +++ /dev/null @@ -1,25 +0,0 @@ -from rest_framework import status -from rest_framework.response import Response -from rest_framework.views import APIView -from rest_framework.exceptions import ValidationError -from core.permissions import IsReviewer -from util.importer import parse_and_import_hektor_json - - -class ImportApiViewSet(APIView): - permission_classes = (IsReviewer, ) - - def post(self, request): - exam_data = request.data - - if not exam_data: - return Response({"Error": "You need to submit the exam data to be imported"}, - status.HTTP_400_BAD_REQUEST) - - try: - parse_and_import_hektor_json(exam_data) - except ValidationError as err: - return Response({"ValidationError": err.detail}, - status.HTTP_409_CONFLICT) - - return Response({}, status.HTTP_201_CREATED) diff --git a/grady/core/views/label.py b/grady/core/views/label.py deleted file mode 100644 index 152b1cc7..00000000 --- a/grady/core/views/label.py +++ /dev/null @@ -1,56 +0,0 @@ -import logging - -from django.db.models import Case, When, IntegerField, Sum, Q - -from rest_framework import mixins, viewsets -from rest_framework.permissions import IsAuthenticated -from rest_framework.response import Response - -from core import models, permissions, serializers -from core.models import SubmissionType, FeedbackLabel - -log = logging.getLogger(__name__) - - -class LabelApiViewSet(viewsets.GenericViewSet, - mixins.CreateModelMixin, - mixins.UpdateModelMixin, - mixins.ListModelMixin): - permission_classes = (permissions.IsTutorOrReviewer, ) - queryset = models.FeedbackLabel.objects.all() - serializer_class = serializers.LabelSerializer - - def get_permissions(self): - if self.action == 'list': - return [IsAuthenticated(), ] - else: - return super().get_permissions() - - -class LabelStatistics(viewsets.ViewSet): - - permission_classes = (permissions.IsTutorOrReviewer, ) - - def list(self, *args, **kwargs): - # TODO This is horribly ugly and should be killed with fire - # however, i'm unsure whether there is a better way to retrieve the - # information that hits the database less often - labels = FeedbackLabel.objects.all() - - counts = list(SubmissionType.objects.annotate( - **{str(label.pk): Sum( - Case( - # if the feedback has a label or there is a visible comment with that - # label add 1 to the count - When( - Q(submissions__feedback__labels=label) | - Q(submissions__feedback__feedback_lines__labels=label) & - Q(submissions__feedback__feedback_lines__visible_to_student=True), - then=1), - output_field=IntegerField(), - default=0 - ) - ) for label in labels} - ).values('pk', *[str(label.pk) for label in labels])) - - return Response(list(counts)) diff --git a/grady/core/views/util.py b/grady/core/views/util.py deleted file mode 100644 index ecb48353..00000000 --- a/grady/core/views/util.py +++ /dev/null @@ -1,41 +0,0 @@ -import constance -from rest_framework.exceptions import PermissionDenied - -from core import models - -config = constance.config - - -class NoAssignmentForTutor(Exception): - pass - - -def tutor_attempts_to_patch_first_feedback_final(feedback_serializer, - user, - assignment=None): - # override assignment logic in exercise mode - if user.role == models.UserAccount.REVIEWER \ - or user.role == models.UserAccount.TUTOR and config.EXERCISE_MODE: - return False - if user.role == models.UserAccount.TUTOR and assignment is None: - raise NoAssignmentForTutor() - is_final_set = feedback_serializer.validated_data.get('is_final', False) - in_creation = assignment.stage == models.TutorSubmissionAssignment.FEEDBACK_CREATION # noqa - single_correction = config.SINGLE_CORRECTION - return is_final_set and in_creation and not single_correction - - -def get_implicit_assignment_for_user(submission, user): - """ Check for tutor if it exists. Not relevant for reviewer """ - try: - return models.TutorSubmissionAssignment.objects.get( - owner=user, - submission=submission - ) - except models.TutorSubmissionAssignment.DoesNotExist: - if user.role == models.UserAccount.REVIEWER \ - or (user.role == models.UserAccount.TUTOR and config.EXERCISE_MODE): - return None - - raise PermissionDenied( - detail='This user has no permission to create this feedback') diff --git a/grady/deploy.sh b/grady/deploy.sh deleted file mode 100755 index c4043783..00000000 --- a/grady/deploy.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -sleep 5 -python manage.py migrate --noinput -if [ "$?" -ne "0" ]; then - exit 1 -fi -gunicorn \ - --bind 0.0.0.0:8000 \ - --workers=5 \ - --timeout=120 \ - --worker-class=sync \ - --log-level debug \ - grady.wsgi:application diff --git a/grady/docker-compose.yml b/grady/docker-compose.yml deleted file mode 100644 index 563b5f04..00000000 --- a/grady/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: '3' - -services: - - postgres: - image: postgres:13 - restart: always - networks: - - default - ports: - - 6543:5432 - - grady: - build: . - command: > - sh -c "sleep 2 && - ./manage.py migrate --noinput && - ./deploy.sh" - depends_on: - - postgres - restart: always - networks: - - default - expose: - - "8000" - ports: - - "8000:8000" diff --git a/grady/docs/Database Design/Entity Relation Model.erdplus b/grady/docs/Database Design/Entity Relation Model.erdplus deleted file mode 100644 index eee0a47b..00000000 --- a/grady/docs/Database Design/Entity Relation Model.erdplus +++ /dev/null @@ -1 +0,0 @@ -{"version":2,"www":"erdplus.com","shapes":[{"type":"Entity","details":{"name":"Student","type":"regular","x":634,"y":250,"id":1}},{"type":"Attribute","details":{"name":"Matrikel #","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":525,"y":177,"id":2}},{"type":"Attribute","details":{"name":"Anonymous Key","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":635,"y":178,"id":4}},{"type":"Attribute","details":{"name":"One Time Passwords","isDerived":false,"isMultivalued":true,"isOptional":false,"isComposite":false,"isUnique":false,"x":748,"y":182,"id":6}},{"type":"Entity","details":{"name":"Aufgaben Typ","type":"regular","x":278,"y":480,"id":8}},{"type":"Attribute","details":{"name":"ID","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":137,"y":550,"id":9}},{"type":"Attribute","details":{"name":"Korrekturvorgabe","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":136,"y":493,"id":11}},{"type":"Attribute","details":{"name":"Name","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":136,"y":433,"id":13}},{"type":"Attribute","details":{"name":"Musterlösung","isDerived":false,"isMultivalued":false,"isOptional":true,"isComposite":false,"isUnique":false,"x":137,"y":371,"id":24}},{"type":"Entity","details":{"name":"Aufgabe","type":"weak","x":634,"y":478,"id":26}},{"type":"Attribute","details":{"name":"Anonymous Key","isDerived":true,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":741,"y":368,"id":27}},{"type":"Attribute","details":{"name":"Vorkorrektur","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":808,"y":416,"id":31}},{"type":"Relationship","details":{"name":"hat Typ","isIdentifying":false,"x":449,"y":480,"slots":[{"slotIndex":0,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":26},{"slotIndex":1,"minimum":"1","maximum":"1","participation":"unspecified","cardinality":"unspecified","role":"","entityId":8}],"id":35}},{"type":"Relationship","details":{"name":"Abgabe","isIdentifying":true,"x":635,"y":360,"slots":[{"slotIndex":0,"minimum":"1","maximum":"1","participation":"unspecified","cardinality":"unspecified","role":"","entityId":1},{"slotIndex":1,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":26}],"id":40}},{"type":"Entity","details":{"name":"Feedback","type":"weak","x":634,"y":761,"id":43}},{"type":"Attribute","details":{"name":"Punkte","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":500,"y":720,"id":44}},{"type":"Attribute","details":{"name":"Text","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":501,"y":779,"id":46}},{"type":"Relationship","details":{"name":"bewertet","isIdentifying":true,"x":634,"y":632,"slots":[{"slotIndex":0,"minimum":"1","maximum":"1","participation":"unspecified","cardinality":"unspecified","role":"","entityId":26},{"slotIndex":1,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":43}],"id":48}},{"type":"Entity","details":{"name":"Tutor","type":"regular","x":1063,"y":585,"id":51}},{"type":"Attribute","details":{"name":"Name","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1173,"y":530,"id":52}},{"type":"Attribute","details":{"name":"Benutzername","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":1177,"y":588,"id":54}},{"type":"Attribute","details":{"name":"Passwort","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1182,"y":647,"id":56}},{"type":"Relationship","details":{"name":"erstellt","isIdentifying":false,"x":892,"y":704,"slots":[{"slotIndex":0,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":43},{"slotIndex":1,"minimum":"1","maximum":"1","participation":"unspecified","cardinality":"unspecified","role":"","entityId":51}],"id":58}},{"type":"Relationship","details":{"name":"korrigiert","isIdentifying":false,"x":884,"y":474,"slots":[{"slotIndex":0,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":26},{"slotIndex":1,"minimum":"0","maximum":"m","participation":"unspecified","cardinality":"unspecified","role":"","entityId":51}],"id":62}},{"type":"Entity","details":{"name":"Dozent","type":"regular","x":1064,"y":862,"id":69}},{"type":"Attribute","details":{"name":"Name","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1174,"y":806,"id":70}},{"type":"Attribute","details":{"name":"Benutzername","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":1172,"y":860,"id":72}},{"type":"Attribute","details":{"name":"Password","isDerived":false,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":false,"x":1172,"y":916,"id":74}},{"type":"Relationship","details":{"name":"überprüft","isIdentifying":false,"x":890,"y":862,"slots":[{"slotIndex":0,"minimum":"0","maximum":"n","participation":"unspecified","cardinality":"unspecified","role":"","entityId":43},{"slotIndex":1,"minimum":"0","maximum":"m","participation":"unspecified","cardinality":"unspecified","role":"","entityId":69}],"id":78}},{"type":"Attribute","details":{"name":"Anonymus Key","isDerived":true,"isMultivalued":false,"isOptional":false,"isComposite":false,"isUnique":true,"x":504,"y":838,"id":82}}],"connectors":[{"type":"Connector","details":{"id":3},"source":2,"destination":1},{"type":"Connector","details":{"id":5},"source":4,"destination":1},{"type":"Connector","details":{"id":7},"source":6,"destination":1},{"type":"Connector","details":{"id":10},"source":9,"destination":8},{"type":"Connector","details":{"id":12},"source":11,"destination":8},{"type":"Connector","details":{"id":14},"source":13,"destination":8},{"type":"Connector","details":{"id":25},"source":24,"destination":8},{"type":"Connector","details":{"id":28},"source":27,"destination":26},{"type":"Connector","details":{"id":32},"source":31,"destination":26},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":38},"source":26,"destination":35},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":39},"source":8,"destination":35},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":41},"source":1,"destination":40},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":42},"source":26,"destination":40},{"type":"Connector","details":{"id":45},"source":44,"destination":43},{"type":"Connector","details":{"id":47},"source":46,"destination":43},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":49},"source":26,"destination":48},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":50},"source":43,"destination":48},{"type":"Connector","details":{"id":53},"source":52,"destination":51},{"type":"Connector","details":{"id":55},"source":54,"destination":51},{"type":"Connector","details":{"id":57},"source":56,"destination":51},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":60},"source":43,"destination":58},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":61},"source":51,"destination":58},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":64},"source":26,"destination":62},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":66},"source":51,"destination":62},{"type":"Connector","details":{"id":71},"source":70,"destination":69},{"type":"Connector","details":{"id":73},"source":72,"destination":69},{"type":"Connector","details":{"id":75},"source":74,"destination":69},{"type":"RelationshipConnector","details":{"slotIndex":0,"id":79},"source":43,"destination":78},{"type":"RelationshipConnector","details":{"slotIndex":1,"id":80},"source":69,"destination":78},{"type":"Connector","details":{"id":83},"source":82,"destination":43}],"width":2000,"height":1000} \ No newline at end of file diff --git a/grady/docs/Database Design/Relational Schema.erdplus b/grady/docs/Database Design/Relational Schema.erdplus deleted file mode 100644 index 7e4cb625..00000000 --- a/grady/docs/Database Design/Relational Schema.erdplus +++ /dev/null @@ -1 +0,0 @@ -{"version":2,"www":"erdplus.com","shapes":[{"type":"Table","details":{"name":"Students","x":268,"y":346,"sort":"manual","attributes":[{"names":["Name"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["One Time Password"],"order":3,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":3},{"names":["Matrikelnummer"],"order":0,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":4}],"uniqueGroups":[],"id":1}},{"type":"Table","details":{"name":"Aufgabentyp","x":268,"y":420,"sort":"automatic","attributes":[{"names":["Musterlösung"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["Name"],"order":2,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":2},{"names":["Korrekturvorgabe"],"order":3,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":3},{"names":["ID"],"order":4,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":4}],"uniqueGroups":[],"id":2}},{"type":"Table","details":{"name":"Aufgaben","x":484,"y":316,"sort":"manual","attributes":[{"names":["Vorkorrektur"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["Matrikelnummer"],"order":2,"pkMember":false,"optional":false,"soloUnique":false,"fk":true,"dataType":"int","dataTypeSize":null,"references":[{"tableId":1,"attributeId":4}],"id":2},{"names":["ID"],"order":0,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":3},{"names":["Aufgabentyp"],"order":4,"pkMember":false,"optional":false,"soloUnique":false,"fk":true,"dataType":"int","dataTypeSize":null,"references":[{"tableId":2,"attributeId":4}],"id":5}],"uniqueGroups":[],"id":8}},{"type":"Table","details":{"name":"Tutor","x":921,"y":267,"sort":"automatic","attributes":[{"names":["Name"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["Benutzername"],"order":2,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":2},{"names":["Passwort"],"order":3,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":3}],"uniqueGroups":[],"id":15}},{"type":"Table","details":{"name":"Feedback","x":697,"y":271,"sort":"manual","attributes":[{"names":["Punkte"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["Text"],"order":2,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":2},{"names":["Tutor"],"order":4,"pkMember":false,"optional":false,"soloUnique":false,"fk":true,"dataType":"int","dataTypeSize":null,"references":[{"tableId":15,"attributeId":2}],"id":3},{"names":["Zugehörige Aufgabe"],"order":3,"pkMember":false,"optional":false,"soloUnique":false,"fk":true,"dataType":"int","dataTypeSize":null,"references":[{"tableId":8,"attributeId":3}],"id":4},{"names":["Reviewer"],"order":5,"pkMember":false,"optional":false,"soloUnique":false,"fk":true,"dataType":"int","dataTypeSize":null,"references":[{"tableId":20,"attributeId":2}],"id":5},{"names":["ID"],"order":0,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":6}],"uniqueGroups":[],"id":16}},{"type":"Table","details":{"name":"Dozent","x":921,"y":346,"sort":"automatic","attributes":[{"names":["Name"],"order":1,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":1},{"names":["Benutzername"],"order":2,"pkMember":true,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":2},{"names":["Passwort"],"order":3,"pkMember":false,"optional":false,"soloUnique":false,"fk":false,"dataType":"int","dataTypeSize":null,"id":3}],"uniqueGroups":[],"id":20}}],"connectors":[{"type":"TableConnector","details":{"fkAttributeId":2,"id":11},"source":1,"destination":8},{"type":"TableConnector","details":{"fkAttributeId":3,"id":17},"source":15,"destination":16},{"type":"TableConnector","details":{"fkAttributeId":4,"id":18},"source":8,"destination":16},{"type":"TableConnector","details":{"fkAttributeId":5,"id":19},"source":2,"destination":8},{"type":"TableConnector","details":{"fkAttributeId":5,"id":21},"source":20,"destination":16}],"width":2000,"height":1000} \ No newline at end of file diff --git a/grady/docs/Database Design/er-model.graphml b/grady/docs/Database Design/er-model.graphml deleted file mode 100644 index 53572fb5..00000000 --- a/grady/docs/Database Design/er-model.graphml +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> - <!--Created by yEd 3.16.2.1--> - <key attr.name="Description" attr.type="string" for="graph" id="d0"/> - <key for="port" id="d1" yfiles.type="portgraphics"/> - <key for="port" id="d2" yfiles.type="portgeometry"/> - <key for="port" id="d3" yfiles.type="portuserdata"/> - <key attr.name="url" attr.type="string" for="node" id="d4"/> - <key attr.name="description" attr.type="string" for="node" id="d5"/> - <key for="node" id="d6" yfiles.type="nodegraphics"/> - <key for="graphml" id="d7" yfiles.type="resources"/> - <key attr.name="url" attr.type="string" for="edge" id="d8"/> - <key attr.name="description" attr.type="string" for="edge" id="d9"/> - <key for="edge" id="d10" yfiles.type="edgegraphics"/> - <graph edgedefault="directed" id="G"> - <data key="d0"/> - <node id="n0"> - <data key="d5"/> - <data key="d6"> - <y:GenericNode configuration="com.yworks.entityRelationship.small_entity"> - <y:Geometry height="40.0" width="80.0" x="456.0" y="158.0"/> - <y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/> - <y:BorderStyle color="#000000" type="line" width="1.0"/> - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.572265625" x="15.7138671875" y="10.93359375">Student<y:LabelModel> - <y:SmartNodeLabelModel distance="4.0"/> - </y:LabelModel> - <y:ModelParameter> - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> - </y:ModelParameter> - </y:NodeLabel> - <y:StyleProperties> - <y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/> - </y:StyleProperties> - </y:GenericNode> - </data> - </node> - <node id="n1"> - <data key="d5"/> - <data key="d6"> - <y:GenericNode configuration="com.yworks.entityRelationship.small_entity"> - <y:Geometry height="40.0" width="80.0" x="456.0" y="428.0"/> - <y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/> - <y:BorderStyle color="#000000" type="line" width="1.0"/> - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="52.486328125" x="13.7568359375" y="10.93359375">Aufgabe<y:LabelModel> - <y:SmartNodeLabelModel distance="4.0"/> - </y:LabelModel> - <y:ModelParameter> - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> - </y:ModelParameter> - </y:NodeLabel> - <y:StyleProperties> - <y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/> - <y:Property class="java.lang.Boolean" name="doubleBorder" value="true"/> - </y:StyleProperties> - </y:GenericNode> - </data> - </node> - <node id="n2"> - <data key="d5"/> - <data key="d6"> - <y:GenericNode configuration="com.yworks.entityRelationship.relationship"> - <y:Geometry height="56.0" width="90.0" x="451.0" y="285.0"/> - <y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/> - <y:BorderStyle color="#000000" type="line" width="1.0"/> - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="11" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="16.955078125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="41.5546875" x="24.22265625" y="19.5224609375">gibt ab<y:LabelModel> - <y:SmartNodeLabelModel distance="4.0"/> - </y:LabelModel> - <y:ModelParameter> - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> - </y:ModelParameter> - </y:NodeLabel> - <y:StyleProperties> - <y:Property class="java.lang.Boolean" name="y.view.ShadowNodePainter.SHADOW_PAINTING" value="true"/> - <y:Property class="java.lang.Boolean" name="doubleBorder" value="true"/> - </y:StyleProperties> - </y:GenericNode> - </data> - </node> - <edge id="e0" source="n0" target="n2"> - <data key="d9"/> - <data key="d10"> - <y:PolyLineEdge> - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> - <y:LineStyle color="#000000" type="line" width="1.0"/> - <y:Arrows source="none" target="none"/> - <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="44.04296875" x="-52.021484375" y="34.427490234375"><1, *><y:LabelModel> - <y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/> - </y:LabelModel> - <y:ModelParameter> - <y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/> - </y:ModelParameter> - <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/> - </y:EdgeLabel> - <y:BendStyle smoothed="false"/> - </y:PolyLineEdge> - </data> - </edge> - <edge id="e1" source="n2" target="n1"> - <data key="d9"/> - <data key="d10"> - <y:PolyLineEdge> - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> - <y:LineStyle color="#000000" type="line" width="1.0"/> - <y:Arrows source="none" target="none"/> - <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.05078125" x="-51.025390625" y="34.451416015625"><1,1><y:LabelModel> - <y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/> - </y:LabelModel> - <y:ModelParameter> - <y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/> - </y:ModelParameter> - <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/> - </y:EdgeLabel> - <y:BendStyle smoothed="false"/> - </y:PolyLineEdge> - </data> - </edge> - </graph> - <data key="d7"> - <y:Resources/> - </data> -</graphml> diff --git a/grady/docs/Database Design/erdplus-diagram-pdf-export.pdf b/grady/docs/Database Design/erdplus-diagram-pdf-export.pdf deleted file mode 100644 index 9d6e366c36954502beee2944cc3dc2a82abba52f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193138 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
S+G2GxUQjUnO~KXg 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 diff --git a/grady/docs/Database Design/erdplus-er-model-export.pdf b/grady/docs/Database Design/erdplus-er-model-export.pdf deleted file mode 100644 index 3e2148b22b9eff7cae06b7837eb3e5b067c6373e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608737 zcmY!laB<T$)HCK%J@WL^)7Q&CFSu~z7?+8HfkJ*#7MG2Ug1%2`UV2G}f~kUmLXd*K zTV_s4YLSAzTTWt0s!M8eeoCr>ogG(kNl|KIE>{Jkb_hp^Mu-7}Q?Pe1E4Q$6>!Og> zf>s;WzYSLwJ-N~}>CzFI)<r%Wq$aFcx3YEOyw;gJ1wGnZTjwp^xKVP#%sHo*zMq-B z;=v?-6MX@OenXM9T&Z~}P{UL6Qb2A3IRr#o7=h$KEF&b>hEx`$D(D9!ri00%)VvY} zV~ERxQj7CTi;`1|70e(4&iQ#Isd**E3LxJGDd_vArer2M<yR;~8z>kkm|B`DSeO{a za@pCz>;dTm*#`=hfTH~5;M5X@Xa)TM7dHic&)mfHR3|9y45d94Vioiw{FAa$lS>pp zx;%3Y70ki5+u4DF4eBM35X@j`a9e;?=|j8&GeSSOG^qsaL9lfS`r(-=B^e4PW+ny- z`W~s7=@}&o#zuxl3i_UTC8<RP`JhPRDk&;WRnT|N&&e+eE=WvHRj`DZ4N{X=qM#p; zT9lkxP*R$hqo5z`n^>H!U<e9;AO(G=%#z}O)FS8n+=BeP)VvZd3&IKD&E5OwQ$y#f z|NF^q6&hab8gztPZ_ffPH5HYXkW?Y(o|z(?6DORTv0SO}k;Jh@yPI!JzL>;fq7{*v zz54DU5qs&SjZ9D4O}rMGas5~<Ffq*W)#|1WC03;ljn9Ag9hbdU{`J=LH^uYrKesvm zdgp=CZ;{o1E8cFsc2n(j@N4@&?DZ@h0tyZd42(>pjL|?CO$np9U^Ewu=7OP+3w*?G z{QPzQ(4j;7UgiJ)_qUz>f1jM~um61iR1YUGwg<b0KHO*W;On+GbME9>l3&LqOgS)3 zH+omZTC1!zF4ev~ywW|=(U<jKD{K|&2~)aw>1^QM@?NsDjC6d$?QOZ8%CDPF@X6WC z;Mk<>-nS-`;Ra90G`;1IU)C{Q*mYs^hMYg?>)XkVk{rIqcLtmGR)1G(d39l-Gv{)v zvNtz)TFTCr2s??aC}7nsnfvgWgnpGLnQedrd$@A$@2ma(?rvw7SH+c!i`~<$I<ons z#V;LbGe5C#-u1vmcUd^rOmz^S8^zas=GDc&Z}0E7?>>3p{t?za(S2-Q9-`~7f2;q$ z-Fi{rmN!whm0wA3k2G!-(72dlnfdy}MCD?M4W{3H`Krs$L@J%zmV0}fn18G+3&)!6 z;COUc%aS`)Vx7<{Q$v%SGO>MD9&1aMxGY*a`?c=cIx?C-5B`gL{0LH#5@IU&@Zcbe z(HXy%rfFB0DorXKDt#&=l+OM8|4`dCfsb`p=yq<U*JAg4B~H%Po1VIs+jjG&vkxP# zrI2jtjPS-I8gK9JHdjxPwJux3mo#afc%#h@n|(G%Y))0mw%+nhSj?SL^-TY>$;5>- zH*hZB^u#YF*%=hqYoi|}?YQXP^-qxGBCau1{Klr#)9>!?{{H^{{Mz5b+rOVSC}*l% zQ@Nw^Nacmqb~8d88V+bQzP-IYoli|m>+{DK7Z(?A?>SS^>@0QT1DoZQ#q%1n$w<Tp z_6wij`y=zO=)(iYiG0R#<{LMiJ^lEc^ZCW%O&{MsYvyMO3sLyIx?AnEXS92tOyteT zHCr-S4&9S2p2og0_x3i?+C5y#q&IMjH79IdUH0zI&AIc6-`v=k`R)1X%^O*bcy<Zb z8yU#tnoZvvwK&~b;i324SF;|RJ+rcRZ{C^w_n$I8HGEQ@(XRR^$81?&7|AL5KorLl ziMfA&f46o>uS-_Cw&tm%O6Q(}bvL7Yyi3pQcSxF2#FyZALTKIYwCpRV!ltlKKR&&E zhP&ne$ASE$mvNw=jSS)D=C)kn`rz=XW6C*`E*a$*RT#C%WPN-8Y%2fkXobs(-{0Nk zyk6>bvn_`6bHwL@&mC*4XIC$JZA)s8;aRkTy8lxRv5oxFM&A<mT1|a8#qnvt=AUs= zTk2La-CZ=R;Phhm{&m-7Lf+rvep2{+Vf3$QR{3|_NiLVNbtildYq4Kb%Wx=dwIQSU z-G_GBw)?KSC-AZsm0dkI*ZTY0+tW{YJ-5%>7Mhn*Z_HyPVWa|z)NO6WfuSTPQ3FR% z8EzT%^uj`C<?n}gdnAOi8htSOW5l7(6C5u*L%4BH@U#ynK_&aEBY{8I1WqV;u9>MU z`#dErTaDB}G+W>x9;U{T#LS|Z)1#N7!DVv0f&1*U7eVJ1MMXrMc-VhV^R~q4i&Ec} z4y!e*JD*sXHaq#?1#eOdnKhdo#Mujfe0XSj&wjlXQ!rObLD%Mp=c!I#FLOS5vXaF$ z%5V9cTbq29CqN?c<+24aBnR9Ei^jXV%b&MQ$^5qcv~z+Oi&2bmhPe5ur)nF1G2M-- z`tssp<P5c28v<F44t#rmKc6?|FXvh|QoWK>(<swC$@Z0#qFENtp|<zo;wcYJ=J)Oo zIa|iRJ@@vs;H7-BR$CsX&*3|_z=18UEuQUR&UvA=Bo`TtH-%m-QtXqlG-{51YT9`~ zh{b4zYs8srTAMkek`-eQg_NFt#Tmh7esI;|Zt38J=dbIzxw(I@+W$vbpq>4{+COH& zlLiq79)<*l?$GD0*sE)8zHDn8N#*pPNCjzk*-e|PZvURT=N*&eJ;^7_tQ)Ti-`JGu zeJrBv&HCRN*BO|US&b}=U5o?5^Tjk~GBkEF&1{Zc6ZR~*^P$$oIAQ0*Zs*>W?u=kx zIkj&|aO`^>Q(^Ze9ulIq@uuJjOKZ!84{mHse!a;sbScZV2nA<bX1l|6WzQB&%V7Y; zxx7t9K`;B}R~$N#3WrUb%b0y^V-*ZeGgaR7SQ0AkGR<>3$0pwjhk{*m`j-FZba?G_ zeoyn+PYbS^5g+*p!dxk*v&*XWD$93CbDr7iz*fKPfZCiNyY@6O-QJ$>zvGe2TvOxg z#bJ-bV-%dtnJo@iu&TE%;>dAo+~fBo|NXtaoC{ASuH;<)>Ajgx%zAiJNlnIPmk$X= zQiOZsoTy2<bA`+6PB|nT=1x(vIFc@VeUar_tMv6L#(&go+R_f|bIjh>EO|!q5})X- z%c7o}uSX~-&a5o<2nmT(JR-jS$0kW|V`@?S^@^O;eZ;pmZ`d$#b8~MywC+b(1naro z4r;E;jy;QH|59?2NmAW1C-olto^Qeu>JuL38peG3_23w<X27D8M%FE&{n1uoU#o63 z-*=tE*?f1xW}oH6*Dj5w;1stlRnEFBC-i&0)|>+|+$l{dvr;y#xp^ey;vS9^=imSS z{?=VsY<tkOuBwseD^EqC%;!xGna{bnQf|Dzv(s3gnVnzmjAqp3^HP@AgB1GJ_%-@9 z`A>UoZF(FZNPKEMz$SKL-RU<6M8q~u+Z}h+^g7c_otZ}4wDTW?76!(izW24KeW%<d zDgT6%Op<?QGIh@~G7_F)-N^H4Z}s<QEjsz9z2mg6eLn_nT)DiydgrViuNv`9iE9oD z)jFGR7S)>9teSh^4_C^s8!Ps(X<t1Pwz2wqUi<Yk@Bdu=Br0;k<wVJhn=4l(vWRI< zX!bH*QtUC`wT@N1>!zkwzbU_Y|BcQq-E*Zr2@~IDllD<?G%P!F?wnb;?#%2)AJxD# z>73R%H|Dmswk~$>KlgRV)e0tUy$PNZR~i=nI^mFD#=0&4{=Cm?i&W-6tvxE<9;s*0 zZ_RJpZ^xWq=DsY9lwv5%8B`rAoldKqy?Wc(l@8~OPCtq2wOoDXrr-%j_21v#T9>`K zF{dx+tl9=PrkM&e)%;jz&29DeKE|0cMa{<Mu&Mqrv2UgkGHLs}c$#_IcshA_x^L|0 zd~8L0RcY{^iL>tH{`2;~tF5<A0EK*4r_t>1ON&x|@BSLhaOlrDU)}iRMjx@)4^JFD za<o+Zgkk9K@9*u4o}7^K?<!sM?w)78`Td&Dto8rAlY;J5U*D*l9aGBYnRIqe_O^G$ zVaz0ChN(g)_8-vSl+(L?$*MeK?v!1Y-;$P2TVJZL-ag|=!LGA5^S;hKP{d+XYt(tI zRw?^{n)r$SPlpaU)y;iw<zw;CPxZ&^1C7kFE)oBBzy7)()Zo9~?00qj_N4I42&qUZ zo9m3Vu?KS6CT!pRRVv|?D)Fgvn*N0Piu!ftm-W)4cUN<+neLz#yX@Yl=j(;81u8fi zw)4x!tyf$U$0Y5k5bQbSrq#N%+1p;tvDsSw{$6F|$<NO&xF(l=j9fmyu1aZJpZ&id zNA32>?3nq|?47<srG4a;_&mw*sCD`eZ(J+UiuGpSJ+Ex<yy^e9PkJaK&^}AIEaH?u z@rCG`#SY(U<ZP=-lyd{Fi!*&zoxnLGb4Ooy!>Z|O6YhTcEYxohZ|sz9zSH5HQM8lB zsY_`acbjcK@b2#J;*gs;`<R!9axUNX^Vw{1QI~1uou9&;4u5-pfByVc@ABQOW~c4B zx9D(YTxM2gjnHA`;y$PImu`MBY|h=`zK?{^<XE$~;X#M*zV`U<>0S!eYg<FsJg(ZY zV%6s*LQ@TbAG;@W<QO#i7<xZibWL^Ua={Y|POS{;Oq?_K=cT#sWk*HBRi@-T@=S@| zmh-Y{!>$=?N>udujfG6NNiB(0iQ0AZ>-N{x0&Me2#jC{5Oi**nUv|#g+ui8TnjGf- z^Wh{Ehf>@r>1qFT|6aYpvC4;uWt#E?*(-;omtU_~8xX5JVY%|A982Xpds)O(C%jDa z%n4JJpRRDBb*ijoQA*(9d{ZO!1T9DZ&N{2_cZ!95x0SxWR#$HH%sf=!=A}8y`E9w2 zRxrzbdvM;#BCc(b!{&b{%3F!AsUnga-$c%BT|3qLw(l!FCh0hZ%f^#SdZ)8q^;Mqm zV*gAl&eX%_S!GoO8hv*8?9EJDVZ$QT$daY2qw}O?{nuGuKOOh~d^TJ7TFI}M%hivp z%#8bPxH13d#q$d1_y3u&?AO%DXNS2GB$_2J9q6;x(dk#_SM68h&yf9}A2@54qE=Vg zlPd)iNpP)gV@`a@r*lTz*Y28o;1-9)*7UDohg7G`v3>P=$N!q#wmDH8XEr&gB`kX= zq_#fVY&j?`UVqwa&b*adL%Q7T=C`-EFK=tHleH?zkY&D~R=H`t+ifS=4;$F+`xn@2 z?lL}i&G3%SVbk2#=4V8SZ}T)9=;BVfzQ|ZGEcyH@BhEFG9MsmFJ*K@+NN?K#nOY^5 zgsE;jk~nq36ebtm$#m(Sd+SraM`H`$(+8`z^01%N|GM}4z1wpG%Km&jZoW!#-A`Hn zh~Tz&QQNXM8fObXJOB8E^Gl_3zgBz6rIzoClzSKTZ~yWwTFezGEHTDgYE+0Xc{p?& z6^>7PD*yI=OSOCH%mZu!C!U-Yi92+p{In74p?SIYq!Tz^GBxt5O_(6C`jOG~?Yw2x zkD9-|yIcL_#Kf(VuR1NQ3LYGoXIowN=Eg;jw3KHH_VQdjqPI3R=F+W_8s_Vh+OM|G ze){q2^yxM)Y~I;?vH7*t@kGM83GdkVnLa-2PD*%wVY;cF+5Gy}8`e<n#!#UXBIjJ@ z)m=Niv!=1ZIy-IZvCT=GI`ImZFR$A1r!|jx%7zUaHn9C~ajI+0-}m!b@p;?r@&RIp zd5*G7St?m)I?aA-`jQr#Q#Kb|DtcqmjlliRYY+Y>E|rvgBAu}66%+AQ+=hKjeD`Ng ztX(zBG2tiE%yX}I&&!!~tGM9g!Dja9|MyIBXgH9?owDkiztk-i?W=0<)6SKi%72vQ z{{6{@RTB+UK`r1Xfo=C^&7HCBR<P&K!%USID(_UjsQhyFiuanEtl}{nZatrsx+496 z^|>_%zmt$PX1FOxE4;0ey{GdknyFZQf@f~|M-%P`lRm$>x3_vLv)Hq|E13q3kzyxW z&TfhQG^PCU9nL2<D_wrAxi{m?`!|iu?0)utzql>y*0iqq@!?hI+9#EQCk!Mcv!^9a zKDc?+|Nq*}^-m^doh|rEf}0dBaO&vja7>&r-FMY3&xAmxnYU&>xVB4F{Dh`QJD+US zmCX}oGBipGo_JC^;bzzRuFYWyOq}7GdtSe|xHvqf@aR0->TP*<qrO`)-u-#-?2Au9 zw#vq}*Je#@ocM5}<E112<m>-@l=PDfk&Ie>@tF@x;nuGqQ%Ptix^b;}wUKZ2M$e#` zEF3yv3YTl1d?_!?WU}OS`EekLec>OLG%tnV8yoGsqZ!iwuRHR7O~o8PwlinV@7KKB z`TX6Djf=%R79=T^e|vv_|0C0LS86WK5EVbsaB{=R2boE+#s`ef7~Kf_W2$VLmUU%u z_$=a!IfV<HDb9~4D!Yf(9A3i2DKNvaaZcRDH;LPX^n4Yh52b(jnI*)?<SlTbB<_~g zgLRT3C-U#?tNk5jrlr30X~@dU{`Pxc<~IokPv8DR)yHc47gnPQMst1%u9vKktkbqz z5<Fe}P@3Cs5270aW}6RudwW}U>xKIdUvf3_>P*m_-?@M0^}VUzY^xS=ntfooxb>{& z1kb&>x3{J0@#V$GH`*MOxx8~zqJ^cyDo$;055K;8tCANNPK9l;d_Fg>U*yDvQw*mK zRzKdqE${BG^z-w0PE6dc^EOHA)Rc{1*1kWqw2bJo!hoCU=8lZwH<!#(c6EdLJCD+T zoj;^yQl7gZ=iJv5*DIKqnZ%CmjGo}#T>K>XQ6Zb$yQKYIBK}F0LKlNqX(Xn0>w48O zofeFk?XdaEC42L=JawEzTkepM%>Cx}_I%6RvUj~34(#E6b9Z-n^7<m}d%I;m8@}g{ z{mm&LA$Gzf{^L^T#?|T*7R)%@&d+au`Q?7mFtfc==Va?_U~5d9>9y!gSpLQ!Bce;8 z8NQ5xLfLyXLrPiFf*n+jPVp}BTW4AH<V230%UUIegj80cl!==5Pai4VuHwwOy)AdC z(&?6|Yv1q$-CD)9rffmvsq;^w)>p2LBf+P-tSr;lzS`#BDm+7<Q87(;`u(@Jx69jB zmF$ySeN9MVgG{5(PoF=X-OW6&l_orxE?PPDY_Q$;JH^}c?nYHj+;OP2we`q#o%9bo zrXRS)(ZgeMdP3Yp^JzYYfoZ9!6G-S``5zFp$=>`hSeNCQ_kl!P=GC=HynV9PX7T(X z*_;9q`yABjmi<5Q=)vl(;wP%#bh%7>dSFxR?y{?I#lyD!(Olf}Rp<rN*;gOuJe=#e z@6WfCU6yAywvkY1NIN?e-2AjXQmgTRo2W(6lMdY@f0x$X-&ZUBwez(&BhzJ$H+Oe$ z-*2>IlO9v#gz1uRXBW@a+wq|3alie(E%xdrOK*r;zR#TXP=&wos_+Sea|!GCWlsm3 zZ-{@k=Hy$=Z9bBuq`rHgIJsBnrz(6yg30O3tkODHzmqp5lAZNAa?%=gSkFFs@K}ob z&7GaaGZhmomldC%XIr{CIL)v2)*0sL`{t`0rmf+5U$rIuLpqnv^8GU#d}o&ayhK8? zb`J-KUi7&>ukS)PY?z$RoLZ%~Bj+<uwXLc_phHJwr1W)*iHB!Q6BeJmc>1~>kGg&x z*tAFJxzDatx7EHf21WuA<&8X_T3cIxW!#drE=#e}d2X@U=h&~BEv9k2AtVex>jXO# z+}!p4!xaXmVikoWXJ%Qt9}W%XTr<;wN&A&YZ|c6;J8Ks?Z2A8F{{AP=XFr%V=jN8u z*VlqBetUacSbfKw2eVYokM*)#^HyNCJG_sN>+}+f?{|u)3n%T&zi-!_7#X2Lbhq<> z45vy|%HD4#tEMwFR*HB?9F@^6)V>{ZF!i%V($<*=ZgFtzkG=V|Y{8bf*5!JZ|5WW0 zcbC0g#eH7WZ|4rPW*1$Sv|xo`1>uGB#Am8`&l8_HZ|0KHOj4qxhx^I=HS^EL_C>ii z9MIuTc{$_b(OlD6>N|3#9bd9da0V-*V%qAB->#*m$;N%!o!ylB>cl3Ism;@5BFwmj z-KEo96fQ5ctj)0uOq;oCX6n~JBxDVc+od_uQ_L5q2`CtpGetV26{kio4dc|Cy<2hB zL6&Q-4jnhObPs8keSde?o16W#vtZ;ly~~bEKWi8moyy5nXIr+y=l0cT;VC4H^XbGV zBqk=xmD^+)Gcs*fo{*aIGy7u96onl*Wo~n)3CyTvR7}&}w;^57uH?l9A-US7q;GF- z2H%=oG$(Q!i`(`br^dP|k;^V!T6D&!()jBslPSa(MJ#FV3BSL+on0`0iJq{+hDS`1 zK56Nx(R-(<M5P>kDdN#^fKAK-)R<c9F?;P3P=r6cVKgySx}xsoty!FFLZ(EXI_YvR zCwuxoA!03UloY?QE%&z2wwLQ}+PR4eDj2vkMfz-7a^}aP?Ps3J+Ef(u&Ffeuq+p=T z6lpbW=Z_t>OuxUskAK4~8o4dP@Fyn^cS&H{*RCyFHlHz?``T#<C(#pSjbBAi%#=D@ z%~9*!z|i=T)$E(0Ey(lpocx$rIIb{7I$ZlcHGf_9`JXeoZLK$T>Ue(_7ZdxlnCt6| zDQX*18qcivSy2@l=`<x$?Q7fra?UKJOrk3vgUw9U-`~Z4TIXagq~MUS#6fJ@%-Ao} zE^m0VSng)LIH!Pu!BPj|zKwH4GlTC+Z$EmhHMZa&t7)K@hsBvG{hnq_EXzbP7M<Ca zcX!rG^QU`bxB299C-05$Bzj=4ajW<VPl4{cYj&@A+hioHu)&gb(}tWqmo+ve<egi- z@;VF0nl%n$legACo&8#hU(RO73ik=gCgpE#1n$~X{M>J1YB$rAnFo?sjgA^!JhkLB zOUxU_n=_w1EhD9@?`7?ivD|dyZZl{+GC`_QM?ZVdg0)$toYRGSt<M%uZwE~&NE<Pg zPYrvZ8@)~ERjTQ>=ku!bGJW#mb8>DSIj+vk$n==S=&sSrQ!HmvVy^5CcDnTHwzs7a z2?hQtE>Lsl&NGMWoB|3PY8rKnR`2RqoBFWZwk`Q*m6w7;0yB4tXXI(o9KYA69P_)a z%HLdA=p4O0Pj_x?L_|bL&S^He{9SGdXIYG18ht%wa%RezBXjnB^Qly~5wj&eG&Zm? z-P~#Z*U#P(<P4L>-i@9W@9*vPe!Xuuhk$~Cp91%3sXgz{=8JZB@p=24S{J+9E4}#9 zk_8V6na`IpWh;P&u_BhGEPMWC<09XdC{33p;@jpCg^jw=+hi<@Qh2|Kt!iRu^wpcN zH0@~k22(u)#Uj50H=i7i_|Cbe%|UFM)xV_P@NJUo^8(Y~#1$N5{kk!=dsn&XyfsFg z0xwuz73Uax8iy{QF4$=Oc=eWN#E$hII3{pofBpY2yMI4XacDSD#IotZnXjibrOGY+ z@9$;d;Ni$=;J9-&;vT=8jYUIP{Z!*gWp8c--r7+7{M^g)9;;4IRC7p}%3`EyY<ODb zY|Gq#IR|xEpSlqr_znq2SvMWepK2zcHI0FhNtyN4+N0Y0maWZdJa<s?r$elYL&8#) zSD$OcN=;`^KeU`*?{uWc(qPM(<-erEU)|JQJ4ZaO;^DsE?|xrdZufOv`QF!0Ci~Z2 zeqFzOZrQE+zw7^h-8}#A8}of1dE3+U&R&Z()}BzGr7(Gm&kbgFKA)Q*ifOFA#7Ebf z9S6Sr&-gP%`hSYDL&Jd$4%6m}#-F;j;K1A4+xfqr-p;}SYBElnWg2lIZGTtGe4om= zltb%5UExcM8P2&nT-(0y>)O`V)=O_59=Uz*+qT{B_x-*a9v}OUVfJ64y#0T_CHAV; z{BASf^YEy6yiLiAfSuoWJnpN0xAS>geDdOL29vkMy*6rHK4)8H`<mp-r<kV_ThcRv zM+s|drAx0bsuKjw(cRvb8-4E9)^Fea<X;+`esjyM;lLYil@(cUr|*bdUHD7YJjS~0 zjmBI5BiG*8KT@Apk#v1s?9#KB)&D)N|I`2dUiJGo<pnc!|2(h%_xz>rvNMvqTqa*t zEf1e|Gi1Ad@B+S#XI$nPEit*-GQ-#MQ!4SZu)$n1HWdXkZ!_KXYhY+p<w*HBvuNh5 zi8-Kp$I1Mz6GZUf%!y0$V`mxG7DU#0ZOglR%hag+?9uGE`~RHYuM_<BQMZ2G+pX89 z8LWHubea`c&dji<Wgk<Ge}6H~_1+M%toYoF*~?ZsojG-58u8(GTKvRM$IEZ-Pi|*m zWLm9g;O;)-?VX*)rYuuD8yFf3nIg-k{a<F@uj(ToQ}%A>^J#p~*i%nU?myPJ{_NM= zdArwc**V|h?Uu{;zVG|~_wD_EZ>{hDJU7|jZs+`kF_zEg6q^-v+}wISF1l)05a-9# zY~w@I!@Sk<|N6~XY3pn0bS5mTOao*wafR!dqniAebM&XQgIbLzgiQ2be|UJf{dr)- zY)*k0@r^pxpEo(JOR!$fqX(MA0hMQaJCB~8db9o-zs(1S%;LEg?{++Xx8rf2czn&q zmxs9Z_k8HhuSo{A_n%GrcYxjQ!jt<3^76G`F80^HNuDqB|9g4;_wxLT!_r)?LV;5A z|NgK0-2eYafBm1w^6Pg#n^kl@{?E~Po9}murP*@tSx?f8VZWNz<ZryPb;i_>I*vpS z98A-B@L^Ns{q~iAS<D(7YGaO03g3KnU*Yd>Z>1Ze#5n|JSU2vBPz*0)o%f7q)03OK zO0!p%-``hT{4r&I-LIE23qxnc3WdklemyezMBRsG`8^+d^L4gQInrx>&qBO5zSr&F z_y7OycRLI5+kUxVvQ=floBMJ9e?R1}|55+%{QsHH^eV6UC|urYbM0}zecde9#NxI` zVyeWKbQ@|I+o!L+8RiLUX!#}R^%-oA>Z`6<C#<kx6;ts>C%yl@Tc#MCO^TlVWW#3X zcD}W*lp|Ii5<XsXOfr4Syt2-g*|y(qBnO9myyUIF_v_mHx6?Od`aj5ebb8;{wfVl9 znzwtnQ-ad7rZ3!gBX!{&4dR29!$<kShfR|AqgGb3nDrm%k-w0<^^T2mpg-rC1qXW8 zPq@6N*l%X~tmG4~9&DPUV|n(boAD<f`I-+0k3HnguQ<H<yxr~<&-Q*grM-Mkkyr4! z<#u0Jx{7W}H0svBZP35z{zRX*J|B#(Eax;_&2Oh|?nQJXk&#K5_1pXV_wS#6?!^M? z_3pdZZvW@u(ua4d-|zi<>E6e_@;%>fWqWHE)V}}q_kDf+qfYf{a<OGMQ+=yJh3Tia zg~w&T-@gBE+sO@a^5^aU|GBim_`FT=(ZBO+KAjAz`&^U1^XartS9{Ix?TBOA9P_>> zpL1SX_-CEZS<;M5#kv9RAyeZg_fC(9h?wzXMpoC6c{0{zIgfOWCn>g1e|vND^17`0 zkK*+oj|ltgEUfgm|6Af`ySm$J&aKn>`}eF^R3viC_`J>J@aggYK1~PNzUW=9(ef1{ zlNJR%=+@tNqh|Li`Rl6tbe12r{dy%hw*LQ*<Mw<dA6muZG>j_i<xW`sxoXA5Z=SPt z|5=v!oQ}w86RWa3h;C$p#tzP0?Brj)w|1lE|GV$&%H<0<tIKyMxlj8x|NrOuf0yU~ zyK==^Tz<3tH&EvO_)>o6$MgUHoPT=zP5n8&JCZNM|0+D%|L9|C`JF=dmleXj5%25k zUMy@+V@X*yYvR)tFV03CdYEc#8e-CR;F-vc5AHKmyHXxao_qhnrjobM?f+MPeqHu* z>2$w0pLXz=x`w~GzVF*swa;I#$N#_BU-u<h{`U=6@z|34wcktctMTX>zTaK`K2K`0 z_%{EVN5cDm9MzxY#Ac^v@$Nt)bER!wSJma&_rA<LUy~N-%6rA=Pw3yescAK@qwh<d zyI=eJvHbrZyI!yJ-c$cCZ`aFZ_J1DopN(zRt2%kJc6Pmi;v3(3VU-#6>lasE_l<}w znpgAbWbYYJ^{Ze1^YrEY_2-%jlsA8q|6I2t_4G6)$s3)yE1WN#>LsNmYr!Ze%)DE8 z_T5!S3r^*(E<Jg(@YWo|i&M8ree^Be8~f{FyZpWnhqyOen$_Qool~s(t5U3bspbBh zzDK8D9p5GO@9WQu`+uI9bH90C_kFj}#Ob*wHy1C6&V1OTl4e$wH0$gc<D?amEF3u@ zjXEw*b5kCxZu;kM)44{>W6#Muf0a2)e}88ATr?y3#59|j&s8^Btmc;AtMtuGpI=)h zsde{uRMLf0QwuxK*Z=$MYx%doa&qPQ>U+lPT8eDn$DX(Qo%8>j=$@ecx0c@1jK2aZ zuP>dL_+QA$xBS)0<<H*iWO*?)+D+}<{{R2h#h2eLy?%n{=_AeMb0(P|PHed;D3|yA zR?Y4k0-JTzjDLGYwl%U4Kkg{o*xK5<^`@{z|5lUTp{Ij?A7HoJaO2&b+V6LtezV#r z_0jk5w%F>oTT7RgUI@1TJSF_d^xl?Lk+b%my8r**_tU{A`kuZCl8bEWj-0}E<&8?q zBdM7z9A`QXu=ULV^^^^YWapUnA568}w93-x&79(MlJ7np$^ZWLcKH9Wc?E|!*YEq4 zRU7`-tomwb_|rA(to}Rfsuzih&EdP6<#d~^>y-4x#r<|s_xEjjxvM|(*p!c{!v43` zcAtH@ef#~o-wyJ-*B4E=8SHO6b@M~DXFhG4&sk+Z5ZOFaDDLL-txqnANheKHO`XNA z$WL^5C<rt<xAW;%_TO*YzwusJRR6R$%WHo=oxc2iol@r}?X7wXmt0rdx8|P1>{ZL} zlv&?7IA>?Td+mKsCV9{LQ@Yf5N$BL_Ui)kPrAPmQD&Fbs)z4<8U%TC=zyHstPgi-( z?`$}>ci!Sxn>0jM-1K~Ne}DZ}-rv&K_4j_cbah?GPnI<I1)V2$yxaA9S$=d~da+e{ z{ZS8-vtL@zc%M_7x8nY5%e|Y*-`{)aZt(tK>dU*_`g;QQTR-)z{kl3{_TASb`JnpX zSLgTpJ6>I%XZ8F@$t<gPYp%A~EnU>9dPP#GV(M<Svh+;JS$2Lu7g>Mw-6|4&ZvNWp zElMw~-|s0-nV#-jk)nM4>7yj)Gn+Q7IWakigXmDZ@qy`hpKSE>vyH`pnK#33$+LaG zU;qD0Y{k2s&yT%56#MbVvWaU~nO|6@ADp*aHZr94qr3gDi~INf`~Euq|E_;pFLzz~ zm-k%lb5z|L`PW^)<Lm!^P2Cbxb~ANpd}r;7ex08u{p*7EP0C=|q#=6vre}(M@#S+< z|IQFBIwqNJ@;5d|<Mk;s&rFtU5exoZJrVQc%5po?RA!^vqIDU@wVyuzeP3TM`@}jm zbMt)N(}DXpf38dY{q61H{3X%~J9L~^^EsVYK7IQlXo}^G;&ky1&s0BK-~Z_soA&os zaR21Xe%5bK$Nwvmnow`}z<mEt-%EcrRz>IU-Kw|BTm65h`n(A7sU=w_cb}F2|Ks?R z%9l&0%T+#^`1!p3{*#mCw}KjP@ee+&H>sWT$#r{NvD?0tW=E&JdlKL4!G3xA^ZE7v z_WgeMI(y2T&Q-gg&C0I(_j$hh^T+-6{~q$!@2I(|>b9@r+=36E=3nHRwqb?9W*r^r zA7_rIS^Ok^qGy^8sGBHy=gszyU0S!jHd}9T*0ZkIoLTnk-@U@)vUlGuonyZDrSILT z6K{Jh*RMP^=PTQ-E7ni9-PYumpT2fo$&+<=3(ePk`}!%udE=&korM;^-)!EkKKuW_ z2kiD5wJW#R&xhvXpI(dfCoElQaL!4|dh+kyn48+}{c^H5FXz{No~<1{@e;?GH4cAQ zPkd>RT61&9gH7CeI~3y2=A=)*xuI8F&rs&@Zo{V2pDxU1whCA2`0;)J|61YuSN1%+ zy59C_d)kwWb(V2!HDB%deC~DsRc3a+DMh=E*nYor`TR8P`2WAI&z=(=SNZhBoYQ-5 zeAy@{5ni$PSx-%HZkO!!oBN`tf1Xo(&T~a<aP^}9S(7JzJ-49Xa(C(f9V-Mj^GZ&R z?k8c`YC}!q-{0TY|NeI%GVj2N+@-SB+gSd8+rEG9vX3|K?@K>FuaG}G_3`XuTbJK+ zm_5yB=i9QF%;327+Oj*V%T5)A*+l=12)|}8-E;b;{Mlt6tKaY4-qSc|^X5l$ZzZs% zWopH2o)8fc5s~}weBHOr%GFjy`Tw)b-F~uMa|NaAk{N3Ia$*W1`8cDd>#d1g8ac&n zokVd};r)HJ%q68cC#LB}e=1b?+*5y*=M$(PbnUybIzGpUZPxWY&u*vuI3&K$fbZ2o zcKJ2#fpL@neOYdQb>{E%Pkiz(Z?{~TTXahEu4H=Y%+vnnwK*)urpDX%P0U~AyK&;r zZ`=3VZrT!^w{vNk_pdX?=W|}1>OFfh&o?_gc!x<{nNTFxCWVqW(cAN6<0LnoFyTKz z!m5A;ViNZ{&8?+5uCG@8y6sX6_ut3%|B~05Ki%o{^<e1Ezo0h%&g|>!g3f*U=-U}v z_35Pg|M~X+pRQO8s#bsT?mD~fy1QIu%El#}%c@_kTweF{bo{d!J(}<5?#M1bRm8UG zsERMwY2))Y#<hoE9k<&1-@*7)IKTa$g33*nTNcImD;?x}x_W)hQ|+(emueezd|R`{ zgl@{+&ws)d_j0~naFuP*@!wowYc-fQD+m0~O5yV9(U%sF`S!8DzNXA-tCwzOQrW34 z!~Rat(1V7ob=jLAkNfriM!mgSu|QS(Q>gKY@K>r!>Na+U3a`IXGrKvAz3*FgU4NhT zyB#goS8MlwyOn+VvB#rF-TLeHzg-@D{r3HT--^8bKGi<zRR48zTIJH0$;t-nKKv@| z`Li{*D>v@#t0Zu(VprDrOW?Lu`lYjfa-*zgAMzDXdy=fXGx>O*jyN;#>7dIt%JL+P z1N(ti88TOYs1a?fiq3p=TCV!d#v-dwp5->-FTUN**LT+2oh3ZA?2@PYRBhqyV(P12 zU!MQ(%SrY5F?lP6-`7017GCq^)#~-%=7*bose4yE|Mv@b`(G#h>pmS3_Fwbf>g|@x zMIWJU%_%3=yu0VJ`YFrOm^bU{zwf^PcHRF!&+XUC>g{|oX_9?nw)wxG?{~dk_xs-W zeb=`nK3aEolD+TVM_t;NuB`j^$6UQewP9UKhLEMrqrLBI^UIj7&-MD%V|;GM!!~KP zdD`LS>5J-vzkWDw#q{x<^?RL}#a5n`FO<y<rq2;_Rp1W!Tyy>7;}3mLFFjLLpY=Iu z*1Wop-SII+C-YPc+?l?vcS}21P!m~a@yYw5&$OB|`p;xaD^L2KU3BIBZ=1N86>>LU zE}tLw3$$uawfpRe-m?nvE2mHRbyO|Jch98{+iPc9)qlP;>HExI@}4KQgL)$STb_A+ zUN3W}>h)URwx{)LZr>4?2(SBVF>7Agc9Wxge}41)|Cawhj4ey3a?@izeeaW{dwsLh z!z$)H+!cR*Q^1qrgf9-&X>afAX`CftkmR)<sK9Tut=QM)uy?J=Z@>D_v+wVDZu?%7 zUoYLthbQ$E+mAP;I@{+|y;^zR{(p_^Thk3&Euzany`!S{4oZpH;qkSluU5^!1!@N$ zIl_DAYHg@rqW3?ms&&@?RU37EIa3eU2iJ94Yv-;gKi_v}>+PpLn}t_izf$zDRXnXd zS96t$(4+9zrsY%n>;HeRw=dWc{WpUBkN48YLi>MRUH_=~`s@1mUzeue`}53vx>?PK zX8AwU>wivvciLudk!|Pfyj?H9&i?oQKi?Y%x$v)PJLa*ja*ICxMM`JtVdKARHlLHS zlr=kSaN)SGDkw{ynm&KF-Ju;1Hl5bny=H#p;<%Y}U5hMVfByIPH@n=0gU#&T4-X%o z!z*GG9B<lOW2vvWG=BY_PhOpg?{~00I{oS0tj+PK_bLm2%?|qf@7kP`)~UZge+rwI zEc8>I&+XdoIo+kRgI$#k);;-EXkz;|Z)Laa%!N~AuKv;mm4q@s9<F<x8)d!u(9-3` zGgk1conB;k;gF8S*MKP`ELpK?H078japQrxc>LAdUd_{zx!>)6zpv^~4Y*b3;WS~B z{MI{@b}VNRzA7DXJooI`m5EQ+X$o7OT$*?0ef|I6nNAx|iQQ4F=M&lecH8Y=q0@Q) z`~EB1yJg`$TkE{wyd;)?zt;cXwQ?zUuJ+R@E{C?xn!_w#{3zP#=c&D=i|W=q{`30J z<4a%neQ%t`Q*Y{*7PEBr^IvaT{CL{!b^dpP#*4mcP1Lv||M!La*A1QwFF{q))9@uM zOvZYk@aOtcAGYgTKeyiQSF2X1?P=D&y@yvo!|;#Ntix@fK|$R%%V%$1TwJWpy+d!Q zX>*MQSLP|PXSHkUHugkRZhh^Q5m&9|w)OhY+1sZ)o3d{6dAr|Fr^lbOw=noKeR0L> z`8!2lmNo}(->H8gMNj_q@rz%!_?I8zR9~|B={+^Wk85|Fi@$z*OIcd$>u=|yth$}2 zb>yu*v1sDb<OQvpKUdu}y-`neF?c|S1GLm5;rrb6N*C_0oyEK5>%xSS20W#wb+=zR zZ<VNg*6hK=kG?l;K=u9JeH*?1FaQ5#e$eCie^2B0z4Xn0RX<xh{^zN1uj-({yH_Uu zEdF?qUH(m8X4$d6)A441%zvK#da0r6`<oN7yOo<y|9V=&s;9MMP4*v9FV1b+w<#`v zBiw&YpTpc~QuqDc-N#dw?Vq>zre@ZHMZUj7#a6tO3^#rL!R_f&`vqxJJw&qVOJXaZ zPCdQ;#nS0<RnKOogZk5;A&$q3^p~$xWh?}BzxV%szMoyL;=ytIe;>Q`_gS3nJzOdD zX~HDowh3a(<|?bdFW_ALCHL;C#%96b>T~Nm-x}SXpKJ(PfYtZ?-|zSJKOVLhmps!d z&E0tPnYcl&_hcc)iTl5pgo{O=aQOEtTzPWUlk<*g?oBIy2mkv#|NkF{lZWF|v!<|b zS8A@@v1{rtGw<O0iTl>c*ws|bIkqwRIB3pdSMiGr3kxluzy1XpXtkQ^66e$wJ~gvy zdghHI(`~<8aQ@o+HT%5D#@Nz-&;G8Rxui6HnZN$etE=CIOkQ_;&NLIjGT&#PHoo(_ zd|A&w_Km^aBikPZWeS1H&Drahg|97M*H&=%pQKNErv_7`)ux7??38J9Cj}EfxghX@ z<=fla=6SE@zMcyzJu~j+UH$c_@VM;s3(bWwH`(IbJ5}#!?(Ue)yFz(;L)!N`V=v*> zDI2<XEjki!vU^JL>B#iCUvFivpPFO&SwoTGXZT<JT`v~xI&i-BU2&)2iEvIKP3hUM z+fpaze!6~qzUrd4wePFroo<6hOxFFesyF)1%=k)o)8E+L2P?1dz8AV(>!pAFuggn6 zmMZz?7ClQoR8aT#b-a4?p&%ih$(x^mN>KBg=PaMk2?-IOTJo30{g?Sq_d1`A@_!z% z-~T-C`<&m;_wWC;djG1`c8`0EPkpuG(Pa;u8a+vo3DkW)@hSEUQ|RP%;Z?V{<*xpv zV>DrwAgIn>a_sf`{rlb(@tJA|moBi~`FgSZ-xtU2zHRjRDYNay(=(OYoQbQmUwWNe z^XG`V-N)|uKS>J?{93)H)N*rv%#~N5QS~_=BA&lr9vm(;?b*}!lf3m#N?m&D*>dZ| z@xOiLdz1|~f1P#h>G@gHZeE`{`TxJe_J5r1{r7*9;fl;UA8Wa2qYmFu-RtXjzuWch z-jT|$zh`UCab7$t)jl!x<V<7X*Y4B4zz2@D=$h{PbV_^sy{hd0hNY?V%5G(r->)st zEZASZb5dCC3upOP5w92xjEe357s#Y4-4zoPo5fcqfB)08?JNcykF{p~tNOco;-TO6 z+JX|2F=D%3W@}m+U+0stxFCP&=ic9E((R1%vX<~l+T3;NE^AAwTj({DxpVdUeY@_I zf+{-+{*-y2R_g>P%b$vg0j<|_F#rDMW^mQUiT`X{SiVlLQ@vPkEoC72J#^ZIheqPR zZv{WkkGkP=Y1h4%m%Z!0N~uqHT{`>nq^lkJ(s|#GY=5-tBX9EEThCU%41GQ4u<zRF zO%pGD-S0htHDy6|@!q0q{86)rp4D74rQye>#<}fx!<EZd->ZJV_p9=Xex7WunqM!M zzn;_i%BwAn`PB*C1<&W#*VR6LIz9g0lo-3T>YBNmZ?eT~GG$jWWsfeoIje1IlCX)P zQO=T+_xV{?Y(HVfd-~s>x`N2(!M9?BPR?n*?NvR=BjWy!xj#9rRu`+?eV+p^$5t)( zUovrb+1ppE{L){4ZUeO_FD+qtq5AyG(Y$AKl$rawp3G7$dv|B&Dt|@go$tKaQXZ)W zC;PRnTCYC$GQavZmBtlM*X4QDz0Ho-4nL;4%<_k3VEE&__3M{2etnQH6~o?@HcLgv z<hh&a#+jv=u~yyz#R8tfJ`-oGKXS>e^sBuZ%Nji!#==yiYk8bcPk(iJes$*Wmq(&Y zL+_MckNunfTDwzcUd4&<zD913+UqC2c&g9+@?vrSx82ubS5_AP29=nFmf}<G3oHL# zxI6Le?&tHW+p_2U$o;!|qSmbWQ*EYCJeUe<!l+HVlj89q!Kv2$+oF9l<h#@7*KXTs zF8^A7;*<LSzwh5ae>ukUPpt3>v$H*UTrca-Fol{|?7K8`(qFmK@K=jF+74ehHq~JB zb>ZzdY?l3tK9wXrfBTVLXX<Q<Y?GE(zFqm*{C)mem9?+u+Qrtr6uW)7@ee4qSS4jY zShvgC*MIl!S4r(J)%J;AKfB^}Zq)4>)4f@9i%nZze><OJb=tL1!s5$@N_ma#9z>7! zH~MN9{P^&2=3RLUW!}}>r>4y**&RAN_K~vxiC4Gc^Cz5p+u3>IYZ`M_{r0SF7xw?Y z`(E$xChM;`3`_2X+Y}Y&yvr?H-FK(#w#l081C`I`UU%L7Mf$>%d?v<OUa#Apn#}(d zv3=d5)$4YxigztvYWYU_VCvnCsgFM`KkKUB*{#2C$H_?hYy0XaSDxzUJg70%>~_^_ z_AmbbzxW4>X+(>yaN5<^d9_df^vv4Q_jx-Ww!OQUE_*_=;%m6@;nt#L+ik|n^Y(l^ zwyUMF<j{p<ygRonnHkLd^vP<M>e}zS@5@F;$%;>ln0>@qH6d%qmUp++Vw8Nd&i$Mv zp)@^pxl2P?YTf7A_jP*L+}-r&S;)c8wO;1M%Tk1QS-)HNEahZS{`8D<tE9s{cG|7m zY?^QM{rZz-_cA|$B3b{d-{c>U#P{F0vS~&CS^v<xtu|jK9!&M-$nuUU6MkiSVe6lY zugSk=eK<U2S};?4^{qRX{`m0RxBl?<&#~#eGQ2Y@F0GB;KCRtIZ%$1^>a_h;U$2JG zE`5K=TR+yXIXEFsggablrlxP>S0VGW+5U6)*VTJ(Jgeec`o8vk^={_q<$v=3RW{1Z zy}6~}r~GTP<)O;)CBL^`xtm#aD|KDB?6TQE!eXw+UBA6$+s~{raMIY-chmmgkH@ng zeA#ug&*1chPsFdw>uUJ1scQbi6D51sn&hQ!&#K*b<HX+;nrk`vH9rcTWxMh(@9LbA z;QZS6?e3<&Ys(k)W&6xs{>~#d<no3T?c8;nr<P3K&&TrO)0L^y+Wvm*uYbcnJ+}7i z)ulJo1dsj7ShywY!GRs`?x`_+Xc6{1@$U7m8^1Pw`}=y%<>jvpCeK>L*%CRCIeS_D z)tKjVCjJ1O!?8{-*|^ilx9;oe_^GdEF<i||ig>kg?n$G+@m%LS{g%F(bb>)nJmwo{ z%Kwb<d7s(t*Mi*hr(T-Xuxz4v-|mX1Q^ThfO<FO1`khJBdb(TQzFYNuj(UA_<ehsz zj+ysmA23>fzw-Iq(%;^{p3Tmei~N+ieC{;Ar*F1Rynn6RM|0If*_q2z{F0LXty!w< zcxi*ozpvZ2@6AoQ4Vu@yvQ<axuFbVetv!c9WySwr*TqBYjMR7J+*u%db8d`}PU5>& z+F5CNpQc=Iwu+v+E?#<)Jv-C2`+AmhS+im`r~mnN;9=_5hf}$^xxJ6gyeU2V-~}D` z?%Zz^mEC8h-|ZLI^NuO<`+O_-`T3g4cRQbZtzNhH+pS%@wAbxeRI_zo=dQDv507Zx z+`28Uc-Fi!Nl-a4D|MkxymI8Ls@d1ht@&`G@63avI#Q_}d@@(xa%^6tLi|*v(gfX= z#yfNimdy&u*Y1tDx%QTfi;+>m1M&SoTy4+TecyS$G&b98LEoLVRo7$7pFUXlCzbmb zfBlcciIb})zdCVt<IcV3g3Fia?aYkW)Y~JVx!vUFZ|lt0UY9qtX!Y>uNtcWHhX)?Y zEy|xL!&j-DyV^YeyEF5v<5rjUPcg1t)OS$xvC8)6E4E(x=d$bXL;m_1`_A~z+q^%0 zA5ZgEAD$e)xPQ!9=bmNrIp?s|SJnRi`<*{Ls{d`2=0Pt|0~s_4-Ln4QGxPnPyX4JF zUa#H$jXOW-PEcCcDUS0odNYfAt~WBXzj`(4oMm&Vhtu?(oEfX~PZpYW?yLFt^ZDgN z$K~t)G|T@<_?vslcR@z;<j86FrmB4v=1f}4{pUlweav&o=hHTy0Sy6*$JZG0p56qS z5WUuV<>eaV>oLW?=L~($ZLxoP{l1!Q(aM+2OO&_YEsM_5Im?}V?b4>6DM|8GFBVQ( z?rpO4>-8r`pXJMC&&zbn`THWi>gCcoJHlsOQElVT&c1b_W=*|mP}KF-i3d{|=Ud3m zI`r9a@#_BqpTE?9nmoVcuUG%4Bd_BptPAdBSS9b(_3MPYT~K+Ag^<nHYsPtx3f^w7 zxii&DWOd&8p5^9mAEw?d&bg=fd4rqY{>O4v#e3~Onz{D&gsq;wV`6q-aN1n^!&~Fd z6x*cQ?)sI!)YNtD&EvbyW+whsGrQ1MbvCo=*4<EXYajEEYj@<i#pYkWHB)rmZTr(N zt>)OMD_R{|Gj9X&Yh4rO9MH+<n=^6S)!SZ&Bg$5rRUa)r5N3A3JU8!KU)t}g=?iZ* zSnY}4s=4{U;X|IY>%LY=7o5CrvaDoDipQeN8%I3Wsny$0Te!|ddS3m{)A8T@^}Kmv z@3z(bYGjvN!CtU`+CSZ$LE&?6&o*fJwNdZ#{?&Ws_<bYJ?)`o*`j)-*?G5gW&OSKm zw7su0v{!%iVWG>%*Vlbr{WbW+s!i$V=k0obGCuvq^4A+<^Y*-2wfdK(@cWxAx4v-a z_c8f2b~Z?t`$TM3wVP@G^Q6DoS2M<dSnkahDo$%p&g{P)UtjyuNvKoZ>rU9oYsWno z1pnOT37RzrEfn_7K6gXvW!ZV#?<P;bT-;@Jc+!p~YM;yZeV)7PSltt+{oD&HzTHfp zU9_t|^2Y4vQ@5_J6ytq=<Z6*c{iC&hmQSZ#YE4UBEj?4?*0S8MlUEh{`Ivi`i%+-x z^kmbY4^KDx>1;T8!R5@-^1sXP+?_P}qSyW1F2zmvKyzy85|USfv+^Hxy6rQba;Dqs zOlHl^G`l@I=eJkZo^p_qvuAc*B;Rp2zM{B#?-5^6QImgd-JY^*%J!>WWQ(oVtptsu z#I^tXdcNM%=JOfj$3=QStL{GAQt+fZZ~q5y$^chD*>bNxaK%8n>A$OttB(q%eN~yN z=0NO<lgk`u-fTN?Gc#iET9YMT^R89}mv38=)?9n{4GZ6#!ef$8HLq-pI?HzD;oViG zGcA8<vGb?iuPa+s|ByR=$Cpdq_rI<ypQ^R%$ceKXHB%ClvsW&<zd@~H;gdH)zW@ID z-CA~O*~+`e=X|;*a=Qi;C9kE67etq7s?W=QpwD|+?Afn%%W}Ua&%L)lGve<?K9h`d z?^Yi7<m+Aae$qUR0Q)0fz2xm`Dw3?HPg4|hp1EOZe5ZZ}pNH4R?f2`dPfj?pgELMl zp#SZ=V{1g8-d4LfXWq1(7kqxEaha=km@a*qeEC+LOOWt|DPqg6@BjNY|F`Q?ugzU* z#e13558o}nfA{Og-|uIp&$HBfu)^-F%FN%4g0<W8>wn)?js_1(OjVm(CB3~UxtJ&H z@;|r5^_P+~mwTJ+^|*RgFwM8|?5^umru85GX>9ko#4Eksdo^=rvG?W6bypv+GjZ1Y zm^wYC$TQP<at71BV^bs7nH%dZHC=dIHGO&p-}~$~U*Y=cmxKauObM_vQ%+>9=icOC zs<Zij;bi%^YrS31?yC9gCa!uMw!vt^ESI>JSr^XzaeI<;TrJw}n)e-(^|qz|o|Qkp z8Xj-^a>?XZiPMz-|1vcTf4Adt->+#kIYv7FlkYyeV)|4oWWA-Y|8BLbNBJ)M)@ZN$ z9RW!sufLtI*!6E`NlT>dSK^m5AFybAvv2mtzm2c&?Wu~+lz4r2m2bwewcGDSZ8u8{ zHm%;vyAND=nErm4zx(aB{Xb{#xBU5J@@uB!OWpJOd=ImkZJL&5&iflwi0_k{neplS zV*XiP?%OIAOct-+QpuvsJ+oqCW_0Yc4gXK{eb;}cG3`>@?7UqoQ%=Nv+{A0$|Lo`U z`TFsmJ|ZvVPX|r7ZnUxLW2*0$Q%A+)@0h=IKXRw?`P{!bPrYonEjFp~2{LY-U9h3< zhtFPyX;QCUln#}>zZYviciC27hu|W!=N(s<s@`QOE?piu)#mKSteHum(d3`o{7e?g z_*$O4xkL5B;(dGl^jC48RnBABeC%4-S)<VKs7v$zeOdlGdX}=_>}|d}1s4DJ|GmAR z_e$ujE2=_?vFUkLw^HPOSe#w&7JKo-k4&wswu2`m!|zY}7&Cw8O@4+we?FaleXQsA zMIV8H+A|qyQEhp#7mF@^mWbb0|NmcM?7iLP`HHbuH!B}EO*p$Qo#)EpMX$fM+kIKs zvrF^#1l3)U`N1bn96lYC04*%u?~kba^H^TLU$e83b@OZQ&)Jh!e%U<#Z_cSazxiwP zilZP2;O{)Wu5~{>W#bxOSN&c)*Z1Me`A2o0todKr-gtD$xv>5$;@6aKxXBWxpO++N zCbrH)nyqZLnf0;zAN$I$>~4D9yZG#~FKNuLcJ%H8&9%3R$L+XbXjxR8qw(t7k~0%; z=gn^W>TDo&Nv*zKJvaE}j(vA39{2j5{CfPEV2^gnkE+YtcAY8wS1LWLgvnU=<M)Ht z|Np!G|5yB1P5VyS9WNGj@6!MOYW=@ec{k$!e~sT?cbWbF@&7;M51o~|@$7NW5nq)v zYcp?j)x2p>s(oL5|Mm1aIiR8S*MV1LCS1Q0)c^L5Y0<Ll+pqkbeRZ+jKV?_bcJr&P zS6)7wFiY*xGR}-y5^=Yl<f|3E%I#~F+BrkzO!4(~u}3#VPS}0yI^Rjl0vUhd(y6Q| zcOIr{?u=x9ef;8@`I%Rb9F_@w09tHvX`;%j$%dcbx~yBb`RV?{KQGVY>D;xeFnw1k z>oarhxv$Pmmod=X+V5kMRQgu=vSsl5r_<x*B14KdO0vDYwIk!muVZS5Hgc-uKl7;L za5GbL@4MD(|9;QsS6b6%&YNg)XIHcE<;P-IZxx@OrVCmEpmwh3{ymu=H+H_gxmjKP zs$WhepJw&x=zEs}(ydbX`u1#(d$bJPv$f~d++P<IEB$WQ>va>qK1-@Q`Y9;Hy!64E zlZCB5#e4ILSFOH&yYcpG)8+Rs--!^n_PM_1)nEBFyCh5Z{=If?S;5_ZH~rHYPZ|ZW z#d)}ItCX95;gTi^>j0aW9-Vf}GhL&9?Y5Wl{WoE2|6lz5#_Md^{df1&ik5IXWSD^( zu)mH7`(IJ?X6CO=Ok8*llwhJv_e|WHU3PiH!?_!GrY8MccBydhikG{lUHP9YcW{SO z+j{fbm8WH1#+xsgzs_G<dR_U0+lBtC;_oioYoz=!b@h|~KOXmAKdfBHX!$TTB^ESR zHP=`<T|r=_-0jOUlS7{8A4?JbeZgnZMBlSV)#ul2%F8w0KdWI`r{fyme|6HcidEd% z?wcA$o^85QnsQ*_%go|e7YY`*Y-YQ*U%~gsfg=IC*GZl=bU3R#`^42RsTTENKmPsn zn*Z}mdeO4D;B#DcIY(Y?obqvw#F-<O*Tg61@fAv6pD|~H*t(*8W257DzurjhpBg<W zgRecS?)Bt{3)|&hiC=YbyjTDK?_ZnKJA<|te7k&mTdwr=n|sbr`NluT+~nQ2%02gb zdN2Lu*4v@5*tU4X%PaE#KD2}I&uve1I(gnVPB>ZBIXmsc^`Em#mt_a-e`=YtJu}zt z+0h^S|4jcMBz03&tn^L7{xgN)ugsP&s@f}C?!E4M_PG=Du0gAX*@4%sH*Gc6h}mAR zcj@bY-_xIr)}4)<GE4E5GV$wET9{_1{C>CNZ_DMF_1mYWwV3P<1&v-@JG^X8&ZQRP zn9{4ErLm9>tXkc|b&s}O_NzW$eeW}9O>O+2N8-X#A0Bn<FMIOqz=DahlP9M?a=Z2< zQ|cQ3(-qZ*zW<h8TBm$7YW|0oEt}t6znMONZtpMOpLdTx6MQmdezEw^@1W_e?{|v* zV=H3Q?(aW$(|`HgO0Lq!)2I0<oY|rGUHk5w@K?PDy`AGG?hfPpf1r`M^t0XnpXd8m zYY1=V{G2&$%CBQ-IsP_otIpkDBPaj!g!?P8KAt%%SHHV-)@V}3g7Em-ttr_|vu25I zP0{XDtFI5tTIDV7H78&5$*t`5Ypsh8^O{dt@3p8*!cJ)Q%8mDz1f>a`m5TTdT0y=x zy7Xr1^sDB4OI|Nqw%`8u>N*I%8DRr%Rlh&$`OedcDby9^-RA+UtL`AK72B-_dvD z>7O?`rb-FNOuKM&${m)PQptUvrmpu{v&FJP&)&*1Tj%)%zW<=blwa3}+RyoLVWIQV ziJm6x-<F1I?w_~+@i~jxH~uy9lrpE;+X_70So-?frGJI(yu21?9*56NwY;(A%dYt^ z?*01r?R<S@?922Q>r$qqW$|!ad3_Art`ND`uXT3nFM0D9vkEVHs>c?eHNF4yT=}IL zEdT33gT3ZIE_v(AW;`$2x9awss@Gr37Tl;hD|z$st{aKFrv55@5oO(ch`DF;&rsRp zbDyThD8D{&?O#VJ@rP^V2r+(4eY{O-+Uu{|F7<S!ZO_^~b&Jg0;C5pbxmU~W|7L0$ zbUs`6FYhX7-St_HGim?wYaUDQ+^DyFiF#h2?>Q^~{mQX{zK7c$s}-F-^2c}S!ip~! z-FNR=xBuU-W&O&`EStVs1u~SLbC;`JqMc~@f31A>{raSnpe293>;J2+*wAMOs&9ny zCg|tydbw=Q*^sDt`~JWG|95}<{+Gw}YaVjn|MzXXdf1ke#%DZgZf3PuniQ))R&ivp zlzN$*{O^>*E1~7{s$T6leD2l8yZx;%`&U@iZ{E7EPd97dtLee(bY3;AO>@<4opPjr zA!Pd6NCWRV`QLM|O}M+eT>L=E68VN{bG9Dd5dHa0+x3%aylZ~nUenllLSwI-Urf!% zqf4zlucZ1N4i&dEtY?yWbz{Y@dz0!;N8g(iu~|g))vgaqmr8G3H?3vklP?>C9)NaS zWW5)vT*ItxUTWT_vr{wu(eZ!pU5j<1nuK3BoC>MEU;F*)(RCFCXD2GVzxtGJKX?9# zPa3aXY7?G*dwcu!db2Vs;pdaQ^&-zTdw)s&7ulS+w5szp|KopqOaB$Vu5UW=>FT1W ze|_b9l9R3!?>7vNTX}m<*wyUE4xC?48Ejf!y76#{_Se?|QP$aqmL?WYIgu39_F_l! z?%4(pC&d##UzDTOxVQTIxr<^4OEa_ft~E(syg%Bsed-j$%ejU5ha@*iZoTPqJI5in zY_-|_Wgl{E<la^9H7t7a?8cqA`~|W%CqBtsCD%85hFX1WCes?Bh5)Nix3bs2y|s1q z1=WeXm;N#vP5S@owEp_dcPpRIT{=Nk{nhbXKlHbq`BliipD)&Pk8|cvqwL6>)n;!0 zbOKllWQ8A_spzxs<g|=*dSCZtv3zgNfu!SQbN5Huvh9<KEZu2QkSu)RN_?QVV(g-m z_C<kN=azc?ahf(g$gg<TlO2nNUYqfszvjAj@>i)D%VWNmKUjU~$HY$1(jPg4(wUbF zuBQ4;wr>D!M2UU8qvY86bo<{opU<z~w=QYp%Qn?g)g5boW}a9zd&cW!lAT;Rby>4l z{Z=(s_4&Nf-t5v0D<R|7ClT9sy;Af0#%}+^@$cJDmrEnAnZ!nXw>jP?D}D2I)xrDw z>;Ipyk^b=rv{3oX0#%#2-}imr3u>~t%&eM{Cc*DNZA#el{5q*uyM*Fr8lPU4^Nro^ zLu2RHYpwcbvD+<uS6x5Wxaif?#1#M6N$oE`y$)c1()Z_}mhQ^evKeoEIHw;wAE?yr zDLMb~zx;f$rIXxAi0P=txz^>-n3gS>P<ZM7+Fu_I^Iw0g?*3fm(29MZKm*mjr)Pg? zN!$NxvcFyA{kl_{%X_R>tPuG<vA<@?9iyV+oFc!?6SrpG_;BvV6idVU*vv!6<0>Au zUV5f7YsG{T#oJ3>^ThsoxBI=`UT>w}lYdwK3g4vseO~pupV#gGr~dwXT7Q4c^Of@1 zkK@y4tHs){7YVgrv+K9z>6}@Yo~&fu<Z!jWZttblg7IPf2bO--ZZEqUrW!ll=Io7i zpUqbvKM=ljSDn&BGf)rGd-*J**$vD7b=?xV@kD;7hUzSx*D0~dvd<#ttIf1|%oOta z9N%u=nD4Lju5>$Ot^aNPAvD&>ey+s2OE;ID$=vaZY5Dp8OZ974x~-GG;Gh0>ZFXeH zu0&9G%AIYEYL&V3>XpAXoz|0Hv08KI&hk_JlG1+}W`b6`?b|zVHmKfxRWUiU?gINR zgHNk}cIiu3ytVoF<1u$KU#j%Yo4vIkr-sL!)L6^z!zej($Ac#Bc@>X3HGR)nzuyz& zA>3lUsYN92llrmG+xP!{dm?A&3{!jkU8<i?xFlVWtNC!SP<73fue<s)k2&+(n)sgl zYJbt-lf2c6ZrNqob+YUBd^*+0cBk(5+pSj}veVrw7FZkq4y`?uEH<<7?VO3?=c+u2 zU)|qmDkgE`g>@eDy|mqN?6OZ@Ub)C9>$-Wi$#I!04|y!NyiT|O9oc;C&ZQ$pCV}CW z@@seQ{rTh7>h;&!-Ayjas1|SDy6^tPCpl7PMpG7xSor?ib!j5+YXADzZ2$j$zaJky zv84D<K-qu3H^qA2_r0%uzdHRgXfF6usL<Es+&`~#E-!h%<8fb5plsNLzXvQeSJs$r zD6W_lWtKiq^5(nQkK4np*&poxdtruA$TFXl!}Y?ZH%*H+ChtCX-{(@}dNzky4YSk? z7IJ1t?G(7$YX0-Mt`|GM+?u;W&u@!P%G^=?{oSXlCvG$z-KCo~cg^(!CX3&_KM=mv zVRD|>v?-DEr<tmTYZh<(S^u#+{!Y#3v;W`j|GVAEN^j$n;9XMF8c*C&vs#>eQn}wI zsOq}PtVxsY1<yX$d-gu|ebse!yN{jAZq)d^C^=TS(Bff>@Tc8(QmY>{vY+~@!nW(O ze%UGQvp+LROO0p9l^aCLGH=Sgy-oA?zQE0(HpR>g(2AG)zpib+#&4)!UAf+)CG(!f zCV{gd-;3L#{+Tv_y7iT(U)QJ4Ee&hB0-6qb+58}FmHXyv5{JC&lp=#p*+_}+j*>49 zGx8>3R!r641OHC_O7Z(_yEpc2IB{deVrDOY;ZT#j8$C9!mvH)LJeoc0$0n<kl~*Fv zK~?##Z)#3Up5$!1*8j%i@`l2NGE2{N{(SA_ZnlQg)zke~pt0qgjO*)SOXc%-JZ!tv zHnH=U&&E49?2VSyt?B)Lf{9&kUj4tHOLMno$reuV+xz2DH*@QctR)Aot&Q$}Yo!)u zvv18j@t4<U-~aQBWo=E)2ha@r&JTyUrCX}@h#olF_tvW3*i%?HI_u4R`-rR@p|hJV zoLR57ATve$71QiLkHwa%ahWPgbRPDyJo{C~IaoYyd3O7<v!&aX%;xLM4k{1-yyo>k zvv^<mrYQ5Rl_|kRQ{_zU%@5aVma9%Q-XpYSc5(f&qqF8#y;}J-vG42N!!O%X7kE}4 zF?BT$`@LUb=`O1;)-%`dc+~aj>L+2}3E`aUSFcyUS7XYQ`%3Fn%iNnsOb*I|Hh=#U z4g{UjWYwsnnd&)5?a0;?5>~m*_D#4G7e8Cbx-so{m8@()$G-o6-}g(K&Hw-Bx%ak7 z8Ha>tMYO3YBqeOG;resE{_pi=uhi}=2)UJWOJ4Hy1(TeF<ofV8NB)#9eJoY>e(!g) z*cb9QugwXbyy(~RLsRFerRg%Jmd^aEoD8aPrxz{ryux($qR0Ke@5;TULF+B_Zl%sL zdis*()#IG5C%aU_%x)}{*Z(<neNF1D_IZk+-C|dmlou}*v)=al&smkV$?C!RoHHf! za)mct;rXY=koBZ1YWn>r^4m2`Enc1gjWSQU+#>R|-(9ElD&OI3C)?MDjn;X_p8P5` z<4kG&?9{irUa!;cmGm$%-0Az~)s&c}f0k8(;={Ca&Z^H(_3M9vb`RNF%-(qAj?st0 zKwmG3{NVgs6AG<2{i*Wx+s0q>fLVF7?%Sl`3UP^hHfwrTA9<>~_D|#PR~I^e37$!) zdXTV5*1Bv88)z_d!Tx<p4h;tuv20p0<*BOo*&Wrdlh1jPaD>i=l`O~pI=_2dc0YI9 z>(UF3Y;Ll$0UB|&U$0K~vs!7Nv+3Z!m&@nt-Sk?->7S7#`6+jEqFrvq)2ZR7-o`%K z`F!5*C+hZ=n=Yl#t6X++PQULQ*RuWJmFLZB^X)O6F=Kz9h=h3FgtRv|H!pvA0@OO# z#a;Vw%C{Gb`>$2*Dsf5>DhQl@?MQsdO;F5zKP|H(sQuEM(rb~NvRX4i-J5A?p!Jwf zcO99+6gi9Q!7sJ4cXupPXD>f_&4s}<vGcI%lN~E&B|X{OEqlB4U)rQ=pUuC1du-yq z?Hi~aCS3{YEZv;-u0JM_{S&{A*Y-O_-m&lJmfxGXHTC<uyH6h#tjT+8ut&`&=KHH} z=53|*^3`uPUfQNIi*<?K5<l}opR=*N?~k~LeYeWZsMyR`|Mzvgzew@FprX4ybyoI4 z`L(a3z5A!tgoP_#Gg%q`o|)e!KufoCqTy`cH)a20PS-u$IjK&SW0$i>(v$Pqn@kr! zY7zE3@iCX*?ngpqkdUzdJ(-&go#LAvu5LY3RCOl`bnf$|H@eZ=eBNvVoje>d#X)S^ zrV}X#B`e>{tX;ZPpZNV%38}2da=**&{F)~mm$U8u^^1&Kk2Ny0|2qHljPdz3%za+} z(v++0r#)1b|LGAN^~erX47!BaembFS`SlrS>)Ygo|7I{ZzuWnI-ul|N*-MY9Y_i>V zZgR=D|I1rJT@wGgPm}f1FK_6S{;mFOy)x^p3sZOH`rG|Xxx6jsoWD=x-1HQIgP^|k zg|+SSbrut)EaxStct5@{H4?OBAohL1uD)BlKb_L{erB~n^_>0Rm;R^2g@U=xoO8QB zHC9FVR%HLT!gSr<5U)L1wfUDi7iAUcmE~OjIomU;-GA9Sy_97u*ZrI!y57=ugXPyX zoDEXj7fnl={fD{x()#+puea>~u_T^1ynIQB=1$Kme223S9VuO}w=<6U^0r<3&pr%` z)L`pN)k%F;as1M8m36ybt@;!y#Cv_|^th<{+e?I(+;Mq)ZBOKpPt1X@yq4TMF@N)} zGtXSMfi^~b-5$J5dgCt7$6gsem!9>s)D@K5`&sT^{`i#6bx`%*G{MDg+WJ{8pQS#4 z29E5XW(Jiniz~kV$^P8Aph)LlpZ;j?*Oyz5J&m-RBE%tZV++$)tC_6nOPuGXKjC_& zMEn2=4-=>jzVqU_qa0Tp*(G^OOB~)_W=SeJoOUNs)wjaQe%ixU@wkj_fBAb3yQu#8 zd;fo}Y{bP>zXvx!qt2I3sQp-^x1nTJ=8Yr0e}z9^pU9M%cu3N#de)JH&Frt$RPV0; zyX|&f_9ve|H|ER@(E@dA_oqnvnW(S7T4>U#tl^(>D!8ca^{t%yX@RqT6kOLi{PDQ_ z{-A$nr+A8=dNX@j7tc;mbFcLH?8mEvP9z=w_W$_3yZ>%QUae&Q&+YO1RJclR%|q_E zExeqaoQk%FGX<P|W(#l_PBIfx^Jp-WO7WR;P2;e|rvf9U!yUJ@nl)DFDp_;|d}%w_ z*!W4~l(Y7ECNELOO0Avy&3~7rKHc^0Ui$pvZ+7YLYwe!1uB&}px;A_5`6`R!Pkwz3 zzn-6S>C3i>GdE^Ot=RRv{9a}H-MwWVQOXQi=N_8B+TP##>t*l8ns>$XS6hGHegE&e zb$2wbfB$ALEH(MYe($f6H|D)_5x-`;=Rp&<)ZVO`9GS;&Cv0&$6Louk-Uh)}Gv=8b z3vz$+?fk!MncMsnr|*-sC|FQ;r{QT^#A5GQ=}i4AJ*tx<{<FQgb3>viY2$9Q2t76S zNLl@xZ2G3b8EdYB&Pnuhot2*Y|Jv8~(73%-rF*-M?c9@ld)vCj>x_-nCT+}?1)Z+4 zA)(P~W+va9b#I?ENIm}?e4qI9kS=k2sk*rC_3d))w@H7SYL_hzH*tBa`{jzy5;yC5 zFL!<Y!`Ii(EwAOZv)sux^RJDn=h;u!e!1Iyn&|eo?AsPu>oSv9C3e#sO_PM5)ok2v zIHByXRnP*#U6&#}-kvdf869^$KV<j&eZMdHT@T!%|L=vneb${gyK9$k*-u+?=aSx) zoApu$#X-gHOaG$RTi%y0-R~fq7oakI<A(bG|NhC!eYoxRBQ*IY&m|ApL&6ijSsGW& z33*;v`uCe!E=%1u`S9<S>?d}WzJ8Ut>)WmD*Ib(BNd>1KUS1JqXZC74|I8rc*4z2} z_tsUNdb-4SPp;p~T}6vytiRX`w@JibvwJ={W7EZrpA4VZ)E1<ccs{tn5t;QxxAd0e zJ1gF2I=K-~lbg4nJ3k}8{@dpHQ_pSTetB}a{oj|D(yDd0=D)03`fu&UcR|;qi#BF= zd=Cwey}F|Q!-IpD4*M-Uzrbh_Xdi6p-*5R>cl~`*K6~cOmsj+;*WbBkIytTO_n}jk zvrZ`=+dskHX&2w-e~*`h&s}G}%cFsz(UFDCGUb)k<N7(T6p7C45)%(h(~V}UG|x}H zc5`QO`q_UU4)cF6`ti(sf8_N)Pt@&aZa=#_EU$$@#ce_M*(IxP?kdf`n-=S*G<Eg* zeZSUjzxT>UX=6^W_$}$5r-O9!PuIWnj$bAHa*B6{yH(h7?N?L(tmat-idfM6n2p{- z6VN8lo!etGj$5nz_ud^P_4ASV{)ky`qdZoe2==$Vx^H{T&qLz-0`hXw8?>(e5(oA7 zE}Z}kF6=5=wyfqWc#oi0r9h*M7i)nG*YvommkM|1ZT6ErGNn*;_N6)7O|-78{Agv= zE3xjE;NQnftaPt`y=~}NDv<iT5VSietZs4m&l$7S=M*^EMy|Yh?^AEZ#-blvq~FA3 zUdd;1FnyQha^l+DpP(%#EAIS=u>Mk>J*WEb?kgSBvU<$ZKY{l6eK&pzIzZy$_8Omp zJFeofS62Kyz|6lT`x>+7-#^PTWE}JN{Y<;&vv}pX<HsW8>i>Ln+ZuN<;_bVy<~ilN zV=_BTcZICl%H11(aPGYAol=&MgLG#a-d>x!xb~6o{0yG`enB_)sfJ4lRzCg4>N2S; zcYm#+dvN8cAL3O<`>rO+?tQi8_&Y8}CKfgki6;|QzV7*7xT>AFV<-d^91>iZvahd` z{qWW1>a;k8hoYM|Z<hc6<M?DtRr}|2iqB0AkDFQk?DozIA=3}t@qd&&cZ0f3OS~%o z{d~Uro7wua>Q}ud&9nJ(!MRiT=jZwV?`*v_BmRuWy4~+~8K1Lwytw|q=Zt&d`+r^K zP|?djW4*q*nCnS^)WyQ>8`8}4?pUPHf4*kI)R_$Hb}@r`{?GQT4pbEM?A>tLEp46E zo{R|+^LN!*@6+*rKg;{wn$71<#d-e;JU2ll)%yRR&#wzhPsJLin?5=!^)amX;Irh# z|K?nDi@nc(en(N#7U}itukii7+a?h|jc-fxjz#5vJ|0&;qqS2Lv?@>i!?!N&bs1~s zT<NU5`#)&iWc6vDmcL#sF17)!p#Fa*-7Z*9?aP|rbKB=S%{F)3x3q3~!6i@iyEUKB zvh&IOxcu85G$Sv3<LbM6px*c{ll6z19-kIkwm0+gGPnHOjj?YhoV+vXz^ng%&i~)@ z{a&@PZ2A4#@Am&c+ne7ydAwVHU&Xmbo8NCXzm;a+Q-1E)?ywUVuYB!%TnXB(7waDA zKc{C`Y-fy$LxLgG*LWk#f?Z})nX_#C{q`ymy)eRCXF|r}b?<NO1Qi6TVkZi>9AST; z&~IJx;)0T_RHJe4jtvK;*I#BTtBO0ml2=asYGqQaeV|k4zRd4W4sq+tw5(Wnxi93E z$?Xnt>8hH@>qjR)xP0X4*5je^D`lq{?bE4!Ate}=yzO+SX<oZTdE4ZP*DhMUt$wY2 za`Q}%HAPEpvrqQi?3300S}h7X7vfe~+|y%bndK|}vttkMzEx=;>|%D`k@eNx^80T; zzc?3u(EjU{;M+RIYId_XKV2tUq_K6r>ACQ#qtmYj7VUjiA__h;x|!q3#^k;KjyCK% zXCc4jmm9HbL|EK(C(O}r-ZO7GA0rcso9+cu)~hSdAF#X~pAt4#C4AP*nJedidYfNg zojB>OO$K=B!>cpK=XLx&=UkcNXju9;?qh1^pHHXt_0OJ*-0^DFYOi{!*1+S__x}BM z`=smD7Y{+Dvzz%X`Rw+8c_-t`t^~SIb^pTOkmch2wQKqA$9>jb&BbCuuditDSYy17 zh4Y&2o2v<%O7{Ny_4@U-wc4V)`ko$Sm)8+x)2#XTdH(sVd~W`VrHa?Kde_d{^{`F) z*4&)smrko?t)Kj@cdoXlsQGg{t=O#gdOeFtTejR>9gzOy<<*}XcinqE-{{7MMCX_3 z>#g<*#Hc$o9GJsY`lga^&bqI!t)99B5r2}7c0j`0TU%rAZ!HF${p+o>q3Y`^Lz|ZE zIX5>+w7bcza4E9=ey5l_+rV<ttArI1s<T5oUwCd?wrIM;lA^uWH<!J;6ZuMg>ebcj z_uX3k40P5t$3$)OX@@=@m#_c-_xtxO#p{!;R)zRIY-E>v5o{T6`}vG<>0igDPoM#~ zU(<MA^_t&%@qbE<^^WLAr(exj^Dj2bMf&T(lU$zjw(ffVwrHBK)SP0Sl@lu0q;I<z z;<VaoVqRyk^}`n7Q`@h{Rp(wmCcL5SoaOT=S$nx&-UH2YuhZqJ+bF1TZMFAasWb0> zd|7UP_eJ7$(+RUcU3O_xX?f<-?{~|;SA|`Fy>V6Wp``~wt7l`g_5LOCEp=-@{wI08 z;`O`lLXVd+v2f_PB}^z@wr(-;M;3-{I<PKwx7g=f_e}2oel|OQ-IJ*aZ@l#<sG9p) zXBZ}*blmdgU$af1Kwf$j=+u+d>-SkP=E>LoS7)?PpIdV2x!w1jpb{Ch121V=UBq{@ zpb0f^v*V@1PJ3TC=dHhYOZoeIOBlTQwlaXalb!!>?W?U;S|~Kj{63$GZRDZFM)BhD zH6KA`aJSwrjg5ZX8OuN4Sw6q+SM>c~*Cf;DOsqKe<?V~_^_v(#$6%$b@m`Vee@)is zw|_2O;lHT6{m!SE=WCX2p7;5Fu%D&s!b;HQA$}Q)4GnfGId887`|G-UCB2)Zoy+)^ zr^uUc>8Ayq8egPB?*5D`1*gFz7B<WDS5~KpuaH!^JLYNR>vri!pOj9FJf^pA&6|CN zeKR~B1if5-=myuE@_Uu3;_`(@1pRHlUb#^gdVHDxg9itjQ-3a<aMfawq1hvi*X@0| zmKL$5*Vf0!|9Ugyt=AJJMy77T75rypEMjM`dObzhvyu3%5)q7=XRP#Py7Z$rMknlK z)7!UZ^Vef$m67R*Z*FW{{M!1YUSGdMk*jKQ$juYW=axl%^6d5h{w3uVYg&5x=}+Dd zC%Vf?UYt-YbCrKq$ESU@zjtNj+}W}5%YLM0TG56n&T8y_*P~xqE!_kf_9Cvq9kG!q zXhvzAg-HCir0oZacw=fJ(_i-%f7-N$S3Tu=_@?8p9+_T`34Z^m`rXd-HM^D@U)KF_ zD|@|c>6O4#R?w!fc7A!eixa}v$HmH-Xtu^}OrC9)tL1!SbNcy?BPQMr2f9R091P-{ zDPs{Udt|z(5-ZUsI9?E(aA?hI>vlaM1%s?cL;tvEEizx3B5Hou|Gs_y+S=&wy4m$_ zlI5$P&n*|bzebFMN2B2H*Xz@tPCo=1?qbZJlfSjoLN~k1Z)Z5y2`lmF^;Vx%gXS|Z zGPx#9a9+0VvfaKIMWU-h?Er_Sd7tzaF)=cEYZ^Q|dD?0}-<%2FJ5`?5T#L@%Tl)X+ zcX_K4jlz`rUzg{D^1!d{-#|sWWpqH}fh3lBb-!LRv-7EJFx38VEjoYg^!tU!WzBbe zI0kZIuiwt_HxaVeF0MY8wCv<w7LGLqjgEXXclrJPQAGU2@fx4T+TY*Se%LO+JD;IZ zRqVt@W6kGlRr<a6nEkSOchOz`?baMOsk@h#d+&=1WKy4BQ?y>xV%LXboW5~lD{^md zD~*+_{`N+*XSP}HtEl6ypkgXQf!*6OrRYIPt~z_j%Ed$n77IrSOIljmu6^atK?4MC zDie~^gZvUS&$w-26T9#xx!?9$_D#?}8Sab=x-8FB3%=b<FOO}M|9#{5z1r`0D@{!+ zo`Rj#D{WpTn<g87XSLsT=~&Rog$hiT5vL;WzP=y0^7WKcTtt@$4F{G^kFz>)yXqCF zz50>KvOw+im8pkvK2ElqB35;D`rP_|Ki}{DelI|7p&(N&%dTV7YacMnSA06D{`=0> z8SB-|D<k=S#%)Yy=a<vj&lI*kZm)#=ccB?!jV){TefvJ&{C-VwRJ-M(!lwzE?LK^S z*7*y@hjoY$mjx9Z8XTMx{{Q<Mdw(CewsaOb5qR06=GgzmB5BSs4BeTlWaG=eTy%eb zcXzpA?yl(v9x%QAv8ni+<@24-=SlBr{dsN9ohPZ5H-68V^ZNRFef9eFZ=61Fjav5$ zmQ&h{D;_?X?7#2duh;RFPp3Y8wexx3W{28aD$b7{9&SIrb9?gD?N-i7eY4_fS0`U! zyT2`q_|s*lDr`tR+!m+*U?=D-zeLU_D`p-MF1@6z&}LeD`kvpVohoyle}Dh~&(HJq zao_&EIM5~J;kFP|o2*<u?-bLY!}9+=oU?x4Q}Uy9$`KX0*)NON*Y93%E@@}(?QIi{ z`gVOhG96UbbkAIHT7UnawcGDWmD+E$k7P=pSD6+W!s#j!Z}#KMQxDCOy+$SekM@@a zuq`D%olbK|INm4QynoMf(A|E|v?n;HarSKrv`I=!OWW5R3MwqR1y5`=?z)_#d0R$h z$726kn~%QGy}6hBTzr`Sk%{hdl@AUys=nUL-n+lyPb&Ak#a3@0A8cmdy)C$X$2IG~ znMBtR0vb$vjeJXL&Ci2!9*>^E%bQA7tX@2N3qUSo6PeNXp}kky{F~JKS*F>`9`~PL zcw~C(BWC#@2e|e3T<AXib*h@ezMMqkxc@6>Ixh=Xww!h9CrKGr^u~t7!wa3;tM>Lh zw_;>s5mTGcy!4#L#jk%P|92}Dh@1U>r{s_j$5h&J<cECE-|8E$*PqJ0y=|(rx>eP7 z+4!=Xsncu!|GvL}+im}K@pV6+E}vJGC0QK{J`J(@{oYDl(W%Qr9cpeKO54_V=B(o7 ztrKOuzU~WFBR;aKIKNa$u753Er6;7|kRZ@#HD$r|hsOV|3pZMyNVux#&~PA$rRYk} z|4NGl{_k&YUY?qCe_!p=)=s-9>5r-Ia+ObBuit;K^u*VrS9U&ZlkRfRwE6SlaH;82 zQEgDj1;@+J+xySALB=cfxF*pPcZ^JbSwCHRe<<!%u{a|W%Ppo-8OQ&J)Bo(hyD{0l zx?vrtu!&%@OgZ*nMP^Ss=*A$`%~@AhT{?HLnY}tx`t$4FADcjPC+qioI@M6S@AEn9 zZinRs4_n3gD%NLR)>YV-!}xi2@{*htGWvU?PAm*rMViyDt&6RGabaOx{!?(~Jjhx! z<B7-1`e#1Zw(m7c;>lYCN?g0Ro>a_S^SR*My=Q;kTV0A-v)D$>yrkUlW2$3Di*OyN ziv51Kyt;Gez9N<*({&Tpy}o-zeN*YFe;RW?3xpBh2+|2kINZj|U9tYWE(?c12FDYF z$R~v+dE3)nlnSIbzfopn>K31|FXPU+mv^<*w)>fFsrveg(>7dOGXC3xX8vpYAG7(? zf1AGl&(oXf^Z)++ZJ+oDbRrz+6pkF$ecx_n``dhU+4b?oZ~IKMaIp(lHr$Fluvon2 z^y>BdW^KIx{oi@eFuTH^m;Uup1=&xJnf$&}d>*vB=fo`y@!ewgs$Q?%@pO4?@xG6# znJF5dZ)}|}TxiJd(Km6^?5d?MbM{HxGfE-8?P6fnxHfvb-;v)fR-O$9Zg4%3ki09o zwMRGq_O{%dv!y)@jhvz<4sPl>e(QzY+$BzX)0Uhwzp^}P{q5rqe<?ja9ar^o>5(a- zfBt<;?Tp&>s7u@K&qMy{ze*o|x$M9H>$T|nb-&*-MhXRnE}yV^_OBQ2_EmRFud8<D zPFN;(;av6mz2CpCum8Kc{{PMgP2B%}UElw$>KbSwtN!ox`nOm9ewx0&=CtniFRNxM z><%*iTL0&<eEHg+&t~U8TkSjB?5eZg)5rbxcKsgwyYJoJIfET^4!}}x&Vbi3_0MLe zzuK{(TW{BjY~`6>Vt1F#EjYyabfIR-tN%~q|2;j>$UHatoXzJmpK>?dlC`VZksZ8q z2gCn3U*9iZ8TlvgiV_SXz5~hfOk~D|@>=y@Up?lk8<;X({wwr;U+wQ@Y0G$87#dT> zPfRp=9-k^4mH777*1Z*zi!!dR3QdjK8^rf@SFOxCeczg!-1>V8?o~b)U18U%+-LFV z)#~-{<mILstf>FdUjO2<$In;WZs)yj-t(YLNY~WZIC$QqL!bknzB+PFkKUda8~b@m zu-{A3oT>k=m<n&ZmiM{--}Cxc4f}T0#o9fakqp|)xh4O7jOV5ei~ForUD^L+l6TSH zW77FL;a07nqe3n^F<lm#dTqtE9~J+8KHvZQ-R|deiv4!p)83bJ@LzA7@4@3TvaQ<g zUh`8rO8Yh!brauYS1{;s_}BPXv*PUq0S<wPq(&Lp<~atFqtyk4YvU5)l5+c%9TFCS z^ZLv?p9{{-`~EX|Q=f~U)!NS4$6b$2xBd6y@z#6n_CF4msjYXr5fZyU+|tl%uL@{u zSX_DO-gz5VuJhI1G?(Sz)&A`Eq*A%4<GiJ><SU;{+$*#iG=5b&`}@7>{Kd~bPlbig z*gWS-X0Mo)y!7OK)!*OE|MNus?KP=puY$<+OEP<_?Z2+{pIdUt^J&ucADdi%mCIg# z61T?q<JX_p1DE~tzq~1p_%_mk4wi54@7wRxmw9E$$mFfRA^rS3L0R|Yt8dzPrKjDy zCd?@?!>&<AExB|D?_T5JIfvE=W=**h0V-M_cz>A|owsu9?TIcYUCLgqTz;+8>S=$? z6Xo>zwckK{u^0E-?fRR$4m5H5Hc!Q9wcno5Je!|SCQmk4-Iu8qzx2Zi<$jY{Q8m{6 zw%;QDc9bm04%-A8dtP@<^M3vRzrFuT?5=6v6I%HlwEE`iw|94M=V^t5F50vCdszNo z!S#G;!=$-v(v$CfJr=X({aKrNmCt7G%_`d)m$quJme~9F(>_%@`JCR&-;=ZJaK-L* zN}w4O;%deN1*~D~<8+VYT)MyaN<EXe+JwhS?Z*oI7jDeWeSK}MH`{AR77m}K4t*0h z+CFN#u`$y(@fwHetnix1$M-VkgQl%rR$c$u%x`yNM(bri>$f|f&s+U^&yPplpv{Df zZ)q-{bE)sfthsa7u2vPlaku>b+&xiCw_cC0{|j1S7pwlXEVw&=x#71jOR{6)WR1eA zzV_zVEH2q0BE{>rsb;E^@*G{?)Mb-O)|?ZY&KFbv_v_9$xhtAm4&Qv0UixZ%^!9ak zrgrSF|Fyi{>&5;4x-W|_wQq^hnsR9A^tfMNF8eRvdOfcC?ZbBYb^T3NIU8i-w^jVV zv{6&TBQ7j#3h@~xf{9TvE%?K)rHTR(OpT(VG1n}s%irAC$g)AsvEe`n*As@wru~nO zJrrzSZZLaI{pAIGrd^*Od`#_3`*lR!?&6GD)$evL-*`@%F${Ekr?lv)<IL=QSJrN= zo@B8px!-o%m6xKIrm}%rJyr=?+igA`5q|1;IBWUFAGZ@@^7sG!W_VmC*eZtWZN>I4 zYyFa@&H~LHd$$X33UAMQdOO7&bh2rL)|J*X-pOw`-&cLVTmIUr*Hd5CTWCv5=T%ed zr%R+y3wv)BF|zKr|5vg5S+DuMi161_q(7z}{*-TDE42Q}4vnPjYile^UIeTU^oR>v zKtiTcVr`l6wJQE%DHDqoleWQ*HO1?`ojjeKE1=-8V7fzJpX<L|v&ik=Eww<$P8{0= zYU(E?SL_wcnzCcz^ZE654?XhBetV__IQ0rOZ7F_!&gfoH#&JVc1MujlsF3V5v0n-* zzt)809iOgRw5qRY*PBhJf0>m2e!G48vY-{r_uH=eJr)d)Ee&04f8OS^&)xPQzmymW z>8Y<(r)=E+;Sl#yC*{hUg6=XCBldjC-F<;0^mMWG#{6E-_a$%c6ray+SvYl?^vTng z{=0mbnlIg2`}^C}iDg{9KQ<-)G@obPDKG3h?eU_5RNgOAN4>0bx;u$aG!hdV1UARz z>+bSvIMBtb_j=Cu$x{oC7pXcV++=-KFhlU~O|!hS-#iniy#!s^{PM%L+}qP?o7mns zTn|`mG@(*duHr%CG3WT|w_B~0-ZXLRWrSqZta&`+*2mO-yI&c1=YtM#EUf-($QV%i z)M{T	I|Vt+_h>ndz##e?FUidV8;v@&j#K``>Rid(U-Sa<5f9E@Ge8!uo_*_J>{C z>sI7vMr>98yW?@+Ytdijpc55l&fK+i_q$!Im*q{D_Ixb`NgU;m);(FEvBA>e*O&ND zo0v%G8nvlT5ZL@@_pjP}_dkm=GHC}W9CzYtPn>H!`9|M|+oC((@XkEY#2S|4kT-w7 z;^eN3zrVgd{qufuSH{6Ni+604%?fEVSbu2i^|;$xt3ium>VEw5*ZT8q`~J64%VXZi z$4@(wRcaHy>-+xyzxO}ASN8Dh_4xBICbjD(=9Q+cOWZp7O%A975$F}R9<=x1-LXDd z>r>lzm%q0I4bdJ4EqO0J`{l!m#eG`$udTcwB|POx>dX4t{Od)^rBTW?Yc8hEyRDw` z1~eot>z#N`rR3##XMWp|`<FWOrKi<jZ}h)#)XK%&-JNej+}!--EvqZ15`BylL*r47 zH@CK~zOD^E)cX=kk%G=Mo0+q!TW74@GBtk>i<sJmq~_B_x6~&F%WpZcCTi=d&)$ma zuMRe|{|=Fxy#CfgH|`%xzfGS1C*|W|Pmd7U<g4f6r>(mtYW4Te_xk_ep9s#re!2as zpIp^h)9Y7aKxYZQJb62Rf9)B=<5TiMqr2<tzOH_ntb8+4d1?4vzp%ia+O3oQ?RNG} z)$Y$0nbf1xnDF!%TUzoZ>5J*T%U&(mZ!#m{pj+#=<4bIAZ^;a<tWw^W)A8@EyZ@=F zKG{Fhd5bchym)c>v)jKNOsk2jbHKe?9#@Bs$obzTYF!haa&YLa_771^(@uXXt=ZVh zx#r1(P3JN}N0okCxVnCM&W#NV{m&ZyTqT$l^51R7<~cD@n>TOP-}mED&GApyqVxa0 z^slda)T#b%&*yWX<(J~|H6JC@=Ul9aQC89F_t*zI&wF#=+Rvafxc`8ToCh5`1!~UE znJXD)U3uYgzkS^I=b$51E34)@z5(r?Z~JpP{@<n$zfGI>|9Psvv`BXOv{U(eKDzyU z1v+oAeCY*`ny^({xj~0K?lhd?Z~wPs<>eV)j?{ncjNJX<5VyCr=AGj6woB*Qffif* z*rfRD`^y6}>ZcxFxZ>OY|4S?jynKo841nfGZ*R|+|2&<)w4b4IBG(fEiHjeNcAn)j zlzutsvPEO3m_W=m%iF)zrB@l7=ic6ydnSF4VAd4Idlip+L6d&#tN-6AJTA*`_u~O* z-%};8Zsf5^&)yi%|9Pg}{?9|lI@fKFPk-8Ba>+08TE^SO@_#du&VmlaIb!(r)x!<9 zGF3FK-)^~l$~k}M(`lDBZa!zFZCm-URorMr(Z_$k-@h->-=1@K*VY*O?{|t{=YdXt ze!5!Z-QMr_e%-cv%B{C!!M=@s+}S==N+*782|oU1>3{wGe~RXxdb;}8%ibTGu1HR+ zue_5YTBI{&<;_j0-t*5rU!iF#O7zedI6!L8Ik)qDty~YfAlGN9gIV2QtM4A?XLe@W zD5imK3_4Y5uEE42rZXW~vHkE7*^I?63jQBS`T2KK+Sys3?$}m;)45T@nU~WdrMmvw z>-GEX?mS<1P`~!2H*3lPr|Um9mFQF+ytX#l+(S9@;VJF)e?XJWr51;?mixV*dL>!4 z@m8O#wU>JRhi3UD{O$bm^JdP}6kosV)hfT^lTPTEPkX)nURCzphoCd7YNk5Ls)dDT zPY125jWah>+xun7U5|BFW}c|>_4<8G=l7>CWi^qn_)qWu`@(R4(CIbt`}h6-&%gHa z98rJLQcPv>`v(V`lmF>0dMBu0;L?~=x&F<$%0=&PZO!g@HcJWI!dEy`nXzUCSEt-7 z<AtTy78?3<-Q+NpvT0ax{=@6_d@>dR?EYUPRXm@BTz_+a^8a7!|66^#k^Fm0Sbgd3 z-0fFmSDo(8e}2yT{hIk-Pbl{<`TN9l_3r5@S##UZojW(}6zH6PrE^7p_x*mSEpGg3 zdR*1YcMm~R)Y0Lyd>8WhWc&O|ogN!zzcDZ_q9*e0+jSpP=PuW|xBud8!~YS>8)CL* zh1z|4Ss=S8!hb38*AyxkST!2ff8Bn5cKbdhhlG7hK_7VPrg0h0e*Y?H{(%rK4!ze^ zIp6wuS6)2!^ZgmO6@mX(toy0=KINI!s}+lPy^^i}^AWV>0JJmtZpGtX&i${J`~_Vn z?fulT>eHXk=ilGm{XKa8uaKRq!xsvFySn;+cjoh{;c+VuKLVX^Vgnjn(6v3e9aL64 zzX;krxpQ7f;m4C-tpwhH?wkQN&g!l;M(y0rC%k&K=_$~dapv;5Ve_UQ0xhL{WujIq z@-g-6ulK_7*Ir&q`g3~0vHbz;(^K7?t}H*lGRA*C2_dmz3e(^C&#ynTEm+SXFhiu# zs`NyVoc`qBYu?`8?tkjZD|JSu#R4Z34R)&E@Ti_=GozhP_EmCR`;DI5j!5Mz8535l zvvba?DLtt=-DKH=Bf|cF-v9si-eybS=Fc1Zmd*<I7n=O_O0fUio12%1uen)xT=x4p z>-QzK8MTFsZ&fB`zrMCMbp~jayVRbi)1psJeez$cKZ9lQ-TME3ciO5g{RCPq7ql~Y zg>R7Vb`z~Hziz0%k4V1sTr~dMA#VLIRY|pfLG$0uvyAtxxwC`ef6@CH;?G25rZuO& zy|tA!pb=b$5H-#gQPsFd;nx4qhlcg#f!{d<UZ_r38@r!z-<RX3pV(bIcq2P-r(eP@ zR+-tw^KReXmiu}?+cEniYXq}Q)~{IiFFAjU%o)&t#eZE+0qtkp?@qp6zyDu%{GUY= z&2t&o^4{~4Wtx_gn!o?=H}U;Hjv7q>6|kvSdNVfN-CYhkKKEtx%0Hk*b|LRX@^-yk z_9>TZ?w^catGE4`+r&K9TS-2$GL;U#Y`<?!pNKd6yIrr>eS3T>{MBx@e*M+ACGYIt zmu++UGnd|JfuappCa)uY!k0s*+u`5NAA49V=H;uu5@lrK7Cy0T8fTKBde)^cpv!X- ze}Kkgg;+N|-TYC!IB(5_>hEuFU$3t_ZUgfBmIjM8afj=_-AsRNTJUD$@pCgB-)P7G z^xC=f?qpEq`Tx)S|Ha3D+k?8Z>z|jc1Kr0BTD_F{wnMqkqTqqU^VNx4gRLf<4YGeR z(OvH5mdxOtpPo$ipEgVL%4@}w=icr6{VwRUv;41sq|2{PX@X9BTI$5Ld`{7+hlksx zOK-`)-~E1{UAd{+-ujxGp!q{{&}nwt<gf4e^y#$zb;sh~ADb5bHlJsgC;wbJW}5O+ zwr~<gf~SQil$Dj;x#xF99yCx5I*s<Jt^cyeFIR`J7pvaALG*<lld$>(hW4DFFD-Vv z*><t$pP%__8=t1s_RU)av##{Liu&-X_RB^0>_3)|CkaKBf|^#*QnsGY)`J>SHM1Gk zSsq>^HFLjJ=k~U%erG4`*y(b9>b}}<o9FxP+i>o9*@+v?{B{vpa<yMB{{PYcKf(^Q zo1%2{+#+S+NT#Qt$-c6!$EIdXPYeEWu6$o`c!p2a{~w#&Rz$UZJ0_ifW$o6}rB2&z z_V(#Zx7P1weq5Zo?_jE>&!1|Jua`oJ4~NGJ2FAw5&$$mj{`_mvJOPCZVkgATxyiME zPRaT;L8EiqW^EP@pUDnRZ<aqh5jCq(<>Ku*+zSMg%<SqD&769r0%ME&R{OWQ)!bB_ z9&>4V(Y{^pcD;V}Gwb^kP{tKy>nsAT9P#>VRey8Ct(EP;M&L=`rwcXbRKMF<x^;^5 z$E1~$H8!8q1)aGoHPu@Fy!HD%yUv0d4B1<YHcqr#BRlEZj4%H_roQF-|DoMp=X{p9 zRPXZVr8SYS`VZ~D+grH9=>CIEUm~xas9LE_^pz)#9|b-7I&G`J^&IBz`sL7YpoVo* z<<t9;M+<kAzP|RcvuDQpRRQxE8ts^F-n#i<v4#1veP?%kZG2l3+CD?IE5(QJlAB3@ z^{VW1g<n^FIAeVN%IACbN^knC->uMIe&^juP-4CQ^XB=wYp*ZvoM#gWT72yNch}a$ zt-<zxK^y1Juj01<_p$$V*4)0UjA2WQ?jAm-TY74<-`@h$S5x{WD;EE~>}Rbj?%gUP zHTj<XKAo?i0jNvoMJ|C(mA}F}t*Ci#ak%on9Fc!ZnI8wAU|av6OIF3^{>Ny2<5Z&O z#tqt-W}D~BO)hUZ{(P>dt)js>rkfjXZcDD1;p02~+Pc`;Yh)hpVf)g{(D;)pB{)6X z|E%HGFU&VLCLf>ktXE)jp@oO^LbuvQbDqh>E_RB_Q~7N5`_1P2HJ{JAZ4HmBe3~8q zJF0r$rOBYn1=juf@wnf7)mJV<&`i4?=&;cu*+(X8%3kgJ`&7T)lOgu+ktvfc-mF|c zZ`JD3Q@uX9b9aM|4LaP;zg_#eSJO5>n~z7_9)pgd+FexrVCU;bcDalzIX=JUd`z9W z*vI{DV@=JAh3!&jL9>&~=hsy&zqPCMwbx%M`|Ul4_FtTw`hUjS*mNanl^r_l9)iIn z3?Ls1Q~3Yy&%3+3r~gfLl~r&^@N2wz^QKkeksI^0f-h_gIBzMdC7@s+$YfpqZcdYP z=FN5k4-rq<q-poVPR~={E|_I<<j1Bpe?X_V_j-E%?p*ilY<}J64~O~hmt6Mk^@;91 z1*#qwtpFbm=Ueh_=X0}Hb4o6Gf+mA6W&VBncmDl<-?oE?j1C6ueERSAd;Q)e25ZW^ zX1`sNSoxye?#sgM_v?0F(QG{~SG~rt3w%6~cWc=~*~wF*L4${&mh6oE|Np)Rm8PJB z*K9w4Mh)&pC0}~pqwmcfoBXKhf3y4_g^$@Y&w|bjwb?5eexpO*JKOntet)6ldXrDj z&wY=`SkD_yLUX)Oc*e|`mK7f!80}mC;vx&j7r_(X&Zx<5FHYX|Te#q*?C&+6@q!Zd zjX8<x&jt8jIR;HydTv$d>Qm0bceeMuULu$^MPQ-IYN@dLU1?vnnDa#@y?qT@_h#tz z^!DRE>vy2#dL=JGOZ~$&Od%`#j&-zM^}Cz1s7p%rh1Bh-(NfQLYA4r!I;sBp+O4Oc z&A}J{&5`%F`}rirB-{MzivtQDQ!}4D>eiq4xpS$Lt?%0(n*x7qZ{MjCzAgWLoWQj; zk;W$)FT`0cWhJG>ox?gQGpRD3Ic{3Gs_m2mKe$tpy`s12s6V%Oa$oZQ*Ol!o$ATA3 zOizzIH$k&Hqwk2Ll9$l6?S+qz8GTFbx$3(jaBgnaj*qF4-#}YsB-7?Q&6{l#bCT)X z#QvHkfx3=C?fmk3))@!byp=&a$X?%Wzvq|vVP^U~P5!qcb-ymppO!D(`uUvo`gL=B z(qowqN|oO&JTCh+_U~!Xkb3pjpSQBtU!821P!nnO88pQD-`V>9z0&Kko_^t3YWvo> za7+{A&6e|SJ{^~F<W*WTzfi;c$A{*xPhF`&R3i(Ntr|OpBX*a)-B<g2+Fx5YSp^3L zrkg!CCkdDL_(Zmw=ijqAQGF#$hmk2+X#(%;T<cW!i!*rA4+v~t(*l|ZwtFsqQ=u`_ zIo`fEBn)&saD468s}Jp-f)0M&RhliCxp=~r*zow;uhIE?uU2LlMPFU$zcS{z{_88A zZCi`aSuVfm_d7Z18t8(O?~<oC+<IxFbT9_gCVA;L@86%#=f77~$<|Gco+Py<{Oqx> zKjxI(%6zIB%UxM=EB{VJ{h1~5#b*qk-gD`_djFgL{p$C7BUPT>b9?yXaew`ni|&^X zoi)E7v(Kx2ciRu%>-+1syZ_BK%m2GQW7{_cf039lF%kv_XJj<0%(kfb@IWD-f0c8? z0S%T-jGKAYe@V<-c20ds()V|F7thGZ6;d#WX}ozeQnJ{s>JOh>(zfjD>q1wDm0C^S z{i$$Av8~-&+iy3LBP&45@+SA|*mDYi_7=%kJZLQITWfy5<};`{3K|iY&ff!Cco(`} zV=eN6yK8p8F80g){pWvZ8ECoD>UFzTWuJ~UZM*7s{g`{n$EDNbZtX7558AA18gZ=d z&Bo(uTXKJYdkb2u2s(dT&~}T-Y|YbqY94aOpIB^dKeJWmuKN6%O;;rM7<B&Yy_ovu zsm;kUzqk`_t?T4jr;C~ppOXw^LFMU`t;=6$Pu3HXnCoB`yX{`d9K~QWuEy<)qrXL| zZKz;O-05BRgikJMn!)6+udh$<Q@wiqk$Mz23x`gx!`#{W(w4U?Cp_oU(^j8H{DAEY zwZ=V8I@#wH-UqF6PS9YwnRm0~a!H%d%?Kmw&VSOUVzOHp8Wp)xlC5l}f7;XgZC~wg zwwVW6eDiN@S@|XRa2xNxw@r?Bt|)HkVdA`gHca=nS#-sL+}X(o17q%xFrfa0b4~2- zuqii<_C0xdQQJ`=T1PtfmtX%%nZUHH0|&aMZYb%Uc;FLPim{c=^w&%7Zq2^luz7#- z@xDtZTjrlRcaE=OaTW`Q&PIoA>9We8tJU~!G|F(K&ekS68#6Km>rD8*{rj7n#t)?1 zRtYK?EO6L1^+AWHjb(aT+N1}`2O`6I85$RIr!c2U`#pMT=vymib3|ui18D6~a(N41 zt$W6V14^vl-rtXxUv+cCPNRg`O{Y&iTt@uhU|5Gkob{9)=?BbpLzOSYD@3oX>o0Ew zrGYbZt;^-CN>==L`8|!H@gY~r<<!@{HxrF^9=^G+_V<I&vt80whpp9WK5N5Qw|*82 zM~}yX!WC(g(^m8STO-4i8ca$sXnQF*8diUQC;Mlsvni**3f8js_jEVqWSu*6b#-{U z)9at1Y7Pk{;B*pP+~9NEVO!o^tBNJLLg#bu?AXX-BWd&ZFze#m`cY~I%N@)T=6aal zF8=Uk&CMS-|D{@!<d9&6_e#%9-ygiMG4JzVH&G6s?G9$%+kE~Cy+37RwXEpM+|LEO z#5Y_NjEG}={@g--p0rtxgpHaicjozdwxvp&D_vLUzPI{P!W680p@Z-Av@^$KYD#W? zy7}XAjowRXqIcyeY?#92sl2K9xnE#f^ZwqI&$vWRu$?rUSe&lezbv&fY|)u#U-Q0k z-QjNYNnm8U8KzV`{i)CF>&~C8^Zx()+k8I1&N%P(wzW1&+tphNKHR<v-dk`p@9X`g zH+w$+sxLlS6?Q+)jD)qP3JwZ8)t^n>m1MZyW!LlrOE^-3Q?f1O!=@ZKbH?Z1?s-#G zSIuWR7O4=eDV^mit1#K_M(pmgv)QhxUDwyg$Ggpa`R(|VJq)302JwwK8-K-|Wt;O} zUU&26&8g?LNXRWLySQ@h?Wx@NUgO;NwH{wNeOesMoVGb%&wcdBOW?%m+tuIS&F$E_ zYBI~Q0EL~UuQ)oU7G(IGl@JcKUGL%%S!Z4LCSq$=sNe^Gv7U$1t}N9Q$oR9E{btF{ zs?Sp4+qTu4Eu0fV$~wh4OwwjKCuTqVTooUf$`q_T;plu_gXd;}iK-lHVt1RpPTaRp zEO@gxPYbBy6S*mMQ(@Slp9V*h&+xpvzrQ|i^ZXOjb)&akQCoE88S4t8Mmwh76Pt3j z<ZO?5Q|$eFbxu}$ajlys(Y-B3CT6ZDqDOAtjBFHr``tKprdOlRSDlLddwdmkYgS~f z4qtz7XYumG1zP6&9C^JJq*ZRK%uaQc<-2Tq<B#8*_n$J{XIk1k&t75I7^UF;8g#DC z;xxvIshI}W8}nR9SRSXafuS*F!HwPJ`G40fHfqciI`Qe8Qv88y1*g4)C-kMyGTXP2 z$9uuti1ej%d4g^3&73)twdI=GqBAWo__Eh$rn_=(X)Y5Ni=0-rY2xx9GmK1#?rAwB zbh3V`D){&J59nU573J2vWnHYBW^7)PdOPyb<P<Ks?UkRO)&BnG`|+BA2@^9{igJpz z&%tG8Ep|*lb$6zppT{`eCDwOJ<l2Qk2?dRbuG5}&-rV!=!rS6~Kf6d61M4}^#w(qc zp8omPhX?OHS9vDXuxu*X+_1Svd^7hQZw2oR(3KvWH+*e55X6=8(b_fqis1~0L#!%B zr)Qmcf2UX4Tx@mAt~Ymf7AN}ZKIQtZ!*p8dLZ8m<Et!`O{j(3BCG<bqPmcIH-XUQL zQ)RYc{)}qRipV&JuNQuDr7TR_S#`B+N%|qKoSL_{wsMA-@SH2RUuD0LDe_h1hsbZ* z1)HUdoDPf0gv<^pUvx&T<ofGxmpD{9bQVr8UAHl3Cab#lS;tuOr$30_pTxqU)94Tv ze`i<e>!$dIm|4@!Y*SUaQwq~MtIn5k`ZZ7e)3Ijb-s<n`p7f@@xvV?k>0H-+lfLiR zSPoj9EH=$oQ(9$z-)oJ{CNo^0@}GEVXVsJE*LZIJ%CDT8XPnrSb3W(NE>q(B<PHr7 zgt%1}p8WRq_V@Sq?Voo~(E=?u&^fB(QCT+ahfKu7es77z$pxHc+ue0$Iy_epoxl5# z|F&ZvHp@-Q$UN9>@KOKvw%q8gS)rL``&T|a9J^t;w0g*b$>H1o8Jo^licUWGadu%w zii38v4+*2E3LA8o<~kU!tWo<?d)@PWnfgh;zx&>8dc(vY`w&#p%$Pej_DuAn$@_%A z)-Pg(q^a;9Zf1Y%n10&so^d6abKT9Y+1G!4eSKP4Xxp@sw7#>Qc2*^I0*yMKbiP{U znM*6)R-BzQ;r8xpC)2(x&$sj;zOBU2Xee@HPvvHX?sfW2yDVH9{WM&}ZcF4b#zsA4 zik$Z86Hnph?5rhBb8D>5T@tO!I-C8&*x0zchr>JO%rxETSMAHr%FI@deI=#7L5C^w zM&!M(S?3?c`^-smo5*`3V{=|SDFuu{9+PMDrrO`%Ky$5;_nv>buu|ki(Wym~64URP z?f$og)vB^m>?hyPkatPVQo@Zo=iKb(elsd-b<hVL+oY%VHK@!n@BYT*<Fib&Pbp98 z(LAeXRFUiRZF=6Cf<~RkI?t^3M@*{{`}3&Wcb0Cn8!1s}5Xm&xf}688?8oYD+;VlE z>nFFGL~6(9bGj(3pRTS^^#9*q?t4smDh4i%I!AR*SiL%Er@FzQ@lTMP*QJfN)!#sS zMcz3p$$x)$*ZN56dQH$Op{27~W7a>{d9U;7Xt~1ev+;*a*N`wZVQ`V@q|Ma&iue^r zAKf>a`%7$-$EJ`aTC-pLUH5sbgZc%Z3rDWZk9}-;!0$x!hD}x8TKujG-B}ueX(zvL z$-TWTbamL&xYB>6OzF=m<TR_U3cQ%JvGh;4Sn;$k0iQmmc3bW}eR2Wu%}oxU`Jfg9 zQwQiiXq6RNdzQX@%q4Qd=tR<qNhc1?*mpJ0g(a);>}>P%=g#px-TGOyB23~_15;!| zWLjj-*IU7A23(CS`*~EIgRhm{y16N}+hH@~_MKU$wJ(^i(c!M>xb2v7Q=?BOR|wQg zCa$@atUbXbG<tj9+5PABA0$=APl<iBJbjn(%b8V`r;e57zq;YUy6MyQ{QL7xoKn44 zC1-w=Dbg=8gzxIacQL)?q8=4L_SODw+q#ow7O!`ZwX?WHX+)&eoV8ExN57~#w}be* zIXTwIG+tdDUOwq}$4-e~+#4TXNLaRYa*(?4-lDLr6NO&rPk4KwbK}(Wg))6BJ6}6b z^Gz!Ky!!IaTlI^7mT|HOiA;VmTQN_mG0pkNl`Bas(-hX|+&!JBw<(9yPphB!z+h4H zQ+OYtCh8scQlxC-jPj)EAMg3ZEYqL-qV#6x?OLlnI!q^RwiZ7>_xJaA{m0wBzUUM< zp>#56;;Nj;Z!6osiAU@%%RQ9R_IrBte22{s?J|_M?f28`b$H%?gQem6#oepJ*52Bb z>Miy};P(Xf)YB=Czub@9r%FQd5$JHZx67v|C~o<A=^2}5^L|`<?V;J!l_yzJXBkDt zP1#z^spGbw_))5V=RApbhNcVGrb?z5miS#ix<>oEP=r)t%afFye1Cu3+M0cRneS{V zXN~1gTi)f}mD6sFQ_mH<S8({0(W{&ZIg_pG)^6NZt3ry)W&|rd^qy^=e=d9G$qA}= z&u`i@OZwY`bS@*oMJJ!dY}68n*x+y}M77nc$(&!#W{1w~yUx>H6)w;9Jb&eM@U{ng zA0JB<Kfxq-^x#yF`MI~Zt&QKmPcGq6$tU)cZ{EDon72cxy`f#N*Fnr@ny;9@@)d1v zozpol5>q8Z=FM0exIT`Q+K-_zk@E@fpFL8yIxRkDeY|l01aD@in(!NgHLj~=nLdkZ zFp8YqX!Ip_-N97x6I;r7i)XyI3Y>o+g7eAw&9%S3^(NIn?Vqe-dV5pq=~<@PuN2ka z*nYI`ydYD>w>7ZGX|}iigw~6k4|4x-b4GfAGK=!B{X#c6Zt{JNB4N&ig+oAMtHYrM zX=!QO^6%f{v^rh=Te&K-<Yj!f>|J4JkrjR#kuR7uX60Pr4*ks{rgOpa(Wb<s0X^?R zWHL|B+~E`dd_(L9qXOl|PJt8ig*#tJ-fi=Wy6UaJx8(9NU*29D^JpKRcQ2l(uXw7{ ztkd=_ep{qjq>Zv~$DE`0>++J<{vsjk3V{1-p%WJLsBH7N6M663ncd5jYZsQ-#P2>k z!T1A@J;y>059Q{=LFYQs1r;__G@d&d*0=SeP34zWGJE{)9$jCl>$AwgZ<WeR=~9oJ zO)hV5Y)t<9>nrafzcrEnend9b|5$tGvAOWvm*?bny}hwcr(b81VCpsPTcGCJzhilC zTu8X#lacAM4rqt(o)7cq?`fMQ(R<E6iP6elc*^fJlbhFEe!IUvIi2n6zXxeXXA0-B z)+#$BL@-q@to{7#tR>4NMQ;Pw%G>pt+==g(G@o(l(3iM&=-Rmwjwk0Qz3B^lf86E! zo12@{LB|4{=jH5v`hHQ$W-oKK7x{YvyM3#E&phRmvCMSx?Rg(TA+FOI=x)(wc=v=- z{`Z5T#JBPr7#dd!zF^6Ex_|DCUZKNN5B=|Vd;QVAxUFJ|Q-AdT|4)BKYA$D9Y8-qx zTLCmGp}-kqwR~DdSKyI=l1EZj>c!UK=Q^H+Y-Ul5QZRha$vW%v`o)R4H&j;d`f|y8 zd(O>Ee!16vy0cl;pU`#uaB+j%lDR%%|6I-;dHVk0H~WPXI?t7)Uvi(je2tHbSn;%y z-Ri=7{Y&Q&-#>ts#mgcT5(6sL?ez~ofBJ`I?o-{`${Md34(pvdm_*ktXw_?2baGim zzr?Le94W$Q&z;kI`g8J*B}ZgHDdX}o-|TB^GI=&XsV~v`X2m)Eb=7m0b023Hyex}5 z;ghOna(ULt*i#k<zi4sac;9r)?$bn)U8feVp#N4qC+qdKwUzDl-{0Ns+z_#e#rd@8 z<_mRs>I+la<XZw*mdKtq*crU$Im@wN1xM$bCEk*fS8o2Ud^FFtT4?%~!pFx#SBGsa z6tW8WWdF<~XTHR`9w&t>a}(}8DDS;@Dkb%lQQ^#esgY)p>t04zAKc;8K(Z^B1tola zb(M4TDS!1ZI*s8!PyYTtcmC2dwp&g(wE3~k@!M{__(Z+6V~S*Ko8{EY=>aTit_sx# zzYR54i0!;AUQ^xI;kP4lQle_j%GJ^8eCF=%Lg7yhB7Z$t#@e4}lh2bN(JXms&f&d} zDvf35@}$mOkosro<fAiHUrl$tzV;z#yCm^bHQ=U5hr=RfEBm=U_Nr~#t$rcl>;Ipd zsj+r)*qZBacgERkKP`FizILXeDGP_sG>4|1ZTa`@o^Ra1!Whh%>g5smDFsw1g!gS0 zYP@aPI;lci{gTl!2VKU~Omcz~Hk53d#JZ~3uAKMEt0!vQ6*rpg`6fknMNZh8bYCsI z_@yq`erVDo-qnqsf-hKRscK|0GWsg-QvJD2=*yPu>+4+XRUhS?on=~U5FYj7<^#tR z*4)3pz9#adc`#dt{d}<L!=$x75s@=>Na&@aME+^j2}@cwZ{GZP!r4`_JFjtCc~^uy zTJmXg=H+FU&gT#9NIcv&DQ)Aq0}(=|ea>v#dA9k<M}FU2V#oY)zm`y|_=F85HB3|I zZ{$+dE}q3YEp^(_YxORqwK9-GDj||Z=<Jr--``jgr_NYVsHdazWex9aoha3Lt7AQ8 zt+o1;J)tNsb9?YQ9fi#6EUXi^iu+6p7P~s9vFL4OA@O^HQAfcVQw1aTR+Tm_DSLm< zcHYblw;X+9*Q+F6`~7myzx(xid%s-rYg_-voOA!F^P4_ATey^2b4uUR$x9DEp6R!4 zb@A^cP!l0&YO12{^bOBRXbPk3(cMtdm@?1n(z?IDzi&U>vFxiCTlAwnRiajoiF^0y zUJsuYJ*_JwwflZa6jETJL?eo6m@O%THYQ_ZV@`!#f4|*Uw_1O5OWRT1zdJVZY?9cd zvdQ3B!OmAg<fU3hCS@UyS*zAYZ+~}h@9zf(o4w_4KIuHII^pHHCF!r8YD!-`cS(ml zqZ>~OMeMEm`t0oN^z`(}XR~%bnrBm9!Zh=mPu?;MVcSUU;CxQhm?YYsh@{4uGiScN zy&bgd?ZQIm#oSewKD}T86_P$l%ZfV1`;QBf8`7qrLw|gGE}ffeUH<-_?(Ul}ln#mA zELx@}JS7uU5-&^pDak>!OVM1BtUBSt(zCP8)u(7mZu<8A{{9mOG`8zID7-m%UL-}y zWpeM;cNZi{sos$sqU{UXh^YGL&4Yu@+#EBCyyY7wOv~65uzt(c)I9{!7iNlsiug=( zfVV0=i_3n$-QI2eTG;X0Pc4_mS1pskb+20X&DUfWnv6`fETDBA8&<B3-mdm8=li?6 zoXc<Rum3-%F+4a-(fQl~<39>5N(zZDo1bZu87?dwJ{u3by1H68ZR&i#7m-ZsKTTFx zbM8FLQ@hts6keC?HtzbfUD##X#nc(WHl1z6ADzR2ns^&0a_y0C{r3Og=E~2{gbrNQ z{9`M#_BX87`hE6&e6Ee2tj1i)mlI6=NXh%qm_W4+Dc;GA+ED|^PEeykHyU)KS$H%T zjOK#TTripoMsvYvE*Q-Pqq$%-7mVhD(OfW^3x;Sec<_HyxxIZ<=y&-8|CzR}i`ZCT z$StO#qSn^po7|)5>pW+|G8Nv*X1tBhZVRaR>X?OkU-epe!EEi?wY)1@!=@}+s~Yr* zpDU@;^neGuK~sa6v6X>wfW)%<!t=j8d180orucbL!np_8Voz+o|D02NzV>eW`FC@j zhj((hBKTvyJrfIuh)%%r{*}a^ONu<Em7x|;u;$1$4grM^_tWN{)gh~hX|!T`q|L%1 zpb@#iPd=EuP`}`_;7Ls9UO@$i1(E5--6T)Jfd&j0^fi0|9Z2sbw&L>fE9B)A6JZU@ z@T7duX>-?Zo>3xed~k)b!d|BahQ>*(ufBk0(a3ShSr)HzQ*VG4YR@V)+YIs@>52Ij zhsS!*nLH_tR<%C7WQ}S%7&lHTR{iGIz|crZ^0+jbJP?UsG<l#*+%#G-jV2GI3_hAX zMw16h2%r|+qsap$a7Igy(d2;|0;9<TB?M3dXSDP{37pZ=V>Ef7hQMg@KnVfVz!@z) zPy%PP^cYPZs39<#JWxUaHE=+shmkImva&Mh=)C;;-?y)>4*&k`+r7X0_wU=c@3>s` z8<60G2M@O7ylJ~vV)1kLLi0^O)~Zl4yjh_AG$8HB<~g?2-)`UkS2lP0*RAVobyF^+ z9dW*T^U1fjw;u=JFT0()J*8n?U-PV$Tu0{jGNL*gkB^Y09LgG3rrBPJ?>|s{-q!r8 z`HqT@kA&6zV$S<=&(w|&JJCI(@b-*X^^#wahhLEmz(3^ql{GEqM#{6i9}nB**Zq&v znhH9A>czqJaeH@VUS4+m-}mo-KA-mwvD|w-zp>_KpR6_Lpt)%!2K=8cd;hZBS^e~X zQ$Kk&OS0Oj3r@|fKLfh(sV4jLv$NF?8rhvvUjF<2{{N@x`)h9JZZFm07QbKhdTpP- zp^eR*%a?`Ibt5(;<m9YLe)=VD59_DY+S=NSmU~tnJb3V>>fbqcY-dR$#>0pY1Qw1I z@gH+sLY93uJU`d^`oBj`Yu>!Mx%sWMb@8(^*Vabgeho@l7cXA?_RD*^-r2d<=GVS| z`xdvmZ0+8hTkG#I{oFKFJKQb(=cd`;y1SmSkry5}S@WVio_wxZY?^&-iN2o8<UTpu zTe467{QUg+`Fa2J){mg$h`&Wnt+~0#wfo8GTT?g1Ow>Pp$l|K2)_?9Al6LaJL*|5r z!PPbGzgBYb@biEF@@2{Tod5s+mWpu-YYT2x^`5pR{rHp9uM*N$LM^)V-})GNo~vYC zHtTDEeQ0B2W8;^pYa=!$)zs{HrUW|L)T;d3o14we%~N;2{kdu5#*JRSobucA@5{|s zo%7(@KLypCO~2))>Brk$mS6ardD_oh6LYxpNn)JP3rJh^B<$AJMrQU)+rNR%Wd3)# zRr$=bGc$#kw?|z2`T4o_<@GT;jmqEMi4Z<#v3h>|YMs)*^3Gdy-|YMv9=Wz~UrtKO zlf(S>e;zdR+x>d6xLaI5Y+CL&!#Bn(ch1eRyc}hg^5xZ<$@AjHHq|92m!_@U>DTz< zwi!vTgeyLwS1|V?|7CU28@o!ge_aFJ(%`xLNYez7*KgnYF8}}ceSLmy^_LeH+2w0K zfKFci`~CiWv6hd!N?*(Ue)In4^ZEVWZ*OgVebHS$H?|&hS*&l!(yz14a(7jI&5Bu7 zYhY!ytN8i3rQXxS%07Y4l6!EldF`*2&rbWzv)P$=xXmQ)dQ{E5J(ZvX)6dPby}hsZ zi<d^li-qk`=cT7S`uy*8{Qs&4jqF;#dE}?-Mt?h{y*_4lnQp8~PkUQi-G^rRmeNB? ziub4c#ca(Aoxl_C`zko{@^MYhCC|uDKq6lP?l>ge-j@4PJ9>ZJ-zj1@H>dlbXl-Q) z{=uEO%-`<k64Sjx(cbxj$GOFHIM_?KzWV*^*Q2i!CUY$>FTL;f_tylMZtZfJJGI~M zKD@J0z@hto+5H2p+~Q6Kx?=t&9Lqav|9m_yZ0lNIUq448@B7Q;^V=RD+xK;C{?Tq( z_VPQ0?jm_>=d8P2=(Xd<-$J!p3tyYEswI`r#b3VS$Sx0lv1Ym1OfeO^vA4SX*Q~U& zvqbwYWbKKXGeeGj+Pe9Dhi|5TbXYgxSXcbjlg?My{J+>=Co=u5(G2_gf3L2tPIjEm z+md|x)_I+7VeRG(eip}dXDw-Nkm)|$q^KtLO<;YAWJ^F?RYdfzb1s{A+4${JeVoQ5 zym2>qOV|tkGMyEYPrE8^QTwapscEalCD37jc6M>~6Th9(joubAE%(2~q9AjV_%O>^ zYipT5dineN%d{VKX<Q?q#~r_P>f}D>IQ=tO-&aoNo}KY=`MfGEy%&Erc^Jkvcg9VA zjU$8zOiNwYH;A1%@%;H(=R?^K54FC{*J4?0mUBZODd1&h<kv_yH#es*ntx=iN;J-< zY(4i1bd$y5aQV6)i7^|VRi=D>ZOyi0nr?L2j}H&K#r5O%)%^VX{eJzEiSCb@&(F0s z@3Ve(x~;wa@~p7J8{ayG)uUV<PCWc5``Vh$*IU>gPCP98_*`^z-|g(H`FD1Fys<HP ze%-Ik9gjagKED6^-uIzmd;WgAy*_5=rKt3r932t%GmVXn*6;TiudVrdHT>|=51|oD zipu4UxhTjCM#mg<OeY>_WM<#Bf9r%rRnKOo_sQ8x3Hb}_8eRN4p~WjX(tDcD%L=2Y zdo__ej)HDWJ>|Uj&!^LGXY=q+J$64T*y`D7r(5ebJ(y=(eM_7tJg)lfR<G2mM-kax z$7>=z7R|LRURHbdlw*$Kuj__J)1=PLv#rj^SW&APzKJ{J-d3{f{7vnSIyV9zsN4Va zJiEQ@dTe<s^ES{aB_EH=m&dFs`gm!ncjmsFi;G+z9@*mM`(sAhVyk1jwSsqDZ+G6U z)xWv^|G!gQA0NNGyj)vw^EX}|KEAN5T{;qB_ckWG?`kaA6!BDI$G4hDj_I*G3KZXI z$+qmc^XO>zWmbMUn;BwTj@|XW^*Z*X(u95D$>hyQ?_r8$QV?6I{Nc^!^L}6No}F#} z{^j!d^E5=S?s~c9$!WRDClkL!URxi3KlVYZc$~-U+n-aTx99nC%hmmO_>Q~H<;JC@ z-jAmgJi2jmvifDsw?8*2yZ0?&om!aM4!SaIsY1;Z{cQ7{oZ*k6$*(qqA1USuvbMFg z&8zuz@|0t2>AjcRa&J2=(poo}FRyN&j*Y9ozyF=GiaDV2KRQdEpP#?|@!?CF4-agL z5aWx9-cgYF>+KTmww+U5Zk(HI{kSPH;N<kL-@f(r_AX_eTDY|C^Ru&4n?3~YTXXk` zT1=-s4>NgT`G(0{QSOo0TPAhCIiPz>s+g`X$v0D3vMz4#t$kO{o}V7NC}MT^`gt0^ zr@bqCe607Qr1taabM5Qx&fd|D+M=Oy?$S=#<IK#=g$E68Y{?9c3cHzd{PT%jS58k~ zYH``x@BSu3@*3Q6jW2!scKojY_j&#V)7x9KudfPSeW@q(`1U<zZ*P@toIPLv_U`ih zU3)zjN3XTbzrWA++^Q$1fBpXbI6U#f_3P$VR#JU7um6=lJ2Nvx=gIp^AyKOFWgi|K zEZg<PYiZm*ouf1F75=(yK>XRt$OYsHZG*ih1<TiS@bK}yyS@GWzTfX=zt9EU!!}jZ z+&+F=?(J<Q)xW>LU!Sw`@$tL6%a2D+t%;Pf?KTaT4e_&G{p9GA(^mVYNEQ~Z+Rs9M zkHO`@lj0pG7cN{F|NqzZx9<(-yfwA6o7Z&bPfesMpIK(f>aDjQAMZbYe4@Vh{RM^P zjXyRU!rL_@F;3`Ru)X>4_Dj(pPbT|6J3oK^zAra7r^oLoP`rE9=j8OI>|J*k)ZDyr zBVvkYzBq$A@4?Vl=K1$zrgt?@)eb*a9$48Dkvt(*f&5;<2|2cn30eg&E-VDKvo@ap zcPJqtLE-PVb369$x37J<Iqj@f>8lW{!eviR->ZB+_lLsNg0QC!TLQ}N*M9$dKjh!O zkG=UhcXk-2t^@^r(43j3efH91=NDt`OrytTyGvhR`!dycR#8^{f$Zz+?iQc7jTPG| z_;b_8j~}0&o_>6GS%351U$0iby`8szQc#GP&weiRzi0F7F5A_v3V(8XnO0a%?H^ew zayv>IW+6q{IctiHu5UhXcl*K4uyrvr_kH*Bc<c5ARA*LKRXy_6F5Ga+8FawMIp?LD zwYb}Y?>*Xk2y_X1so0x1<@jrN)7ffg|1<01B+C(>xXvt?ank3`D{uY1Q}(UDckf<- z+|3aAC6n~6Ykm~$I@Eh&dg!6ZsTL9S_4U63xW#mKRDI3bwe(wI#j93s@nexwS^ekR z$?oTBwtl~-_!8@3UA_2yd&=M6yKeuRySd-)m&V@wr-E7w_iWi@y6#H;y*)eks?`ck zb<fZ*Q=RTWLDrq1&73s1k7??Ykc#r-eX_43EH55ixNxDKduMCp*-xp@&&{3vqVM4^ z|N38-zodtq4C3YEJ2%r<U3bQpg<3Dyo@xqT7c<kozHV27s`K^2)l=WZ{g^Q=^qofh zv`1&w6#hC)evz_ylA3Ye_J?=Y6-b5uI`wYH<Gza*FaF{W>a5x-FBWDTzpeK7w-Ra4 zb<%3L4*&f8-1(oj?z$rfj~zcgT|a)FSWEL>wWzhFwO?Od&8$s57_hnS@2@QhN4rGt ziu16~S-Jt1OI-KqT%B?8@t5{Q5-uM=N+A=%6WrMS(~dlgulacNl=klD^Qzn0+h6DW z>r|h&;tX%Nmaz8EO{(70TK<GDRjXO^<g}B8w#$}Vrw`o$b#wA=$+1^|K5MRR8q1Wu z|M%VZT1Ve<@B4nQdg`p{@pU_EtJi8LPUg4$5)gI&_HF4!HJN{V&rLr&&(>N-cly1H zKiD{z=--+_R%2gb{Q=&tmIyPh5Wibld-n-!0G-a$$}OH0X|<!~=cj|s?EAkg)epT_ zdctI@KWE_9dGqE)NQUu6t}WSmZO5eTTwfnv*f??G#4Vq0Y)l5-b{M0@ck6M2;=`{; z_3I49wy=S2&Afay>aoN`Zug$n(x|C#x!WF@W?u^t<8gV*{qOhv|Nl;f?+aRKQ}o1R z>84M64sH$#_!+VC{+`O>r3y7`=G@wretzCJDQdLr^b8CP3@&O%@2U9MU;pRv^Lf>J zGS{~zAMX>$&a$`DIam91YWOX2{^w=7F*^*dZDA|FTN-Y0Df{lO(vLcu`wX`S$ONVB z|8Z1buKv%*f<=)rDfjkNCdvpUuGN-(obdPW-;H*BhmNSvulXeZ|A+gJZ%e1gbxF^* zF3*e6;<3`Ru&}U5KR0JbNVY-!zdyRs+gezg6D>^M{=WaeZmB{I&+Pp4l~0atdUE>O z`uO;r)fMX=$b8CMym;~3>H^hnhog7g$!o{-fZK#KLljh&toyvSwfTVBuG4M2(pGx= zGA=IKxN)P!>jRC<vZrt9xBa<(egD6&6?>CqbaZ}S-~Z3_nvYdR>b0m;VO<HQl!vQ5 zr+aZv(~X{Hmt1p0dZK>y<6iSi(Z@f!^b4CO7uYggyh)%_gxpd<s%I5;ANcyj?#$dt z2X1ao-~XXi-=w1Xp}{8ScD~Y`*V*N3E)?D@*b-)OS7+{z)$xB<C8t&yE?Md~$KvB5 zZv7+Ov7dt1@Bde&^V*2x`KDIWWXI{O=jYqYpVR4{dY3)>`ntCgdffdr%AZn&=Q3V@ zS{PLGIF0FUJu{i-QS6XwOzY&|EX57Fr2E~=mn(ms3R@HL@!ReE>pQQ5I#KE8=A7E} z@Xsc%eL6Z@)6dV-ljd+=*xT3FwrOwm_hVNNof6lNo0B2^{M_8#-|tl?7p4kq3a|fp zI{wg|%gg<buRqizt`{>S<KV}SAD7Rsvl1(pY2mpwJAa?$MXrZc7F@b>f1I!Xx7oY! zht}P=89%NB`<Jefmyy}?``zx#Qx8Y%TeCQHUAJg1NyiZ(V#SE-$*G2jbT1~wvs<#S zuX|tf+**-I?2_ll)^l^M&1I~%6+S*z`}<p|XF}<oaEsX2KR!NI%n;+Ve*OMEfBURf zZCUNZN59{%|9@0Gp67U%?YEov&)5I^d_Ar@cU8HMxP8%+6T3=ZA9~#KBlO4X*RQ$# z1rHS}>P(w<RldKc=gqyn)mK-Au4O&E-+P+Q&v)hfe}jgNo}8Tg_4-c1smuN5TGjk0 zD6p&g@}m0v-tw21mP!|jXK!P9^q-IH_KJ}Xc=fJA_2tb9<h8{`V5??3&YmJS@xvDH zp1Ai#$Ac_G1X#VGi)NEH8zE&Z5)3<`2V1+l$=sHkydz6o;A>`Ytl>dg*++tlHgUt2 z?!NIo--Jk+q?i^6TT!iGrcHLzfG*7(O&S~mqe%lPA2q%iO&W+M?`YB(O&T~V&e5bX znlwg}2H_UWXoZ3tMx&+1XsIz;Y9Qwb?4764QUf`RMoW#+Qe(8#K+X}Pr3O-t7)=`V zNg8BLJ`s*5>}eTCq>d^k9M_{kN7nHcqe*KtX^j?fqq$%-7mVhD(OfW^3r2InXf7DU zx!{j|_4o6)eZsag?ub^*b>vF$c8^}%yJgYBqE)%FTNahsF|J!NSHFShZrM5Wf>}#_ zcODgcr@?TNSN7=TJr3;e&qld~%}YM+dG5yN=Uz|KjpkWCpLO4Ix7Fn8w$X$?n(zm4 z!bdDm7>%aUXc{f7MsvYvE*Q-Pqq$%-7mVhD(OfW^3r2InXf7Dd1*5rOG#8BKg3(+s znhQpA!DucR%>|>mU^Ewu=7P~&Fq#WSbHQjX7|jKvxnMLGjOK#TTripoMsvYvE*Q-P zqq$%-7mVftTI2%3A0PYcZT>%0mv10{>E;0emTf0D@ypx&dEP$1#^apNsT_{!ab%u@ z$RQxH=D_BZn`ZH9sb)8-E)<e=@FpV@OPfN0LZn)%Sqswz@(%B0WMW~{C`j4lb1J7{ z>%!CICcrPD4|q=+X>Q&p)?6n@W<E9$Xe?Jdz2ppAkoqo9GI#Ad%xBR8nei(`;+GS- zX7sa4c}?@2`E^HHNiUh{v2h*u98knu`>J%Yj@-ztQY(0rGIL7g`B(1cq?}KP9EmR$ z9gv)y8k82RBautqiR%gu3)q=-JwXAoU|LBd*#W|_#UN5G_1e@&7yZZ$5G$<<pFjcP z{@QCZc_(Lc2xM$_SbTC5zx|&#%MNGNo@;#mxl-zWT6C^5xm$J}tXXIIO}l&dZtR~A zlleQFuX;^;E9ZV{&D^C+Ly=>Glw7eTY{A8pn`xVGs+}&|J%3K5*|YH7FE>QZUwWo& zWi7eU*x(Sj;AP6qw{LSl?(vu2+&tyx<TieCT_|ADc;M#b)ZMjHjBa23Fq6zw!N|nR zX);Tvx~68&&YhauYD}cg*8e!!{)q2q(!PK5+3M_SeoQc4{`lzUTjZTv>d?T@c#qp; zuFmd#`}CyL0=C8Il@}-fe7<i=B%e}hSjv`(WIH@xAj2f`+lLPYHJjf2m=ejidw22L z^Y>D}wf*`iN^bhzrEwu+)0=<){(bti>4cG7fB5RFh6^{mnKrkZ{p7*ou4KMXw`!N1 z>3U#B-tnmd3K#erjnz)e$;-z}|2P%C<jk+YiYiAki^&6$th2nQJ>42#US9tDUZmMf zpL-K@Zu>5J`r6WCqMrKMm6sdt{#{-3O>eW(j$U$;S&26&$sRrGDwtw5H_vRgR_1yc zmG)DN-RfS<OU`r|ksT5S5sl9#rFvGYUMiiHax>5A?a?WbWjF5bKb8L8Ncs)OC30)z zSdk2q$g=9{Xp@`swsf{!-#jD2&v5?v;$2C`m-eXLQb-NEvTfo40hW2bjz{bF-F!HG z|DV*44ZEfH|Nr;fT>ic|8O2(oBj+5$$Z0Is@)Q=mJm1b7AC%UtRXtbr!W;*+tI0~M z`>pMdzxlsPvPgQB?>aO4%{O!QeEytt-2Ug2$#Y&Gz59log0CcY!OoP(Bw=%NbJzJ7 zGp6i0+&MXQ_s*W&Q#xlg%=FLtJud&g{?pHbEo*NGNplKVEOub~x6fQIZ*df7?qBoW zrt|fupUw?fQ{}ei)RW=|3Yj0aJ$-qIKX#`7^2=ZHwnoYRxF)IJ6)a3jnF(#$ZDo=2 zofaD(FMfNbM|cnqdlI+$zfh^o`l-|ORLTPP+6JW^J+xus0ZCRqp3h&a_WH(_n%I>s z$bSF-YWn=zvSX{CT_Gc_9+(Zv3$`{kC909zX0NrFW8}TOtbE<4$Ww35UVYuolEwMw z%X0g_zwiH#OLgJ@tiX9+wQT#@`%kB)hlhu6)$4r>bv#K{^KzO@*V(;)|NcFDbj+-G zHeb!U`tOgc)XZgKyC<w$+I)34B(XUZGtFc+K9jyVGAQt*TPjbO{B>sg2Wgu*-z071 zC|bdM@6Oed6f#Pz2NjLQs;7laUWDCJ;+<w>y>Hzc&jn|h{4+NlnQOFV>B)0O((Se8 zg=SK{`+mRMovxc%ESf1z`pF<Kb~!ko+~mUc?%lg@dpGA8%`DN2+%~)1<MHLzM@#*u zU;g;YajJ}ge#obF^B3*xW$9wNZ8+PUzwXz|<+o+GHE!ZrnscUmOBwst^Rhx3ae30@ z<ge>oCbM*Q@7STSE!}GFH??aM`<7TA&0F?6D9u$;n$tupfX7qS_u1DJ*O`5Je}27Q zFTGZYU7hq?wO2etBXZiFP^VC5k7;k)jN*J|hMvD%IX&{d`wG5&UJ2zkzwT5w`ZRFz zoJ-rhdiCn?tDSSn@eT(l+3ek`%awmV!Z!KpHXc_ii}~j--&ArcSjFuzQ*>pn%z^_& zJ9BQgEU;A<J~8{H(f7XNj~T=E>5-lv8^by0Xh%+yxN@?IE#3a&!!y&T++3}7?Hmgq zw~yN7qe&a%)}OcgV7fq+NwaN=3s-XdmG1?vKXu7SCaXcoWRK~yXU~>(m`U}1a+>L= zdb;ef=<O+y0$mo4+;`vod;h=2;(Az4TQAEljS1I7Qu9{YHQlpklU<n0q&aEIsdv?9 zjnw}?<gb5`bTiu+mlH0;Hr`o#<Dbv+%Xjuv{5t9UxybtQf%9pbEo=U(TFd;Xs+$^Y zGgnXkQp5kPsdr-ib+IReMssj1?AxceO}+lW{un)e{SyA?+ZW!LZp581?aS*RkC~#` zmyWIDP7yepw)tvSX!#zCTMjHnhRZ67{(p(A-)*P2Wj?O9i^XDxyd(8<q^iBD_e$_q zm)(BU^ZyR-O54_p^Co4yd?q<@?kwzD@9AF%*!1S%L&r^Twx0go9-O9F`<9Xay?*Mq ze-9sXqznEy>0h_0x;x8gri$>Dg}d|H*_Ykl7WqJj_5BiDC6~i*)=vsYo}8Gp-Rqmy z_S(q`(d)10?t6XF<@TkgB{p~Y51CbMd#||q?fwN(Setl_4>?Sxz)CrzG}pVUTjOF@ z@CPpFYG~wr-|b#;l`kmGHA^~LV?*?f+q=#toNT}Q)=oGh>H+8$8TI)!mku#5^2Fu3 z1Dq^H>gM*FZ|VrHy0hAA&Z)Pn#NVH5(Fl0R74>3UoBECjKOD`YcGh!~bWV4D?B+gQ zRw2X@e(h@a^}thWP9!DAv(95{<!3pkH(~eu-)YbG@j3ie!ciDFi|yF8YnG3ir|Z*q zZ__qg{$ATP&s1SaBX9l$XWJ)Um&>sh%X1<Ybf!f9yZ7(iyS)3>r#FerF?~2sw`Ber z>xJA28$FohzU}fqeEQ<1s`*Nq^DeqEEf=x4sZp%Nv|cn~{q@Q%&oWG`o^}-IVKrMo z!C^sW<8qV8dt0X7W?a9wIpP0z?v~o$vo_yRE!SW6vZ=fVo4z*93o)DCJbJXq!)mUd z?cuk7y<b>5Ni;{g@a>xt8F=j2I_@X`=5j7M#qvnuEGNgT(%N~rdc_i(93FW;{%FyE zKSpo*ycxId{GC!RXE|L>Tw}VXxc8%+6U<@vu@!n1`yGT&ZhB%Tls!qO`gzii)%*S> zom!J8aeVigd-h*s9_BL5+$6N3MErf|=jOTRwI?iy?7DVZ{=V6h+HUN5fn$!3g5=Vh zIn&Hjo~FI1%-6H{eVe7|VbRYb!D3DSFf%_FZ0+X8b=;ujx_7VcsT}`s^QT|7g+7(5 z*WOcUaeJSLvz~8kz2@emmA7w9IFMp=@-ch0O<n2Q?@XExrW86eA4$aKF;Ekz@jBO& zeOc4qiFdcAOMm-h=Bt;jm#6n}pY)6Mx)Q&!mdXp#nIi3cxmLalzAhAFHAiQ4^{%*e z`PW}vd3a;`l*sdK#qW0;OZ67rU!G^O=~_gw3{$><hvD)i!8auL%&+_Pa(&&`)iO)I zGe@%HaFc^K%er;zKGm(Z5jppEx%r)EFW!Y0?JT}n{4$t9SJU+@$k`Z0D5%TeG41Kf zcyn{}qkd1{KVQv$bJy;a+DFs!gVSzv96lbdK7Gx*;2(VLx9sv7bXnp=X80{HUH#=q z@`aZiGGY<yug|nB|6W-ba0BNsM8#T%yovqCAK%$_u6KF5_UGNJzu57+E2K_H^6*?@ zu;<pBt<0zXVJi+wVizn-x%u^LX`tH1Wj6n^Exa$}zRT1*vTsVHUi{rZe$yUp=F1n{ zXQ7c}6QuBT)^_WiyRScsbiFMlYEiW02F`IJ3xx^SL!M3xp7-tAi&guYzdI<nPO83h zFS{(k<fkY`05LE!{T0Yi0`)5uBCoAo`suLd=9mjzcPARXK7OTeR$LDE`~Lbr$#VP_ zGkwBVhaL?o(O{Y@W^q=cL=0QD<PcD}Al-OJa=zd4orbSG+ve_bEn0VMc}|dxrsDbF zw`b=pP{tM%Ijplhrro`NKRzx_tW}tQBCqB3sP7Y>pJhFjsui~{=32}h<^JL`c|mEe z>C*FA`c^9a1`TJ%|NAsO{?8+E|Hnt!aX7{yVZOsX8`Ifm<>ckrtD_x{ujXDdCnzK? zYg_(>o7nDVbqHtio3FDuCcgIMuAR)!l00XYrs{m(H23V)ZOXzgdJi;C_xn~9bwLw{ zeIKG4Po_+I`sHle<=MNLtu8q=irh%r=&^C{HoLd}ShMeEt`PrePjy2eecEZIAtyJ9 ztt*nhyd-8v?db<Q@9ccB^UHCW=QC>eoPM+CvQzcBI-jjK+8G+v88tV5^NEkbG3J;n zAkphqx%x`h)~YD)?~MmevIJFV?iWdvKGtN0wdtQQAJm-b?(Tjhx%~3V^n-JAmhRdq z{8Z^#keGg<-d=E_x}EdSn{<0&_uM=k>!N<vNk+H7Upl#+*X=&8>gKM{jbo>-y)Ny~ zXMYjZ&Jxtsly-NP^Ok9t1>gY(mR0JfCs}%J@YuA*S^LKOoLAkNo4X>N-Wy4u*z={( zTzJAn{p#ldU%x7Hr~L4kS!=WL1`e;=ik+zaV54=JcbVdS`OM1u!E-b(ie&Y-FI<Oh zocID~quQj@?c28>-Isqp)G+<Zr=<@V&Gf~~?dHFa{_B?*vgcP&+R?yk*Lx?WGSBfZ z*{R5=xq08Y$-i8&MJFTEZl=j6Q+CFfZMpGo1IsGzB{9KUcALJz-njEqF8Gxa$>ex7 zJW_T;D^vUA_@K1qk`MM;cBe#gAK#(&)j>gX^TmuSvpb#KaSX>E2z&7ARo2FckeU~% z{CQk2oZ4A}c4<DCvQf|%oBJAtIY7zn{FVH?ye{4I^VdIb4V#oI8?|ZO)hoHDa^mY0 zStoB=S-r0Iy{~rIvfj7i9v>@KrK~l4WWmzKB$*_cG1F%MuUD((|Gsd4J6~+e1k8v8 zi-@ppx??;0?6udWg|>IxnC1#YO8TQs+p!OSy%)()iY%+Gjm-(2W|it}wcY2gOY`=h ztw|G?RDcFunD5V+sdfHo_97|S$qbGCtYyXznCI7&;AoFpsT<7o3txTp`0D%H1YWc| zoU(Skx3h8OL2M<@maqj?kOt@)dF@NfUmkrpCGynDFyn3SeZ3EEFEhxxk=SU{k#GJs zXtjY%J454RRzCiq{i-;cSLxy>4*PxH;bcCwFaFQ=^yREUuQV&x8(aTAvzQT!?N+)0 zwvlD^_4SpNktUM;$LH}~e_8r+ne_Zm9uq~n)m^7vT6MKSXT$mD#hROyN^hI}`}5rX z|DVt2FRwb8vgu|{*42i`0tz4e8n>Mlz2%H8x*3^RlqT%%t=#m~`uc&|xeo5EL4SVd z?U*f(H8pMUe{kgFrsKzt_pLja^{taNNb9%Q-lb>0@jj2syRU0=a#Jkte9kQ{56t)f z^wn3FpNl=$H|lXciEPdD-2Q~GDQ!-;0<+@bh24uIW@D??EjBvbO^J+SEiEtK{(f%i zw2$X^m)yC#Sw7;6-^Qg+f+|9*p2w!C&#UjViJjX0T7iYbMBQNaSv@_yKADSUxW>=V za{4R}KChMYuCGD4JVc>c$$9b4!sjQjgg-|~)Pl~GoBQnbxA)w?So$o?^!I^9<y`)! z)?B`Pao@4+tC&pN7#eGtX3qb<H@oQmi*2}W9uE;&QT@L9e$|e*ELOS?GFOW}mubfm zIv4mGcddT?bM+^eYL(Mgdneslcx?X+qtkq$yOK-)zPTJb_4Nw{7LGYS2^%Ax)Ek_$ zE6o7sCd~4h$1A}^N_YC{JGZQFR_zcLe6huW&AZKq?c4%2uDRF}=YyFJUqJ)$Z#M_$ z{NHICxOR#E^6BZO`#2k?T&uCWFP`ENd2N-g=H^EX_6LvY@Bj1Z-@kpGj|zR5SY`>I zxMMxj$Irmkf)!iqfrUdrqW}2ntE+ap=DVw1$ZzDC&!c3_iA|}qutnjfGt7^E?Y(km z(mh$ede51qRntySdD@oX%{D7dpkl29+xvZg@|QnX?ZwfFoyMUe^7+S)AGe-n{}xvG zu+gDy(v(Q=G&5|izYAMHi7QMTRMh3l^}1Cqosx3%xc8=QCR!VOXD<EIl{&L%ZE5+- zf;np|%B1hBO^BA*de7l{##>7ZMyB5^MlE-{Yi_f=h{l$11QZG!6uz@$-~D}i`;lDh zMn<kD4;z2y?U0w~uftX`ID~_$w{`2+ch{cxdR(+q=7H8~z3pBKt~>HCS}%=$?KgQ! zWTDWC9fpQi!>&#}CZO;kt&!(>*W_krY;~4H!+{B`cP7<+F50UvWD)e>0PlB2f4g5; z+A|9-GnGzG<>%+0l<K~2$E~+-nApYk1|QRWrlmW@C_Aa`Ozy$2Rk2T*EIAmNbOlc= zxHtVzZjuxz-m#SsFXlVEtF69~={@bQX)*_sWS(Tn-`SpDIxth|feS3J)K0&9|6X5T zzq{@6$BL~{yoo<U<acXKc;wS5=54Mz_t3ganwpyzeYkDrr#87FY^NTdQ-i~57Nafc zn<L-3{(GBW?|t~5nd=WRY)OfQgC{t_ZvO7pE2~oLdnKD3*kar689bNSi)E_n0&`<9 zcnYF@L)NPPSaFYqUNcLRilTMIV)f15syjTWX!JYdErnwO__^qb+<j-$ivK*?Y|AOI zLVE(^j`w-LE7jT4u_e)j`3^@@BIh|n3$)6E6H+4Ysz$n7H#&5gEsd73)BGw@Gc{c< zZ~nt+2P14I_Wov3N(-|*s8PVhlq-D0T>S=?NCcPcZi^@WcF&EzaedxFt`vhbk6F{P z#ZbmhP(D9;)OF+O%P+57e#o{v=}v#&@`m7JM?d-9^qwi2I_vh2qvG)?zjp1~Wwh~2 za?MNDMsp4m^TQTK*u%LbMB#hCSocxsYjbK_85-SKpM9=uOLtcnJBux-^BcQPZhB%Z zv~HqKcFE4G2cwlfB%NC0b?4;nGkpI0bv4<}DmXlN!_@wq3r8K==*Zb~{IS;dSLgQq zTFb~%r8(i@Oh>B~o}TGg>W?ik3-UI-`Sxwwjr(sSf9-Af54r&L|G)2-PqW@jpDPtr zKfkp8`+Ute%={6j7pw^S8I&e}UUzr+!E`1THoXtO@Bg>cH~dqvXhSPz0tSh+sZFT9 zeEMn8gVWD;`7aP=l3XRZ!Fl%LFVjJisG;w0o5gRYj<?COr>m#mulxOWGxwL>_y4~8 zVfO#)`ue+ne|^7SU;n3k_m1ZmepR0_wVLyPlF@Bhg-|>B;=nh~4F?KXivDjrb?1=+ z_Oj+eX5-0}OaH1bACBC6J(x+KE9F4ijk2m+7b~!IL+*;Mm;syL4C--PyywbF;nm;& z|NFjw|G!_a)A#=P^ZES$pXclM?YOn`?nBURmhY}t&)1iZs_)lnelxAf|K{=^<*y&U zEN1g=JM+=~_V(xBbe!uZ-L{jw%_$(UsiEWM<@&rD?7eLU)}r@0Tcda@=f>RUED2X= zE<dq-Kf6WpYs|!T;3n%PrEu-fQ)is{`n7bUJLmN$`FpIll<d5j(<S@!-R}2&Z;oF0 z6z2T;{lwG_yQA9<?3)tF);A@x@QCcrkDxnU^|qd8;Si`0I&tUqv&R#QSKj5otS1E& zE~qztthm$3KHp9^<F`Y@0pmuVhdfX0&U#~8tg&D&lPI{f-0L|lH(Y1`&u6nAh5mk< zU;jJDv-rM!`?T#+QT5+rzl(2|_nVojvA3c{yj<eh?lY6_7I%L*dTRr7V<Oj@>)C>v zAN{|21N-3OJ}w=x?nJ%L*QSmCI8!XXmoB@ck0lb*#aGOLjX{3X;GYz=HY_$~?;nuA zkBZ0tv9B%{TOB&}`Tzf)rk5nG>Go5dtJYZYkX1b4&4d{OOooO>B$%JEIQ6h7Eld`? zlEu4du26y2tw|@t0=NYPGzHkz1VvK<G#y+W7?(N*xUnko7;#Pg|NOn*+M3U?)m6)i z=M|s(9TT!X{k`eFZwcwT`>L1nz52fY|KF9t%TMvF+I%#+blb;iJK2jqy|{Sd*QHr< z8n$7UsowKmg#@NmE!V7DvV`ZRfWrb|E`g+Jzy4n>5MX2xaA3eBUQ{sIR)0&mxk6Zv z#o$Sw?t=EH`O<GI-fO$HFfef_G@ua<(p+1jQf}@leSPaa%d_<PwbP1w!`4Iure)04 zy|-#}@Afmc0W;kDIRn!y&qtjMW|=N}FEhn~fss=nDeTiyFEi|pa9Hq{i$~hb=YB#; zm<%I})w~9|T-yh4zrS@kFNn?28FGzPuG2EF<sE9_jI5r<D`Bu8)_t1l<~7O3`_Aqx zaBkz-S@t&SVNFhY_x4vgk9GGjo=U%<yqI16>$J<w%Z{)87HV+Spzcq_UY4Nf%<Jr& zdfN5NCkivNeA$<KJ>SNvAI;Nn?gV9n^m8(4hXfrKBy+zoJYUIKz=av4AQyjPeI*_F zZTJ1ZdRr}PwO)a)LQYus>B`FB{r~^IKP>V4%gfE_=jVM0?tHy&_qzuNn_HFN=6npB zo4cpg++nHYmmev$`M&(Jfob0)w`AseglL-n6m(c%%)Q}FM*PAhSi{7Dp|MZ#06VAk z=QH-n?{k=b%}Hqgvmxtvg|smjmQZh8Cb}X#Wu{WR$h}Jsl}}Hqyq<b`+D&e&+FxHl z7i;HLudMw1Ow{kvv*Xd4UAg!7)!wi9d^SA3c5C_jd&SSsiH6OX`tZ-s&szUZ>+g@* zRidfw?|R&Sp3Tq0{Ps2f|9*e9@Za|@FE6KdZNF7<Rg(ATart_injath?f-^w$IdL= zS~TyF#^zg#EvzrarPZ`<n)=><mh*yS4xPwNDX*@qoL}>)vn~05x4#tj&=qi4V9WL8 z&CSi<M7Q)AGM>{Ac%i~n_2lb=?Z>~1*1BOy<_-(Kvc8gtG^_dX;mSXC-;xbGtHiyQ ztv&Va{r&ZpH;#6TN3-N+eS5ur|FiRFmmQ0a-B%O&F?(<I_ibBMUrtnZe|Kl6@qWMR zZ)av2bFJI?uuVEAbo;%k)qGkNx+hnjdwu_W{jZnHf3<`g2}C!0zrVFL`_GS$W$(8I zY?hf<@u>6d?d_+JPvx?gwv97gqUbZ*>@08O+&w>^&5o~nxpc96f7`h&-&^FgW4qU^ zU-xq2n!h_=GX$n7WxW@l^-sCMVK#Tm|4S1=i3)25&gf@4+{Sx(Q~2!jW|tXR1Ts<? zZGTk#x&1i0+fErh`+`#Pg)FAEVv*Mr)nAEjOJ09vZuz~+udhOVTe4Q`RL8uut^W4J zf5NT`?W27wKUtWa3boF=V{vrB)9Y(Czu)(Jo%V}5wcl2~5{61L^Gz~?!nRtMz1i`4 z-EOCIb6nQP?KR80Gb761`FQoWH#gbkDioF{pIrI-{r>;Y=hyqajjOhqA<uN}<l-}1 zA}+|S*Q|A8XjBu?_|wlViPdKyFV6~YSTAVyaE*1W(*jdgxtb3LpVe4j)W(va8Ch<H zEr^?#dh2!8g9D8#lV9H2x;pKpbxKO4(MikXV?5R$w%@DLwp>@cJ1Q#b%}UMSWlzp` z@2XhsE?22inr#rBJ}HbR%5TDys!v}o`yXHWNcq&Viq!>wj*7?oy!~)%Yqs;eNu8qF zVMjtuGxlV8+@2<S>}l&f?#l1)?iPN(^?sttDWCp0iN(Gz0<SVhKYsCv`DRYB@1%D( zH>dYHFSB6cP)J~%_2j9WIZmIR;#RqTd&}g#O9Vls_KVPfe|sJMu=>+#kAtl8>0e)8 zPd~Nv!!$m7*ZPl-j>_3qwLH`gdimqy<3y&ilao{*P7&&=*j4b*$wFE^X3tdJ=ow*8 zpP!rC{W_%J<_yDRuI}4BcXyZj*DX6XeXeD(nrTV)hX)70-z}g2&)ihakG)^k`q{4Q z9UoV5vQA(6?O@-<rR#UUvzl6T_ceq4SB5m#nJ+iK<q1qX>3U~dZZtbz;adiCEoX-X zbGdf>pYlN%XSSWmYW3$-srB5P<+nMubT-6soc*(JQ9fop!@$I`rO#on(&=e>vA1R_ zpPuA-?!4XaGjUrlE_T<Rr+ubg>)IJstK55gEa&tJ>)kswZLV4Ft&5A@>;HbezB+vU zJe$f-Z@1symOk0eXP%Aay5fUPtlQeXw5Mf#dvlX(xmE42Evs(rC``Uq>eH*=tsb@9 zfBw1!#<#ze->)?<eB^Td-JZ(NIdV&-4e!O*{XFXSN456CvYc0wzFc|n^YioacXuqy z-b7sAyN1E``txr;jO|bP@E7$qXWiO+CQC;AsGtKwqYUF;_SpZnrT;Y_s$;1}LHV%3 zL6|F}HYQ&A%*;<uMVL5BoEU5SLiO9#YEmz%VvYDHM^FMUetz!lwYAY%?Z3ahUG2Nu z>inI>x219pxAB&}=`xkJtJ%>SR5$zJ(%3zrK>>yS_v`=fJ-u>1*Q>(DkS>eOyO(R8 zUm3joPF(V0x89(J(3sn2W*X<(PcD&(fA%f=vi;igoin0$7A;--`JDCpkb*h6yWTwx zeadxYbFbFkvbRyUGd$`)omAILmthn)DsO0!^Rb<mcjBbK?YXKI*)qw(ZZof1D0P8~ zok*tO<$k`kbBk~_JRBC>WZ}>|J?r%|3nmVYPg4Xor&VWOmdE1pMmO#)ekn8ey}z<D zO+j>Ts=1)|U53*~BQ*DWrD`7i7`FXR(dnJV&o_ONx2w5P=1_j|P%C$C+V;xG_xJX$ zkJ*`IeB;ZbquqCFC5}(eEZ^|%?(X)S^ERJ*)*f6c8fRYe;=+W=4-XDrUl+T%@|9g& zx$Bh@zaO)!7EM@v!B+Lj<Tr(B);AAcs`9Y*oD#{tyMTwCk!6;z!t2<q|C^m~S5LXD z9D3Q?ZkGOPcG%1*kaTTZerA+AmU=0}w{e%tw9NEHoWg1;ZzIhT4m6w-i=1|*a@UI` zR}xlRJj%SfDl{^9S>c|m-`?KdY@~kt`I(u?`RdY#mj-CE`rO<cy*=;jO5cYGy1Ke% z^)m6_&YIu9!IQUt+m27a-|x47a{XUw>&MisJ>hG2SM0i?on-w|>A@D++yDOl&TZ?P zb&YxTakChy*%y-6wa50?=qBfX-g_qNrA;a*2^%r7^T|ADp7zaN9%qXqO;};anlmNl zl>!b8pa`tS9)Y{KuNZE6Q@;OqY}WTSUg>4^@pmnsON-8WqEu4$=7wOf#_bh>i`U$n zpy(VkBUIz*qthZ2O259kT3}{c_~wRTbmert*mLu2XFs{JbmMZ7s<4RJkB;U{wAlCN z(o*mIy<e~0-v4*+$79m!{_}j^hFU}f)<pI`o|?74?yuATt(#{TIQef9Iz3I7+jUCB zzM9IgbA9D8<sEW~)_*2kQ@+1$@tL&q^VWto^p&5K5M<&oncBc@%)dTB2y2-HY7gh? zITS<&pIvcTl4Vv*gTQ99`b<#03#zS93in1f&MT^$d^W0c87OYj$(~nye_!plPj@RG z_ukUiG5!4N>grs-qqefPRVJp(yY;n&UyHmyu+(ePsql3%nYU}-ZoM8Py_Nm^9LwUv zyyh)Ig*7wJ#>}{;7P(MMmFv6y>cTzhesd<|W*Fw_Z9QE5{T;9Cl!}L~;z65BA2hcH zrkx5n{o!_&zHw{)wM)6Dlo}YAQdwe_?EK5mm5C*Xfs5-#Gm!_uEvaccPc}0!IUe}? zxy`Jm_M!>a(yLTt#p!#_Tw0R$b$gty23dpJRZ@%n4w=MS`-0jxr*xvWXk;sh>&Lyh zw|Dp1IijzgK03WE|Ngwt<+l4OJ|;!~d_KQ^-kjQ>Pp7~AXtZ_b-D{_gPtT0s44Q?$ zoxlI;lGlHJex6_VD>L_UT6DM--;Y)AEB60<CVl%+hoG`v%#IJ<7w=D0cFzf!RaSZW zR_wW1<x956rP!XErnh9W$5pBMB}b<}by?N6?bYmn^H=lSclq?NGP2AHc33}a&42%u z`_`LgIb+F;;3(A4H%LD>=h>XlW#JqO7tSzMl}@QYKLKlv)>x(zFkQp=@8QfvXC6uV zwf1~{aq;jyp1;4pU%wW9KK0MdIbPpiURE#NY%HEHs&w=b-woybeLt72wbxwgVaOWM z`j~5>Rq3lKx>Kj_`~UB^^U6OzHZ`;J@B8=bHK-o$J<pZ;*d?(hQup!If;rB28jai^ z`K39QHau>fm}=UVv9jW|`!v<?%2!ub%06H+WML7=5NE1-IOXSi?n;z|2##GS5#{c% z`u5wTs+oRDp!(+p>m{pvttdxqfdOtYr(WBdef`Qmei@5^-C?E=uf#vzwWaX!v5>A$ z?BCzq6fQr1Y`SK~>m!}Qh4X%#@Ydg(a+^0W$}DKjzK^Nxe6n5J)i>9A_#R&v{Z&@~ zW9rAf6H8tA*T~(za(c<}nBr$|%{Tcpzq+|O{n`P`J_aTZ6DNh&{~f(*&*G^x3PG*i z>?1Y?rAiGB&jl}JFDZPlk%hg<f0p%?Q0g+y!<NO*QvNExs{8w^be@K>^sdmmN9P)) zdf6~$KVG}5<Ym#bGczsxYf?aM1peMW{ofxB^XC>@W-gy1A0PI+;<ade+1FQBC3YT` zx#+yg-Sq3Kmlv-w$36DAU2uMr!HRRAl~#RB3Y1}Fd8NAGx?cq=o~F7sqn%U4`pW!Q zjteGpzev3l_TKQ8E7q_tWr<QhmGkn_QrYTFfw#Ldtv5*N-{dvFQ}FN*D|_nW(;@%Y z#qN%2yE0#I-KvEjQ{(IZmR>u+&MWoh#p3>bpH6AZ*M7MO8t{5~N%d>ln;RPy>+5PF z-##woTlHb0yWG!Y)%x#u%kO_aZ$H254kO>IgKs`eOx^XO_V>594C3923Jngsg=bim zzM7=!J+J1|$q(_ixXZ(}nhX3jUpaTY&8wQprwmS2sgu4we0r^B?L{%HrAM#Wits5j z|H*E3vJ9%ey*7IL&f@204^0wccRhJDBX9RxGgejG>A%f0FD+R<uj*7}tHXv1+T!us zN?%_q&{BW+Yjg7PK9$ca0v9`VtCq9>K5qZdu;j&sfLBMw<F~wx+g+y17a(PxcW3+k zy5FzY@4q!iF?YLxc8~t*!aaHN+xcqP+3ro^416(>XZlsOFC4EO^&<Vlwx!+Jti#iF z_Vgw_;p2i13$C&plI~=|>Ua)?28Y$08$7OLU4CHF;*c(IL3`=dxOfxn!zH)5u4td~ z*_<_3>y%F4#!F?fsmuIDcU`@7DM|m=48!CYNAdV=1rMF3D}G(x`|#4StmS@ly*ByI zvAAd!o@Q<`_3E*#g;ToqtqUGFSWH#9wk~$|t)&GQzO6Obx8~T#x}Q&{Z>#32;lBG~ zOXr^xn{I{QoTatNCp`ZBBERajk`_!HCjAY6`vq~A_+bJS9}cq5PM<boo<f7eae)in zOGV@2O&Y<?Q#8V1GRGCeQ#l737*{r5I_4>?<`W>}b$o_XiDJSnah)T@qI?0;u91s& ztXUm%FtW9Do@Mbdx0bIjFRSOMKARQ2B_l8~SK2&pi*3or)YakZx21D4?}*WfO9a)` zwk0nnyp4N*Z!fd!xdZyKySCK*{pDZ(JNVJ^`E{pG-ih;5O^lDMp7t{EZN<dYlS|jv z#=LzhblIOpAR~?Ox4iNtoK<zN*o&K+)7v9^@}Awy|JCM@E_|VTY4-JXy>-oj_E=-r zS2bY0hVk2c)0`U{t}MK|y3=g_#yLi*U9t~uY)n2~{_@7g<ZWv%tqxne>1b@tOfzNc zx<5P43M{|ACNlZ;9Gl9b6Q4m1uwbtDyQ;osSxBotlD!sFb8~k7zD#YMJ3G$4Ef153 z4|`m(K4#~o)#3WL56`tOKX$mp{a*EZ+h`a2*tTz9jXQNNKTcy8y;NmW8ki*$SSP%2 z?KPhaZ3owBzH_a%9$N@1Y6MnHcgWtyoXHI>*3rxR7f+aOZ_8bM{f*vNP?IIhVf}Q! ze@&@Bu!Ypz;01At39W%?Titiu;M{x7Cw@=GM)!WXZ{I+})ThfG7-O8<`L-Ty=aF3G zyU&SNZ=a8)y5Ag$bH_NRUe$};b|`jtS!>SzKcBq6zq|YP=Goci?VAe^xkjx_sH?fT z%y;%9uS0^oVS)DBz8?Bvl)5f;Pu4Bh|GjdyR$tUj7xJFdc~E*iw*13`gIDI9tq<s* zYR2^@XJYC}-fMrt+vSuR9MXk1{Qs%ki<TPU+zS?sA0Hnt-=>*yteb&pt>%L1K9BDu zT<L);KpFyZFy_8uc*^H<&h_~E+E)qf{POqY7N0T8yOYrlYGlRiC|I~?<!R73nADc! z>1L+frbj-eo|+>pvW$0jPVPs()XU3!H%nf*b8m08bFtY&Giz_Joj*2RT^)Y=mdM_v z3P#bLzW(#=?xuxReRy!tY=+;=*LHDtL)Km7xBGG6+o@$&e=eV2ck5Yyb;f7&+^EIZ zm{Zw>E>$snmC$nTotuBi_Vgi%Y#AwV_wg53#_|(+cXzdxi*Vv>uN~tA4T0?|-gBjm zfr;Y?Q`J?IceZY4vBfcm$xes8i_VBlyEJjpnRomD*Hu5<5*=o<bw>S@A0HocecCit zCuWC%h-dHipl9XxD&4JfTXVc(c9mpaTH?7)ZmD_BjfBq{YoEo){S7%WwU^tv_}Q5` zmc@^9tR6i&{pj7^Z@047x&FN(mcVcG!67DbzFqAdjYnLQgF^em*Y?X=Uo-vtZuk3R zbEllK{eI_h(XG4pA1V1(EHT*R!=KQ5H}BbrO;0{uwK(wUX!yFAmw7WzPFA0;@8`#I zYj;C;|F-`hwPd1X&d;{-UHM;7bIsb5#x_45G{1{I=#MjC+&Er1ci-NYoBhc%c~?6F zldOZo`dMy!j;z4hio36|d0p)8Wqq{|4m7^Lwl@2p=TTvGza1Ag*j9fFxt04@x_bN7 zDZRT+b#0$?yYzajdEuiYPft(Rj`C8h-k5SNFX{91^Zmxz3jQ`9k4*NrvrIWL;YW_e zqerJjWUsA{-(O(n`Q`on_}{ZKqfO4P-1qUAG&37df#e(i&>s)m<=YI_x%GU%vNHHq z_&KvxCF|q%#?}A*x;A?Is`>M4zulbw|4;gKNBi61YbMA^+FE?nC~@JR^=`sBfyik* z`!A($*!8EXC^{-irb5(OBJ8@=Qh^M%M)UhMm+hF|*$Y_OUU_VscgG^y%+vngkH>kz zr{{Rxx~Lf@@i_aeAdc``APDNZ=eln`ULwlKa%*ctoJDU%e<1c@jJMtk;sVoV>0Ysm zj0{ZUiplz<Vf@|yb#6?AtMI~)dLD{?XOBjgzQ4Ek$=agFz2<Q{3KUmMe|~mWJM#R6 zh0gDHy<RuLl287}r_=g}Zyst{wCj=YwGc1%$?MEA_HZc`Pi$z7-TVDs_4>HIvsiD0 z9RE7wNMPMbhOY%L1y}Fges+I)<c<Yf`M0I;-qO-D$r7Gzma7%Xd{ZFfJ<~h;rjPXs zLF_X`W6Tl{vCQ?-y~N1(?aj^0`!qa2!xLCD$(7gz`S<t9CfLmcwScUJE@Ur%x86w0 z1#1h<mTODYl$)29de1K43annUV}TrNZs_&%74lm&gO{m<-mK8h?Oifwv0Ja!p6I-t zPp4g8?*F{pExP>Z?y8-$*!ktw$eudZCoA2zyp3NcZjVLE2~Qp=6OTl%R}nI=L|5hB zsc>EXV%wZ|H-m3QERSWG{_<jhd7^}?dXJ9xv489T|5|Spxhci--{1J(H>bzfS!Ucm zGQ%)AYyBK4P%j|#$n;d!>6zB&$_$^ZvOX!U^R{{t_KqBf!Uc{-wf{w#SB=kzxG*#> z6TOhVTrl7G6?RY0<pLF;ii(l<%U@kvd;8AL;@MfZKHS)tZ06_nQrW#P<ht|U>S}S* zWe4<*u3x#$xt*_7da?I(z4UW)0@DIpnhTS@y}7BHyjaBg+qc{K-{0M}UYByDL-3@T zk6w=+OViGYbziTBTUM{u+>m{CmT6-0th2MtcZ(hVm&z-<-s;2l{eRDzzO7redVcM< znbNVs|E}0BXg^eH_j6_Y3cZV=Z!^wsx{-K$TQ2Y3EOGs~Hy0PX-&xo9BDCPum6dJV z{GM`{bUG~km|DfDU1eTZ;N(#{xo5TD-4nMy8eDt8fweUNYU_!D=Eri5ywNKK^`d_= z{d$)zx?ZOXRIOqpq6>|zuOw2J`P*z=tg-pe&LhX>+SdR3^XlqqP`~!~yWOC5ypQYu zUa!wIU#h?F$D>nIwL?u-70jsp{q1G^{`YrxfB*3CaMxVUsT#S=$2UDXJ?RgZXZ4?t z$3<n9?^kqgv-$O6F}Jwho&ELoD|A)1%%1V>UevytpS$1hTU}t>YSbFMveT;1eC4Z$ z?ehEn&aZ#<s)bWnBy0Mut5^PQd3f;82_sv(t>4$ix=(v)y4v#3Ex}LO0Rl<qe%BoB z68(A9vfJUfzzU6hI@&vOj`c{&Ixj8|(b0dl$IP-7TV2Y)#BoIf)KflG8D#_tj8gFn zr<WhQ4j%r*Y?Zv2!1T4(NZKI5Vb!E<xj`lYi7r8R)!D4mTk~dbn`xY0=GSf}Un=x@ z>elp`a$-uS54}#hu_3W{UtIF>KHjrOIbC(se)F5{lD^XKaGPsNzy4`1z1gPOVYm4f znnqt=tyvdaz=CP1132R@C~FM+@hu_yocd)kCXOxojQb2DerL~-LT@vHR9mfbkX?Lc z%i^$W`;V_n)_$8^wCUKrx_>{PXaE1Xy!S9y_U#>oi}wa@&%YlR(Zcgp^u&E%AN~%x z$+x1<<R87qe0F}`7j~_!_wT>2|Nr~Jh2{S9ZL7bv%=d~Zzgr5*@_!cvFf;k;1sH)s z`OVhraoL|3uWhfc*>`E5x+kt;sZ=E6%dLRg<=rcJ8Ck4mFl0NF*31tU#gbqh+C^3* z{|Qf=5*hm_+v<i)+N*+fF*`3UcJD9PU;6UW(>FIaue6-p%*B<FnW;J7ez}%ksNw?Y z=;*I61G%OjQ0vgyEM<20h4`UOsi$*_FE97MKKaqN=sD*3aiZaOL@n$8{qeW|Tk_+> zL;3nYAHTf3{4VF`e6Eh)-)`sc|MNEg^fcZ7-|PREzq_;Z)6vaEaeJ#mP30|%Tx>(^ z_2c%;n7Vmt|LwTHzh1AmTsz;g*lnBXxA^>vwZFfq?%}%i_ton4e)DW*Ue3s#_v`8O z_$%h6FK6HXXA&g4GMW7pxG>X=+Op!+ycZWa#MkMW7hknqxne<_@3*UtxQAf%m~!I6 zE~c2y6m(c1$dr>9HvPNhR8UGq&$cBwjlbMx_R8D;`}KOgzo@ibO~vA7FDb*bH-44g ztN;I3tl(&usAX-$o{EiUZK}S!m~&>%s>Ka?X?HJ)*)RFZ@xpP%>AUwPe$(N$^SbiU z=}73#0HfT{ZT0`_Qj7V!%}h`C=Xhm>t=#|Tss4G}?{_Zy+ppcrG`U$^FD8IvHh0A3 z9a}PQeLinr|K-KS9pNk8Mbeh$KfPOUm{&}FiF=>S&f@3it~5Pda4YEe72ChQvrIHy zCTKeOnkTN%QhB%c`@Md<UoUQL&0g51vheoTlj`$*US0eT8UQGi3wN>Sm$ed!3SYUi z_&JyTNwGU6H4hK9o^(7~dGzsB)>&4it2A={a%l&ji_Y7r`o#uR|74t<Wt#eH*)6@; zU0Z5?e)?gg8v6D9{ra!3t}Z;h?dycF^`Pai>N?-pI3!~ZJ-xpzclPOodaX;k+27CK z&fg!~;I!fAYH#slpxUQ%U6<I`HNLaWboVXI-}m#`^tdX`*B1liOFpac&)QO|t#xCa z&+E_6&+{*xSM_S;u05sByWib=jJ=fsDu=H!&HBv0dA*8&14E;k;DzoLuck||Vx0+p z5yDj3V-)Pd6PUL3OvkPQhP&<W_k8w~VOe-L@eBW_yRo~HkM~8*T9zZp*lO^^ecDSw zjbQ(}d3{om%dEHM-{1E$dHu&VdJ}5(-tGD9m-~3B)mGyvw(Gvkv#sX3EoGSGqVe@n zx4zc@<MQ<~eJQG^a{eq?v3kv;Z#%3eY`!_|P=QmL>-J23)4h`aUhn^>E#u>>k$3v; z(k}PSmZG0aKRh_-B(t4sal?)e%Qoe4J-uA$`uwKaqb-ltP7<^K@u2y~8rw^|%ikaJ z-M58zjziAME1>pZ+53BQO@mIaeiXdS=j5rGGWs*)3oEzZEsM^ozjJVF_Vs7mBPy=_ zWmnzV?yMO*z3}m|oo-)0|NVZSztT%h#OB8VX8t3gJC(T>{QLQQ{$s1ygs+eL?d6^q zx{K65XS#XH=Hj|ZbLOvm{s(K74=O@e_%)n8UG!{`Wvjzy?ibyC^}lc5-?HiFt?c!( zmPJca+V$i2?Wz6!Epl_3?UxJAzcwwhbDi-gGuQ8Q$FF+}!WM7Z=ObahaDCgpzu#`Z zYTjr2<L~$T$0fbw61g|OihDf831kJR@I@++U(8`D?Ke6-Yk{;y!Gm3;uf5KFD&3az z%lz}*-R0%w3z$^nYQKgajn{BXJ~>IX-{w=t=>_wJ)&1V&gsruSySrsqX>z6P#kK1; zc!_Tgj{R;`kP_*%+;;Y=$(oT_$9g2cN$vf5E!xwu_0pCtTW$omK6KK`I2^YnW6@OZ zXlK8u#EeMUF#lscl9Pk4%?;XeeR_P|%&6JD+`(&lAI;vP@wjXGzmnVAS9<5oUw=rz zGFR!^`gr^3pUZq_JE^Y)O=N_vi^(irw#?LLt!HNPjw_qrJ(!^ATvTRQTzz%trjO^> z9E^&aT68cnaf4!@+W+hE^|Iv(&prN$O<VYKjf-DRWLQC@sAKM}ZD(4mp7wbBx9m>- z74u_Z)@8lM$Y!s;-Aam+O!kNT+-&LmKm<!20IsVYDjQb@FBdy^_SNZ}!q!>-c4coO z5^q{GI|Y7Oxod}$-4)5`s}(74ZfraVn)<TLHqY|-H^1i7$>sb1=HA_9ni&=7QUCw< z{mIQyU01uDdt(<>+-2ReNNU}ueYL;2USD^eW02^iF=>9lg`2O}@2`7xW#yl&t*c63 zuidT|dUcb^64t+e{uPK}uaD<|Dp(WV6})+y7M&59?Jy<smCwo~&pWP~e^yq8tev{# z+OdPTSW6b~3Yb;kT2lR5ZT()(s}~+BpB6GXd;5B;_SQ+=;`-lSTvU#cU27v}UuW|q zBqz;csmn|WF=_SG(_+g)cb1iK`L?_G72K39zq4?u`B%%WMbdjkvx*sgSF&#AJ2%^0 z|H|SPZkHhcNwxQL<Yt%sK4N+1ftdU0w6DuAJq8W!{N;SP)O-4}u&ev)>v_GZw=bRN z+bdhVXJw_+ZZDB%{=D*G^;ZmY|Cwf7Sa4<E+gn>tZwm^%6?@H~Wz7R4-8W$&`;D@v z8oXZSE8EAXHSL0~z;5;MO1uAmKL43_!!-Npb#?8}pTn!nR)3bkHX{hm2`fAjZg0zN zHQtifWP3$^pHf6b^VtRGKekHcEGl?*Gt6mMPs2V#iI%NVbLHcgU7au?Qr^ku+QK_W zXPIOM%`7{4Ig9BVQ?InS-u~FNy;%pfW1e;i-Fm6>|KCR2mG90jIQP0VByjx+tYah$ zOq~wdZZkDy6za7$3D3K`Db@RD{YLwm9|eCO|M6RKh0FQcS<jTnz4yA-7VNeA{l@tA zZP1i_pW2qy5ysymGW`z}n3)PbT9UKXOFJU->@3q?InVU>|0(+P#B=FmhgDBcPd{F| zOJe&HE!~V;KLT<eo95m!xt=s#FZNOX_tdr9SH1as-hO}j`FWR@`>$^QHSNJ<f4i4j zdp;hMULUhlsOm)l%hdmY7k++zew*v=zs|_KsPsEKi=Xc-etyO9t$k`UV{WdOHjC$c z?JMlwQ-lA8|J8GTWt7UZsBzElce}F;dqR4;b`_O3Y2DvfTYX}(N=&Yz#pzUTd+yJ> zPp`^eWqmE~*XQTwvt7^hn$&OJcA+Xu$#kEN=?<R<t^Lk-THdYuq4eq%XyE+h4ilx= zLUHb8j9Lm8<3z6hd9(Tatw#ILXN(JrA9mc@>L2s)trXWZ{~PBfV4ax&m3S-s9PVf8 z7#qG;yWt$&8h_Y(ZOySB$%SmQGu%I>&PuL-*eX8n_w)G6ddqHqU2vsUy1FqZE%v6$ zj1#fH4sDf)R($Ek{X(j>_0yrP617nQtL?vat~OcgU%2b2viSjl^DEBHu_!z=SNEs! z>)R)$ew+3Oz0m`12$eX2T0WW^7UkdHx3cH%uF~1o<#{JP_xnwH`|0WF)6;ZM&u_ab ze&ErJ4!=j2UnIV2yOKMzYWFL%YiDDo^Oa1pJuP%>SI5(EqqH*;)hEqBgGAbE+z!q# zYyNbbr|_0uX=~H^z2Bnd1V;z&beO%P=xL$<7NrN9wsCfUH@xDtDEqqZE>+tQ;jVyU z%df>BA018P@Y0y)Q5dZl-81>~OZ(k(rd)aX?S@xr^zO3U3_Z^y8J@XGfiaU#?<sv9 zcDsJ9%+7}06&#Cx{Cqw?*7l_T)Y9wTujjpsvbcB1^z5HMQQYtD?k<;b$~us6$$V|c z&V4tvr&`Tf)2z2I=h>N=r&gZ#Zp&+FIkfeYJ@?F8E!{JMb3caqab=}%xezv~!1~48 zdwXxEUD&$2;Gt92VyhJoTxM4u=@8uYD{|&)>%7<MIL9Lc<{sFPc=(jhrCprgE=;>- z#3yGHv8-)^`~7RLudWVXaZv46V9m_mXQFPr)#lmkDO6^=V$qLH6K;Ycb%vT`h5E~5 zr>1Hj7M`-d^5(t0)z0TE7N+X|UEOwEuKG=X{h!56Cm!)U?3mWRrE1>M?Cl1Z_fDUx z`+rBA*FsAi6Ep#>4z-KVTw5FMJ|*(snq}6j115fbeLZ`-LMz(~`6t@%GLLqN{#yRy zP2{r$uf7`FZ}KrOh?RO3GBNdJ_Hw;E%c&Yk9)|7@MVGU7{E#j$lXbCtETI~{KUUm3 ztL|~HdCa^Im*374JFdMmL4JF4#0qtlnEb~bD%)Qylgql2etsUW>5Ueqf~csdrhcJ3 zMbMo7x11j(OV+A*%3Bm1couRaWK(453CZ2HACHPZT;r?JbuDaZ$+_bmcg-T!{r7Y3 zKKCnVQSRxbcQvkT;l5rfDz+~3+4JjvSFRRjn;k#<-cQBlLU~K_6fEuU>MsA^;WNwR z<h7j3dJnXh-+D5o`cX*eKfa8-&vxavcl@xvx~${S8oM3Vj?x@yPuG0;u`T!Z8cy6Z zBT+0~bsH}FZn!Nbt``$=(Pw?H!^W=~v0qcFU1e8zr>$kWt$*>U&dn=JcdpXj_}Wo1 zMQ8Q44L_%>b3O4!ulC<7&#<#H`7I5+MQ7qmF1HK66^f{M7xL<Aczmz9)b5g(lk8$F z6A!gaxU9CNZpzp73U`*PeV)E_lh2)^skyUo4Ae{!Ur{~fW&<O0Q1ta>fwTP1{4@%^ zmZET6aD}S^=Z{mjHv4SXo|w9lKj&xj)|k0QsdtMG7@xNhp5CRL6t*@>G@aZ1&8``4 zv-bN=ihfi4Frn~=&qJ$aVV-xYFMYkHyK7~8p8Q6G2`Uepc22sx#z}7b-dRoW`(&-f z&fPlF#LE4qwEU~a^5V;NDcg4VhMTaIcgj9E(kYy~{*;d6xfzCs#R})gmDFmlF|gks zeX%SzQh4dsYiZWc++G<y|5NfYb=$csCI9|DmMYrr_)0jv`$e6cRY^vMd0h7#+v+ll z)h&7}bmcCUIR@YSvf$-4-t=t$8+LdKPS*ubn%2)w*sgml{`2Yi?DNcWXX)l$4)x#m zeEW@#&3Pv^U6M@~t&MuM<+Wq$Tp8mupB*xaN$)N!bpG~w;>StBx_1}n=rR>QJHvTB z`^kxkQBOVB`f@M$`|B&WrLz-vV(V%1<NfmcpU<mynmD22$HVr`vo^>7*7-9jJ*)j| z5En0w>D@*t)>qQ0%ibop@k&p-we*+S6syV;jx0irDw}+^$Glp*B09u8D|XE%X|LS9 z%Cc*^6T?&sHLmr^T0c5-Ds6wC#yv&nwwT>zy60xfY<!(`DrU#0jL*BzUMvy6x%#D9 z{;5|7s^9NT_ukndz5U*-&7Z@A_Met#_t}}d@Lt{Tw>y#_ZF=oeIAuat1pC+e=jY}Y z+MW~?FP*yI=gp#}Z=M!tuYGm(;$rvBQoP5vW@T3X{_--}JW2Zr*H@L!KYw2J$0~;I zj;!9Lx^=F7eO&V;bs15=(yy;VuZNwS?{|jJ%yjM49o*u2Q&!%&%Vv48W1E@y!yPq0 zi>j~LD*w8cnw1WkKe1l_H6z;dZDzD3?ku&6_1Cwz(M9L3`E5`yewp}P&-cgw4~O|x zU+*k>>a{*@?<79Z5@W9w6)*P3hG|45MyD39mTO%YoqN@Px7?L2b91!kl-*so??&c! zmD{^Yv#%B0InF%!_}gZFyA!A0_hr8flQ-bu&-6%n>$~i$=Gu*IIiH`MEf$^jb7gq& zibfoBxmWZ8?my7~JNeTejm=fA->1y<Q}JIebYbn%v!6P2R{xzFu&k}^UexbzZ#UNl z%;@12+2p%EZttyUSBz5q6eh)rYj5_Qbawr$tv`fj#qBIwnrq(omdi5t(T9hJw@rzj zz4`UpQ(->>-KX2XYySIUzLpQ~zGB13m4b<ud}SqGuP?XW-CfR~%yWNr$<0ag^`cJc zvFyIE<WRuwB~IH{&e@&P8nbTl&!1bxa@=R}{9HOcZj*WE>J8uK`{`I{FZ>;8IHQbL z&vN$ujZrTql|^_@`!PA_-8r6{F-h<5?cK(&zvn~KSpoOXy!-p^rg>b_<1)%_HPnmv z)bUmkUj!}ln;TV>bj^3eZn604w_7KDeRFT`?WtSs-)?d`$#q*RS|&d1>+}~=RxG>a zLW-6ySonA0rz*}pe?Falc(ZVR`WD}eiKo|zt?W>;DsH-%6FIxj`Akt5&)efXr`O!O z)i!BMoNr<YsQ-?oXRsg+)Zvr1ulw`$di?xbdmkQd7fu!PuPa)T#dz0m*UF%Lv%4+3 zL|>QgFa2bDI_cpm{m8n5nU|N{+$N?QHD#(j-{+H&(@S0_wRV@A?dJ}w`gSutmp_;} z{gK^nRu@<1m$zpt&W_I4jgct*`S^#?^*L<?e|~(t5Hl%aLqenMiRk>jPmNwIFFkQz z==4^J@{?ij7A<{KaeaM!ezj@#HJxY!_1xX7KFZlt7^LVu;j*0UQunXo{hkXCr%js{ z9#`plG4A=fxy7Z|eq8Qs72A4e*#+0ocTD>x@yOSH2~6Cb_jsqEvRlS_!`!XY{+B;F zA-MaTgg&2M<R+DpAkOWH^Q)Hr%AFB+O)kCl@A;Dn)(*Hww6Yp=Z*P0*bL>`dUQ_L* zC7#>w*HvejfAuckR^j14(@1s7C7&O`{<flZT8Yy|ohG`e*Zq2_es+cS2jBmz`&Iw_ z`FuV#>Pk|;jf1|n*S|AtJr%Gl;l$$izyJPt+#kgqz`jLHxG#L}j+&pFw65HLd3m|B zYT3l4H8nGvChhzC?Y4gX@7tSFyVuoSeXSg2I^k7#e64ES-^@K$Lc6Z3bbfw*{<YSM ze82UV-mR2#%xsvh7rSapj_c3T#y8JWS9&*kwiZ7-v$221rPI^(*RNQsvbjw4_4W1h zS7)7{XS*`=<-KipqjwY}W^J3(TxGg*+mB8LtX<o$LM!s8%xo&`FgiW+?URtVOsx}B zcX4LtyP66_PWv@!W%t_EM~-T&y!-F(@9gX)&yD`Y951rloqql3qX>!Xynna+jIFr| zS~s%$T}X_-MbJgI=vMB<d9`MyGfuDDyXtVB<cYTiOB;_cW}H*Je>Qga6+Kp7aoyD8 zyDL6EI<VU1r@!(peWhDgrwdy5X$H=Se_d#1cB;%`$=0NG5yqjRFTFOt_4KgbxI|QU zSLXMP6Vm_v`ML0`%EHrCZ*FXyplCWVYV+#lAJX?+d$Y|oxL^_QiV%NL(YboAO=VHm z_bkf{ysb)y>+51q`(NF~`E6(M^H;YU7RJ8q*i!%h-=SL~C6`x+uMc=N(OoWbS4rlN zl`XMM9$D4j@0S1nG=0CyYR_2(dOe3X{oKm8)OF69xJ*|EYlqBzcgqw!vn~4Ver3EW z=MZgMHp8Oz`rnuS^+l{-9k(r+FBKBD*y`U=@%W4fg}Z-Un!Bh4v;Z?WZ221o=a7kq zW-Sr<wK#R_2V1w@dSd5)?%tNNs6a(pQsh-g(vuStt;^q)xE9sr-P==nV?*M$wh7mQ zx~KJuv`z{A^LqXMX~mCze!1+g{YhIpz39%<@C`FguYWd4+H-5BqO#@c_n$JCuVrLr zYw1(vjGg;@e*M1}7Z<Oav}V4P$D6X(Yq!5z;4wL<%E9jElgXgb=)1d0Q{|?u**591 zS(eXU-nBb|q7H8KpX0W?TH*P^f}?lOTRhWF=k@4!4!C;Ua&<<C{)zx*95d=Gb~`99 zI<slnS2jMG6)OYHpPuk%;bJYh{o<MD-k+tLH8)H=u_<KEFS#|>j}?3?+C5>imeriE ztb4ky9lfGD`@ZguCv!F>cV4z+y<3&N$KX{~@z3DqonK1bxhvl9{r+lp<HC8)?R+;k z-`c8W%5&<QWxegjxR0rNcUDeN>hbWdE_2zIAh|A}Ununx_l3H`D`sym?W*7MC1*cV z)@`ksWja|-ueasN280KkKDDmYm9_2a!z<e!&5GqstvmL;%_>>hFtl@9>1Npr-M6mo z$-b^vz3tnUxPWbSxR=IU<^1yY_Vzz>*3M3tZ&|!7DJ5q&Xj*oSucO1Z6K%ZG_p0C9 zRv*!0RN0z2Q#qyJwAIS9Q_ti#KX&?CnDpbr!@SLFS-HiI+`J<weJ|B|XZibkM%)6I zm;0aRJhqWJ#5qdw(x!<iIr4AHSx>KL&z!6o?HLv&Yf<@WiEQ|sYeA=Tx8I!>+HAY8 z?Cq@`JNhi1`_497n#Rq}{W*Gj%GbA#`|Y>cdiv@|ZP759I5pr%eAdl^fQ<=S+13kw z99eVgluWsHdGhhTvsz1YA3K>(I^r&0J7wz54?Ds-VszsE2p$UPtiEx&zRc*#0`V!Y zZS1iQ5<4t-2bz(({AXU8%jQLAetmuIJ|%Jnlj=nM1<|hNKCgJ!OY6+6IKO`3lgMv6 z-mcr&r9a-dbyfRz*v~CyZ@u;&+4jsrOieH8^X}FYbAk(PA9jcZxADnJu|0ZK@_OyZ zLm4a7J$L+B`7t$0`%3%2obIxAqwP)GvaV`fclmUg&+Pu$wLweEG)*2R&3aQ&?AQ8e zCFjwC)`MD!uXPTmzSf!l|L^zv+fQs`F0{)2df9C5)H0pzcZ$5T4$LakE?#~3)v+~^ zn>VexS{Pn@=dF=@N&b<*oY&XaZ%=)@d1YzYZpN6>_$6l~r}({OO^wFaQ+3e&n95~* z@y*7$9^q?({X#;FKK_2Q`Fz{DtV_|sr}FpzEwfkzDona=JmuNWGTCZo%nbW~U9;Xg z%(=Gb@6O`qPSL5)?&Vg5Yk-z99GjXhdooHVAh)c6EAmoZR-tOy-Q&-;A9p@JWx~lB zhRKhrHuYuHZ`a@d=hC%=%X%9$R!=Gb%{*?am{fM|WADQ*k!Rcay7WrS<6ij836PkT zt^H@p>@w%>?j!C~&Xy_EuhqRWf2zQ~TqX4%dAGJ?nl0Z~utN9trd7JdHD6y{-R5+c z)Beu~=PbwVdo1$q?6{I+$=<2I`3m-x>lrH?wB2Xw#_lpn&zlfDH^yN*`@~e<+I!k- z_q_X<s_r+Z!#P>&ZRoX0?Xi6)qr^A&&p7*DOsUxKrc}%=)+;OKgL<}=F%H2Ge@#C< zf9ruI9p2nKYJPrN;<`5FrapVw%S%V!wuoA#vCn@0Osrwkt|?dMY_6MLto239FT>?q zcc0YOySl4Y!dGm&^vAtl?ke{y{`w!ySN(j$_j*rHz9=5=oFAL?^wiYC%b<ev<{|&^ z&8O@>olve{^W^=$-|wpb{e14+s#y5!jO5+t3yr_Mo)Wz+hx7Q<6Ow)_)?Q-ym>M<% zM;B5dVC#Wqe!Gaewrjo{vQr&}f4pNZykGl0)~_{hXX2L^7f-!ew&`)I$nH50r<DfX z);eQf|L;$P&+V>EL#NG;R=$q3T6$3J?B0LBUKbXYtK1AbQ?`E5gH21!j=u9e6E<nd zTZY)(50|g=`%yOM?EGDFOBSZGPQP1tT()bfw`pMX%0%BN#|`rra>oYQ^4okku)wkT zkl^eN@kp+G9`)cE_pNR$<G!5tP=Cwp$J0X7C!CDW=Jrid&ABpTUEg1>rMipcZt172 z3O{f2x#w(vYt-q!vR04MW9M^LT)P*p6`GkbJ1!t{5{?1YMmLTtwx@DVPEw7Op9EdE zaJWQ?lSO4gw3E5ptG#QbJ+}w%opNKdj;Q791lgyPwO?E-0WU;dYlB#b`qiMc_0T%@ zrR%zP?mqGC`mAo={Zgh`AsK-aBcqs#Q-kYweGRzIzWv@TE0*ZBpmb64;=;lUp{j>Y zEwf(NDjmJkH=6x=`fT4!^8;)2RF~e_y6ti4@@@I|-$|YNmAU(sUZm%`fY0XlYm)DN zIxgg;xv(^%wjr?JEo@EX%=epaaXH`G_@u=1b;C3zNsn_?b8eqpx9>lvoPFJ%sXW^I zzwOu;wX^>JKZ8qEswJX1m$9dN(Ae@S;R`)^KW9dpE6!h|^XB&U^Ja7ZpWV2A->*|? z|6VNazp`t#%J$P-p7-Az*%7Vm@wTR}ZY|eJq1(Oxf6o7ZF<mG(RO;mfMduv3rH8k_ zKR4fg{Z_WWnf#j3Q<uFi{Qz3J|Nq~Q$Nk%!WDB>xeE#L-<;i7R847=WdC4nnmhtmU zYB0yVX>2*6UhRzcYCfMmwSMJ~0I$rW1)5&(HXfJbW_7Mh^^WE5O27O2`}_6WiRFu} zi=K4!W_m^W{5`So^fDXJ!jH9H4f%V&hP^1BB=BQv_VqU&-1$7SBVQi+bM4@^bqCi) zZhm%SWAd+gPfku&pUM}Qpcwt*%;MZDYY%B`{*!)w-rA{xu>ql53m+d_qrc{v4%<z& zpv${9eG8s!`8qi2L2<ID+^#EG-f~w`H?7USV(Gtkw?_51H<~xSCY{x@Y|VCL!qRtP zU}TZf4fw8M{8ra#N~G)N#d8gc>rx_Rzn@pyw5Chk!}WD%Yx#OHsXMPcPafr7+Yg#_ z`nTN8`{vgLS4s`9JI}ta>(VD{ea%eVDJ_Qg-STL$lJ45Py{2&zrCWFYiRAX-b7%In z^Lrt-*)0Fwn^*kyYn}H+?|pRo&bMf8aXp^7Cq0kc1}!Ajd!m0*^waLCYjo~Sus2<} z^n69-#k<}sS%dk*t}MNBzV6jN-?fq6x4+fNndil1ZF|MH>(p|enTx9K9KBR4y01Sf zR(s{r2>&h9r{XR?99&;J<~i9#Miyi{+$uWlCbZM?UZ=2n+qyQ-Qgcr^{lzz)_5_@| znp6Mm`SmY#FPeomr=8uDnp<^ok*nGA=)ZyIw8PhBT;DvwT`)*-$?0p0o44Pq%098I z#c3U%j77rdmMu-^a{QJ)?*Dp|vF*&H$h}piS?oFgDr`Mo^W|A<^_pbo-Ph$^@l`yo zLa`){Gq(0F^TP0zj2WJFN3TWNiUzJ(w06~pV;g2p)jN|f>%<>l{nj+RzwXqLuexyy zdbWSO<gT-|PUQNs534W4c!X@Xn;P<N*15>PH+PrkXBc{hNIewgcXxlYE@hQjx=wuk z->q*O9&rV0pRqboHQ_4u6{rr{+$Kt=&eZPJ>hXvU^POSf*k~WQxmD)<3MS7j;n(J+ z?n>;?;qLd8R%_#x4m)mrLD%Bh8r7q{yZqIbP22j~@#C(DnB}0l<?gNEbL`)9w*C@X zxHlqC_Y$vtoW#~p&9|SP>zvYw-gai&?yRd?Yo%{(&pUT6EbD~TligRf_npyAK6-yq ziO5O+?GZ1%EY}_KPIK3_J-&K<f8D2(>hu47TRtoJw=iGau9BC1*6%o`FL<?g*PYns zyF_Mjcj`uOYjJZ{GEKXjn>Ky_8u?e(cU)T^KVL!P<7I#Q)?l-T@4BS(_XMs!_KPj^ z#U!DrdLp-e6<?}yycvdj{alE8z{OQ_W>4VP<_7il)~2&=*b$k^YN-18K;9&qIJb?$ zzw;v1OVupx|DV?1FH^PpmWbz+s7^kul5=fdnS1nJo$A$S*ui!8%+6`M?v!Qf?dQH% z`D|u-44d_V6i@@`^m+ULZ#K2gH><zn`F#D&x}#@XHx(YL^}ew7&dv+V|ETh>b!^FA z*s}Y}y5x5`cQzjSb4@Yxd$0Muj@O=jJ64Ou*M8sYepkyfuUlMyn{udCyxQvUlZD&; zo?KJSjr@M*RnpTtAGRgb-3ol(<GOv<yiEq**1T6uGhHqoqT!7r-`{ds@Gdaz*Pp0s z_N?oxqa%y^W%Ah?|I{8SnVeF)a(&mi=i9HU`G@_^3i-_+c5q&(i?sC3hv8ew3P9W1 z!ZKY0cecH$3fQCf%;+^F8Th4mp74ojwtX~B{HpWz*E6GcYsUO9`gvOaR7Omn_RXME z->xlN>%4DvwBp&9lU|i~dzJ0UE7oRBk+rF~P^M{`YoD$a_g&TVxM}65Cs({CHRnYJ zZ@sxu!z%y7gM(Hx{%8jIi<>Vun_IMc#cZ?OQ|ISbUF*E5xAfU{$Mi*ful=rFE&sW7 z%FWf`>+AVm{Qtin)c&Y^H2?kH@AGsQ%`cqy<iwWD%Q=3vkza16&*yc&vNXki@0v%U z^5<_Un40+F2qOW91w9V2k4|qnkbe8rtfyu1lW%WGbT;ySqjvJ`CZ|aU_0o5w&b?Ck zY|fu34hh2~mltcVY4*w4&WiFZy0EU`sJ3R_SCw-MykfeutiDzkZsX5$-e~dQG+%(| zGChGCT)B1EJ-6STk=6Y-H}qu3o8^3=N7mih*}84c+N~i|oBBg+{_I@FozHU}lo}j+ zU-@0QS~#_3{<}xJ40hefeSK~1!kjq)&bqp~iA%gvY}E>H{^;lqE6y|9AMK+3`Nxe% zk(usujm6kS@1KeERXN_Nzxg{4_5rk80Sn$ujE{;u(QmXmIVbR+jY@iSyn}f7?W-@B zdF@@=spFlRdAoU6#MfQ^cYbvro4Waop!q7+=?k6Pqj<O1PVKt!RbjiHSon)iyQhkL zy>|4mh~DSiJ3B6x>GOFOXPdVkF8^69milO;&9@uL+l(XcbNEJ_+P$-T#(mZ8E1n!% z{le+?;UBAKznip^U;3D0re2!vx9y_0S|2Qt&eK`!*2{JG^!>lOE3f4#UeEeHedWs^ zZlT*tKkxQmuC-jc=!e{z)Qy?jFNrtbKJzZ_s(R?|^7nEKSHsSoTC;ZfrIL&$9Al>n z4Gy}XT?X3r&aa=f9PaAbcNMhQ`2uh5lO-#k?TGsQ)MR&m(7#PhuQr~R%!^ddTWYZX zZQHM!_j|t|3x2&YYVIYYBTK!fpPO$l&wpy|JeCOoF`TvSzO{T7wZFb}zTWtA@|IYi z&Tx61j;wS4Z!FN-@-tR_Yn$}1WiHpY7TcEGUn!h<VnKzib==jTN5$h?HWxZ=NSd-? z&fQjxJ%%y4tv}Z`TRjuo5R>~W^Yd=$^E+R@Ze91eFqdn^mMeL+TIc2$A9*XWBl&pW znltZamM%V_6<Seqa+2!P<C6|Y+?Ws-uuTz1-}%Berrr)CY3N9$)jIG<Wtc_(t$ju> znqF;M7MFLIZI|S$ila9->s;O0)%<nu@t7Z>GiS(NXOup)_+iG|!*4IAh^yV%HDk5b z&&<!qwKeks)$-0=TX}VzoNZOalU8o=TRdL7x6VHFRBO6@ePia|UthPCE_H73e<-!I z^h9~F_L85mr{eejezkgiOuPNxFTv_!by`*@*=klM{4w;rZvJ%R{gXVQnh*E&%qltD zn+n?1RxMxip>gfOrC0a1%T;MS>3^>}-Tw7*;o{g+T2Jj5XO$#BJ2O*n|GkY1+dY-i z1Eelq_P5Xdob73nE^PigpY2eucvt<OkH^;;fBh>drG#~N5NNzEV6KDf<!yO?53SSL zar0~J?y{Y;?xyV97cOSB!}C*x<War!DKopypMO7Va`gXyf3IeU%KH>IZ&FAsiQbm8 zar&|+LJhB<JUctvxz%e2<E~KS*~Xr?|E!y=9lmbOqUv^j`E5&c<{EWg=Z>p-xiomW z-%;7q_KyS}Ngo!~Ka($;)3SKA`kyU7@Af{w6IcCqYk-#a!);5oE7gx|ed)Hf`oqrN zt1)%o&+H1^apq}#R_FbD3_p`kChA;Xl-q%$wPVukaCh+;5q6g;ku!f@Dx169V3W^w z$GvPGDUr4DB42mudD@m;b@;3Erz7dkuHRc0YZV&CY~$SBCK@hUt{LZfk!yO>1D%!A z(!RaDEq;C3obo$`?WZfhy@{NDdF@@1b@e;{{OmT$`>uC;rfav@&UriLKfQa0E3<C; zr|a*xyaDYG`@QnZt*zOy_rC<of0$#EIqCGwU%YPC0#C0`x4G-JdSCU*>SLi(|CA)( z++Du@^fb|4(em|Y_KNcdyU&^NIw))6lLv2ZZjR0WYOJ<tzNPP{{lDMsF5Fsm;oZ*X za^Z=8@)=?rzvr_#ebiF&j6K_G?;MR|T%LiEWtFhToX)M1cYd|b6}1QL)N<G(@x+cX z-9F%%+DTAvkxM}T^$j_-mw*1OjL#2#zIDffmtVf$uaCDbnA&4nyjopM<;$tFi?X*W z-CXVc+B&j+RoMJzo9E>{RH$!Q_;SLApRwxmYrjR_zVPksZReG9TBLWB+3qfS>NP38 z<lX7Ug>}08dq17hjyh^l{w~Jv>BEqRy@Ew*ornIMTUc=1aQ6MX6`<uM64QlJ@674h zy(~}Xr+u;2Gp=3f*Ln}7>ixeQ`{>Wc8)sfQBw8$a-BzlGW8(g-@`VM^Js^dUJs`!O z+yCT<GwmwaRkLz>==A7?tuE7+J~BCf(CS{Ay5F1&UX8N1=Gj(jt&Qi_%M-WRZah8K zt?+fy%G{fOR%&Z{Pt)00>jzqT8@D;F_ffw{_A=j_$9kp3pL^c5JiYer5$?t7ChOJz zThw#v)y%HyMTMF%C$7G!i)ybi-ySgI{?bEVcU!c1|Gj?QF|^?OySt!M9KvR%pPBLS zoy^mTJEfgI6@Ptob>o4v=J)^HDL()A>-zfI9}n9PN3P{l&z$Qk^fBVg#VZr+K}$Mc z?EQZ4_Wt_+C-48;_xD>gYuVAe+MBCp+^Sa>E7#mQg)i&(21aJK9runk#ulDf()H!l z)z@FI$KT&ox?1me`uy5&&+Y%;yt;V)WOe^@SynRT@|wI;r)WxRt<)2|g|8@RuoI80 zYrD2K{>D^R-KRHxzLL)0W5^<-`t|l!p4w~Y>(-q2opk)PMwzAa<j<|viK5T^|5nXr z^+`IrMQh6aY0<VD6&$aY9Wx6IyrnC1!|Lv&$c*c1Id#`P#eYw>zZbCF?%?tnn+#aW z14BIbv__toqmsA(Z`sjVFZ(Xd6<$@^c}RNkr9amaKRh@Xl~QQBW4_sb*~Pzd$^|wr z2X(O4UWg5zZv21wTJ`;<;=U`-w61Rd>HB(3TYkQD?1jk9X-}sV#XI)Mf0(oB_O{&O zaz0!mh$~rM$)zrX>@Rkm`StbnevQp@EU%_nFYR9HJ+12aE1}m;*Eb%16FKcw%=G5c zJwACam!DAz&w8yLzOKZ1b75AQ<k7X=ORuGUPS@S-GsoiM)`%a**{UbjZWmiOd&i&1 zt8ELHu3MXtsGaVqr<pDL2~tAbarKwY&vJ>_w;}A;mN-ebTw$q|vD?nAe}1p}{np=? zk0xJi7cLEd5-v2q_SwwzoatI#)*E+tTW($2R<7xCPBc&;a%r<r$iwB<SGzv6^T|pz zi{#ZjtBN>!en()R0@7|dP>~MjhNuKwv|1Crzd)NC)Oz-Pe`lw$&!4QtdeQ|?)HdE# zsob+BVY>0AX{AolUQ<rm7eDj4eS6N9Y3g65nnl-p?7k|@J}G7M+>@EA|EEM-Y$y$r zQh#cdxmqh(`q;eqfZsR2zPPAdA8<0#bk*Jie)H{Qv-mm>Nh?3`5o-OJJAZC7xTdt8 zGbeau=uy#K*|UPR>_YdI9{qLG)o|wV^Wib|{{-)T`&Ov8X7h(#PfV7Jhs@mFVZ(vd zGZ(fot(8yRR`T-FoRzMATX#0-2~14Q{T*^```2A}0)M@mzgzp++1cT-XFu9y1TXX9 z486JjNv7=z1C3+P%3nJ!^iy5tKR+%mlzZZ~HNLyQUOUt(J$-*cqvw2vt8pRgR!f`Z zY^e3{jRs}okSX_<PI~P!zwXz{*Tv`jk6NX&PFHo-{%q)Tb$#rvbMx)<ubTuP|8zAx z{%MJt-Ph&ze^-9cp1yLrg5`@NLA$2}*WBEcS~&gD+Am)Oj(+!yF|b^;_7T_o#TS-Z z{Mr1<<5EC+qSET;I7Yk}Sp+on1CIYN`fj`B<Ye{snQ=$cZ|ddV+M+op=ny#LJzbnR zDa-qrebtv2Eu6wR$BQm;J-!sx`F7i-vjXv9nRBL`j=yw@_fBn<UiR9zpwZ~tbDn;9 zbp=!<X}6lYE&cg60U9s64WG^NTC25g!=<AN(YZgb-SsOjI(I+&%(h8W|9v{G|90t= zo_%*_OpQFQy|-_h)}zxprkPlGp3RC`AQ+hDJx%B3?d|!m4(u*{ZC3s+#(J^GE=iV> zz>>@${h4}8^)h6wPtHqSd9K%D#p<#L+xJK5&A-j=^_ttgPiEyhC*6>n2^zdN>-q!b zckys=xoGu#*?7A3SJwTTo6|Q}Z7qErCaxqd#nt)m@9+Hk`)pUU$zHz}sJL0ky6nw~ zlWT&1typ|EUQNS)e%TgRlNH?JdQY}5+6=9jW3~kH^}Q2#yE&~|Zh7hL6^9OO)M#F} zc<-ilTCHKK-j|}hc0ca3K6JB{TYOpAx`wTw<F8Uqd#$LJultdh#ru?h7sJLida0o+ zmOozDE>~phvzL9!=luHLvroUQ<I;NVye3k%V}ISwjEjrboH3QVo(*dEtvXUVdp-x& zblkwe6w1*fZ@=%)mbJg_=5=4VC{p6>?fs&8?y@lLZ#$x=Yx3A@%KJ|4S-R-Ybp7~y z+j3{`%ZiZTG_CrQ(R;CI=T%{Lp>j8l>#^l`<+cCp{{3!u?3<~w30aG`P4;^JWc%_h zPZo04hnsy}etUvm{aW9`nqPh|<^O$XFW^s6Eqi+_b++~%!<@9G+@EhB414vgASd+Q zl-E=LW_oY+tC<-kZ(X*A^}1B#KXKXI_TbCk3d7Et->X=>uVv;eV@r$VV?4JTEgDRg zugN}r%^AmZ_pD%0YWO808klAoywbNw%YM_EMf`GNeH|w@nN|MD-}Q3YA@9qQMm68> zmVbVJKD^=f+x>qv8PYE-aO}7JcH`62(_1yJ@i0aG+ERXkTYt|5p1oQ(+aDkA&rS@C zZphU2KM-}`>aA&F;i8;NFYK8#wI%1)JfDYwyW)Nsy(&I$Yo2*Y<)~F?pnuTAgU#&m zwO_CPez)8IW6!JGXZQbo$tGc0w4`iJ@QQ@q?1F{2*Ul8U`0DCv`MMtupVVFZ&nIc* zvam9L|KD%_{{CM5qVw8iP$~P)L3c^k`Yl?oG=p9AmtGLSF$w9w09r^S5x>kbPW-{- znuc>nl{9Z1J<GN`sPIQ;?<vimrx&Me{hO4SSa*Bo<>mg_osJvRKvP3nZ;s2?=X@4F zHhrb>JL_ue@^@QIL#A(2n0m}}=bvk<AY1S>FE2gRxIC=r>#M8sbw3>MtDWsKeSLX( ze{7lN9>W-IZZVw=;ky6biul&8da}H<%sfamFVAr4)kmlAq$|2UdGsUb_`K49@{U8C zYd7CrX|Q$5R-whySc5k&l~dVwCTKF&m97h9IZZSmrv`A`GVuN{5ohSW(zsV9XN7~% zE6`>yJ;{lwE6sDQZCBiFlB%)}tc+!Ovz`6xOK;utSC>X<IWFjFxF_`Ouh{?F4MtO^ zoP7L9BX=>L!ENw?2B&?_t5tsbt{*%v`FP(=JD)igf$ZCJZYJ^P-P?0>YlMW`6yax& zS6%WKKlkiV)1yC;?q3+KzTW>9lPNA7qIL#!MA)`Tp{v7Ew?_Qi!Mf7K@6^-n+&-_; zPo7wuzwhTUKCOE<*B0pf61g|aG<#S1`@GkM;;TO#D_DEOLM`<6g&#)c`BMrn-zzXP zI(^q0)Es^5AsZDFFrOtv?zK(YnHd(*CzanVT5-#^`rDJ~TeoK?=EsIsIo_OyJpdUR zzo}m6039;(HSuuUQY({1mgbo!{k13T@0_6*T$?=c(`@g(sumIDja_15Z|^$oy2^6r z(1d+0EBzI=MZGp@Ij|-3@|)Sq&uC?pX6PtKrQ_(;HaNUxs{Q><*FG^?BK}!fMv%$b zsoLS7!wWC?%UYJdo0EOfb<LA@R?%b2clho4bE_6qJk9_2`TeJ-r`H+3d)_WzCt<bz zh;qM8lJS&I{ph__Th}Ju*-^NyZOxWxb)bVQN`mFT?J0QJbT*T@EN0J)vtpMlf6D$l zGt(H<=I5RT+Rb-jPxA3Tf4iS5FL$nUwU{?+N6E`evgLOKYre1^{rmfS`<!+8AA1Fh zv>vW&ebw{%xy6lDPPd+wn@=iB<h~o0ba9dE!jQ0}$H#iNdFXyj4PNfIH59a)VfDo) zJGzxZZoZmU^yuvAlHZxpyZ&4&miWy5YE4`~*%BOyX@M=5iPD?Z2B+5So9Np*dFEW* z=8CO}bJpd&;`L04)bc)Vv7+~t)$P0Y-W}VWaFD5b^U>F-Z}VJAcF1z>&_Bp0XY=FM z)@<Ha_1Ef~-~7dMj^!SQ+Q+9&EcfKxG`juEUB33p>hSdiDyF+u8T6bux;$h0mN}6x zB#qNro=qu8bj*9a_U-NM&qJ05clE!%xY&Kg1=q_vW-PlBupYG2_K{Z!WRu^|-dArH z_uFN8|NU^7e_IEuXYQ4>Fe~-_%sW3Gldk{!H9Y*z-z!=U@9*u+{qD435);o>9|1qm zA*ux@6P})$s<>ZhwplLM*`3mlANSkyEq`<*eSU4)>p-hG{nLdV+E)Z;+y8efGIxua zoe~ulmBXLisb8GYy8Yw3ySsBQdo6dXI(B!Py9vwg{HUPBf3AUrQ>E-`Dl+yy`73`* zb)U`!><cIt?Bxa(6n}nvydGa)tJSBb-f6^rdF@xPjw|PWMODUf#P<D~wK;vJXx^kP zb_c`nz707&XTROCh#MMTyEWo=^KjSycyizA$CkDJb+120e%HOAR%v^Q7i&X9z+piw zcgUBSj@wNmvQj3S-3wCjo8~F=Y4ObjaW|3Yg_5B4vgZ}m-5*_xjhG;P=uj*7=2c#O zyMJub`lcV;5W2tauMTL**wp(k9v*Jbtz#{2T{?fsg5GMcy<F@5&G{3Rwu!MJD_pU0 z-HzWczdbBc%rs;1bo9x4ZW=zd?pA}#_WGH-BUT>l^lUZU#3pp#!;-J?c*zk^LjL_@ z-mKeuDvPsJPagb!uljsk@KR9V8ntfU$o<KyYSG-sCS7yvb_ZWx?qBY#(X%R;moMwY z1jSax_HD6tHZRWn#JX<Ep;|n{Wy(ya2^~h8jaTz}iMvgE>2zgdrqbzI-x9BH3NIC( z^<!?$_Nbb$H4zJs9+|A}-zQ^v>7J#uSq?|<wIKVCwPB`ykA-L7P)@Bm)Ei~=@Y?;{ zVjS59G+rQfV_R<Y$;v44tCOT|PLVn}>5H!RtrM;NM-v_OoMrN-eu?+xm$kZL`J|n7 zrIzc2r#$y_|Ckg%^O=3KmN{Uf@vG*u6PDb~3x0L!U^DyUoRfk_AMdz(FlO<ow8!&; z);F!TvHw5EvRG%<uIZbd=j=*1F9~)Ozq2LbAXD^hcKMnIR>}2UuNSt<as9k|wCH<u z-|aUyH#@5;3f}kl$+s=p^VYNS+Tga#%gb7~O$lh*TmAjm)E6DMRrEANy=!jHG*16w z(t0iSMsk+?mUr@>+FP^&?+1Op-8@|{w(8SKb?22T51SZs>t>g|4KvBwJ1b@}j!koo zeTo-$K*ke<cx5a$2>#!9*RQ?o!Il>+Gq|)1SicKKPV2hd$RGCIMDYHU|I=0+RsWg> zs*3+MrRsj2zVp$Q`#WCWmi+Vi>z&BPCHFqd;NF`TnDFY#$~-T#*UP)VpX|!%+MeZA z_2Z23`6buh96J7JgTnQ7S-}s^|NQ(sH@EuR8%dLl03X42)?P{DV`;&fuCH&ba*BF; zOG9pIQEhRx@k(9S%Po%-7Ydkdcb`$DRivB3(Fq#J6Z`u4&dy>*=Sdq1{UgH<ik&=P z|LTh7^^ECyvESa_PS5tZbZVvV`Ze>4=Gj(Xdlu3&_3VO@u#TD2wy62eN-^HOamNSS zry-#2s4269r_ZZ+#2M}BvAcU|&`-W?w^VXJA2+}B@$qrzXvKvGZ%H`cjnb>pf3im7 z(y6b$zFW3zX<2pW*MieBb$YS8Ohh(z3M#wR{P}o%<?8?LeKM6_uZEkJ&9?Wf|MhbD z!e?`i{QCMj_vWA2doi|ErZ+d?NTmy!IZc#K`CRUqHT7(l(d9Dr)PGa=&0hWHjQ!E6 zTitsmxW>lIeACI+KVMNAJwvd5%KtrA9!;)#o^xx<$!!tde^c+xxst#2v5DPA&#Ug6 z{vDq3O9AKk+71i$G^B0z_Pe*sLSLL$L@V%wf0l!n%=^hAnmzi#3X^VM(w3ZisQ%xt z>-+uY+1#AB_vf?OrD3zRRVyEDP}sgOXi{W#VD8;rUysYzU%9n3DQk<DQO%DJOWHo{ zzcug8t*zOKGrV4;+tl9OU;qDLGrRvBi;Kr3b8l`^y&^2s^*VB2&Cl@o+NCpewpwIe zSy7;+BJv|S+UJtlJI&WxH-cJ!PS=SPisI?KxY&Jt<Yu?p;5DEzs^h)V;(o11R)wz4 zarV6B`ayGZ(+`o-9rgeJP2T^v_V?TEw+eOkd4d)$WO?_>24`IL*5AA2$C~PQJJr9a zyjdl-s`veNC-&>R&dT5SIAv4+@6UzC2?2hk(b9D<+c?=DyXbyQ&8j-qBe~FT>xu;P z>p!o|&)@UWO+!>YWkvO;jrae(+xPpOg5>j<jY+Oqe?K~2KQFBAccgMt-<3@l#J<l| z#@-*gFo!8uD0SKU!ql@qMK*#0fqR%H-Enf6X8L^bl~a4QgbR*bzQV<n_toqUTh#T< z+EdqF5T5m74pW(>>7BZ$lt1rwzn5ZJG~GX=1NUslUDlxOdR@zF?sB<?rA!XfeiWej z)~58~q1GLKvY^PEcjd>L5cad-|DV_YOSf1$zpK3Xt=~)|)fA1H0k-b_a;0BiEN8kL zlr3=X>gw>^f1tBwP1DaEjNF`dQ_AU<-<9;()(MfFMn6RbreB_XB{)(r=y;#3aCp|l zIn66?-`12_Srb||BWs1|qthwY`S<qBal9Gq+|IZ6^}5}MChFK$KP<WwU-vV0g;(eP z|9{_G&U~x+c0(F>*u=QqWoy?OsILt_*uco_B;2*TL~xd6>enDHR!{6bONVyxjDRUK z_pO`uRdsdV-CbwrTAQa&+jM!JP<KI4zGY(9mVHKVBBy!XJ;VP0@BRO^H#Q_5nSS-V z<BDBo+pAVvyU%~5(y}efpDRr3!L{^KcDoM;n19X6Uix*)`SsJ!H}l*5$p8N>|LmW6 zOY*TtWrM?SQH`BaFTyk)39K^sxV!3W*7Au`wo{(y3&$^;bL-=&tCIgibSBxgZOgg2 zsldzq(GR26y*6JiI4k-mI!%3ZZ?ARFIW<0cyE#!drc>Mu9iJ{<dav@i?ClA@w?FJP z`k1Qv*?+#BZK=*m_VjaeGIu|@bZd(4){tul?f<^?kDTbPH$iJPTdQwoy-BrMpMEi) z9>WD*NBi7=SEMyH7tMVyVwX9)@A5ABExh+{Y)n49QtI((y|_IR+j4^ETAmNL(Q~}H zX`y#(=k5Ice}BK<->-efYS9Fr=;w=EyEhdbJ0AS~%I2*Tv38Xh8vE2QEYL9i8(p&K z%%jX3KRoJEBJV!#?9j>H-(OJkxnKz|Yu(SM;;o-ESl#QF`_IoiJnuq@y2yp9*Z%f@ zzZ~YbfAQ`2$K&!_<!)JVy#4;y6Z_fu4h)TI;uq4{PM`TAXH{~d&AnI7HmWgdCF}V) zmXDS4%HG_VI4hVvR>9NHFL%zBz181!d~#K%<xJdG_xINX_q(7`_^iua9-9txy2d!g z$68l@O3C6q>3B3~=fPENYc{OkoPOT!;}PL?oZo|WvxMxHA3ZK#ZzCdUl;RPV61HMt zO<k+k*VoteL*~tTaex1R(3t<zNY2);FF%*8G`-Qhiv=`X5~h0c<KF7;uf(=4&G~h& z`n|7RQ~Gz`-S2k2E_-|H=_*;{G#`x>L9KbhYCar4OFK*7#<V_Me$5NC7v|pH>h?d1 zhDk>{d}o_!E}yk|o9VIXD-T%~KWhmqdiVK)=ky;x9`{E_MLF^Q<m^@IyIw4M%s!XD znCZ)-CaX!sM?ddA6^XsonDL&ew;OzfiB{jX*Oyv09GV-nT-*B3L6vjb+2@TG3Pw(= zx?S?DS@z$;ga!_U3s0El{^UJ#LlCs+3TbOQl-t<Gm2q*y$>kln-$kmo7CrT9eQxvp z_I>U3dq7J!o*emiW0PL(&rhkWi#7kedbj(1n9Gf`|NlsvWL%i+Z};=x@Ava93J-~T z{$2TDQSI+<niqU#=hl8cYkupB&i}_b$NS~u_f&kW{eE{j@4`v;N8e|dWM5mOc{3@? z{8ec{^?|eV?c;ZstJc20x_Y{UT=kocPft(Jc3;&MWm)mz!Rqz<R!z)e*1tN9VfCSj z%I;b0CP#&yIp5sYvaEY)(8<#O_y7OBAG$hBbJ>|^nV+{TdR3w>V^QE>Sh$OK%jt+0 zlP;NAZTj}ZXuI_c6Q}5>!ml>`OKjL?e_1)<u<q7_GxcV!_*xM9Jzr~G%+5vJvT-q! z)&2GEYd<~nYdX(DCmfp?FKlF$5=mY5^Y)ta(WWbob}e&@wk-a~m((N_Ub}nB{iNgj zmRjF<@v1sGK$?j|As}u+^IktmJ|^tN%Y_`staZA#AB(_>kOO(^mmQC9ESh>v;JLhY zSx&`d4Vg6s?%Q^>9h1GeDb@SMY^Cd3T`X5#YfMqaG4(k&a)F~^d~0A@Y5(f1J1IG( zrr8a*Hu>&ZSuQ>?b)}BX7N)CrE5PR*WQlKhuY{`$&cIYEE@59+^R{^B70}tHpyT(h z|NET(`Ptc4=KDJe7uV*151v_K&|K!Zx%A!5&C54<yiWN6Ismig$A=5sJB8K5uB?l5 zU#Np?bZJ3hVA`zSJ^y~a4sJC)c~f!m850fb`t0L+T#Z+1ue^y&n`j-hYthVlBhX<q zrGhU!@&k`Gp-coIstl9m4%_qYzA{?ut;$it)~Fr6?#qjd$~LECca>OHf6F;{Ks5jA zrAt9}^?sr6rtlt>GS8c1eLKwl>v{e|30o^~etdjf`<3T4^<w9_IOZM~2y>ZeobtKo zKUd|{8iP$fBBE!XilwP-T65Tbc~|J0>+A1NQuXG_X9FKU6w3WVb#eIF*z&tqAI7iZ z!FB3*hEStr@v{)ymEMjlR<jTM{eC}x{vA>6uqPZkaeHp0$=Ozw_&w|Ln`>42s!cl2 zLn~b6`o`qrT3YuOobk8$=pymHTYq0fpmvpD>n0qoW?)pmZ~@%(-}P+Ld}emOnC*G7 zuEBGCr$)}bE)dkdOi_DJ--%5jGJMlSE(Aw@k6y8Io`O{~15>WXf(IFPzLB4Deax_z zKn@Gym~s-YwFy5qx%-agUd?CU?=SX#K4*Pv`5E3Pe|~;0etxdhvi!}Bhnuc`D!#cX zb>TnF;AK~WLSs+OvnX_$nCCfN<oC4wo1^b6igQV{z~%nNkVZDwnVH9e<{voKWpw$O z=3Bi}KC)rkgLzGTc+KW5S^JTrdfL*g@*mB+&Svc?)&QN{yM!y{Z}^(S`@<y_aOJvf zOuZ4FK6BZhDKNc_eQ;)`@!j3!<@{?Nt%|GtdiCsV^ZYwI3Q-R8So8jd=#^`iE=@97 z!k6K``Pa4h%-qY%e7P6L?W?JDJ^Gc4D-}lrhJooPQ?4j@lBX-p?zYNitC?T(KXvMy z-oM@=dhUTMD}!%830oe>BJkn>)2+nKyUc}_ViwTQg`Qa=3EZ3cZ2q3R@JjE))9LYH zzmD9kd_H&ozhBvRtBW2SXuL34Jg#ElyRXyN2VBfe{A|Sg?bX%QPfu&9&z|1;+5^X$ zC@(G(y;DB(1z+FZo}XoIGSjmB-JPyy_R+eVt)`h?U-d8}p!7Xw^|Yn;ROWtour2rY ztGe<)MJA4tD8{`(Ru8+UD1!1Qw&Lxq@&U25xn*7R8p9Pgq@JE8;1~KsgkRq7&!eN= zp<9BMop^I|^JKmi_U!y}I>Ac>E4Nrj7yNj)`@L3H)7jHZvN+0(6(OL4<Mp+*+4_NL zKPRS2dAJsDOEnUX413voYvX6_4T0NTW?Hv{rraF%HN>g?(yu;Vmu_T*D;b|;-STC! z{q)n3ECL&trt8PYZOZ{2Zam?0hW&>F%(u7aZ(sUq-nDHR{dT`rNbUOlZnt^<y_oO6 zPKT_p`}4j2|Mp)7MNdwc->=#1BRE_Ab@MLE4Rf%aA_J;w*El#YKEuW%k#L(U^K7o) z41<NdhqERrtY4!URyzB{rh<(gCQ%QT&Cbg@oPJQxYJwX><2UUE*E{0Wdh6nGoDmB; zjcB2R@-@lZ@4uMZx-VFAV4|}7we|6!)$%iq)6dN|_rKp6yD{nLySuxkx2H#*?AzL% zQ}tG4->ehx`BX$P3T90a%!rwCvyqt{ynDF)nCUFz<Fj3+rM~^JXx*yAmPc1xPraX^ z#m8<v^}vURhga|3ssTEbO@*ndw`A3IwPvhmNHZ|9%nDl&zrXHGEGV_C)m(7h@A5vO zmlD`>=oa_JW2`lzZZl1lR-N{}v5GTymRm|>^&Vqu=lRF`<=?-Hr~@5<r^@<;=_Sv5 z&tn}ps)a4$ptEPD&3T{-u8S8p#96$3de;Nj9C|IMiODIS|7_s1w^%RU)8_3m3f>wi zy?cf6t03iDspmIcS$*bUNaO7MeLoMf%U`h#ete7ZDCCZms|){6_<OwmkNd0Ft<BhS z16V9qX+!SqZGIN1XD0|cESSprWmV?naG73^XTb6(gu`=COhkUte;BO}s&v)}3fitR zPG7v`Trs!drB6(2_ndMl=1{nx$a-pj@d>QMZJ=<ukkL3hZ`VrabFRi3ECLx?jC-@B z{+cbW!;v8zn0ot+Uf<f9z3TIUM&|2lqr*=hS<|(8(v?$JS8S_N+@vGg-khr%aQdzv zsBOAn?Y-D7-5_hQC8r6h3q(Datq0xUaE$YX>g2Eg9$H|JafJ&UjmKPPW@?q5n`0Rn znD+PA*VRg=d|X2et~&Cr-061a{-*RuEem#Sp^PJQJ?C;LT##hZs=7Ks5?VB3l$i^z zvTVz}eNA%NN=aoVjxGBd;`G;k(^{;E!`BD6wj_d2&^&$SxR&(9)Nhj}=9M$0zAOF& z$`fG=?(Ti@!T^`kD_Qb(y;Q4RcFFJ6Bv5xMOZ-Cj(&+7ZbDzha^1$BaUckvJC6&4@ z<>aJ&wZE73MQvVO{QTV6Ss7PXu6Y?8x*}^c*R`TKwx@&Ei?C;laD0E#$jt6E3p5-c z!1ASt<G<9xW8!>Au^SEE0`TEMGk+Ur9H<TJ5X<r<Df7$j?q4|6HySbV_8LWR&x`%3 zvH8ylqtMXlFC)V_C#I(634IFD{h<H<lfKsK<!c-lPJCDQOr42ii!$S0u`fjzv>*Nd zyZ?XqSMRnal!S|%9M)=HSfF~k%w(r;xS+#=KBlUrTb@bxY{Q5z&@nU)42@2WZtgRA zB@7g{^50sOb11()vU=Legyw0P9Xj57m1J_}9GGKS{A$NFhfofM3+q_FIAz?q-8Kt{ z#~4|pR2G=}>Kbi(&6x$dNzGSj!F11S_LDO%NcUt3Iz0HF{QjPk&gx5t8||Mvt~%N5 z?-csWv17tIHvuNMRrj9wPsp0kv2%u24wF)rsie&02@$eaCZ5a)Z!J6{(0cim#L<f( z*~caxDfBz*vT^Z?!ab!%apxYaU3{)$*=_Hh>CgVB@@<ZM6Ffb5`MK2hwRL|D-V|rO z-Ma7V?QGq|^*_&HyAXKk0f)_JW}SWZ=TFV_i7p#8WVZ7>y1MSnrg!t3CjAwikYv^& zxz>+qsqloDYxkFi=3>1bQexSGdwZ+BzsE%#VBru6P!OA(xGwe<7TX*e4wSLF%}Z6= zoU^;%=cf>-j*gB<!DlBA77iX?1+hjU-AE@@tT$UX`Z3<Nb*^5yPLU~8bVK5mom+mj zVP1mC(3r%<V|6+wGcz+ON$G8MO^^QE$Z4~7tXpzmU+wQl0()2GwZ0H%WRm7Qa-{!d z{K-_`<yh}*G{|GxxOV5o+X?rD6&w<Z8zUT!<(|C~kL8*~mQ#8L7j!oNsK2#+^O;*S zQ<+cg=*;4mvyqV1{JmMAek#kicXzE9gq%9NUF*+OhQ>fn6RF-AKSHC9f5Cp`XR=<v z>Z@*F&qeNL;g}MxFs;up-li1WE#r-!KtA<Ji>y4}cA{FWBQtdU_0zjQDi$%Z>=N%d zsdskg^Q)J7u|}818izmIBEG-xnyTW^aNyOetVD5>My$8|F7R$_Oq==jyYD9B)4OVx zb@j$1q^2(2-yEOI!Xe_Tu<YlF=~9f?F1>VUIH16i^gpC4@?zZS?skVn)});unp>J9 zx~_UQV8+`44;C(Ps!&<%w0JM)pJVxdj{W&lv-zgZ8@cua90E5MI{XRGEG+zJUjNy= zI$HG(wi}Ka7@1hbCnRk<EdDZ2-9U|L(rK=JGr0RPZDVM>$HFxuRc-T{?d~tvUF7OH zS=N~+BvIUWah-7#wmWqj7#bV7JPf5j$1>bi->|gd$)-lVLt5BWCOlzcJ!v#K((Kbj zg@(BtIXmwzU|?igDt6=KuLp71k`IS~Mr(t}=Aiv2#ce>A=xHA{((}NkvP{q5kdE=p zRO|YhERBu>4&QY`{2D+3w`mVYGZs%WGO@HN2vjfoT2-sEezB=n11J(AJB}uDcu!En zn(6}t8Wq!Lp48DkQ7rBz&&sv?wW0wNOO?Qj$B!0hVRI6PfJV2&+OXFTr*4Yo5LmIq zL5CwXa`zEzG0f2TkBdj~v`<=Oz5L8uT&e=U)ynTxJ`W9#-MV3efb-r-w>7L>7ffO@ zOiaG@@8$e|FU$9Rp6j$$t4R@iaiGZUVYvE<TZ5nAjdcxAHYu*(I}6)w><b#0m`@o^ zjto1HuDj$Q=MkHz$jF=T>{>suaPY({EX(q_ad0hL7M6R29U2%Ki#TO03KD+kuiom> z;84htB&czHm1-2$fZ*|4&>xv*beiq^j4Lq(jW=)JOxqkeXRW|Q0fh-%N51rUMtw+i zslb{W6%1+`TU%RiJo1Ux+^y!2Aj6XM==c};f3p_5Vzo*nCZQc<71zI-R&$xgW_JF* z!+G6yLK@Q@e9k;v!w`id#EiJ!+}(YBJ;$`yXZL4tz6nrRR^#)>XkB;`R^J~eV5vF* zO2~8E7f;>9;p6Lj_4QZTcNsh8GBobvIFiz%89D8$^Bf#L(rUb+l4~MWTWPvhh>3+u zPvEz^;Zygmw=$+<O{l6uFN{D*qjTQMfOZ`NYwOqTdffYpRrX|YA7Saqw0P3F-V$qA z2xx3|SR1zb+v(!H$_}8S>B{LT53pR*EC32*-%V#yrt$tS%-Gn&#Lg$vaWZLk8$)9v z*O4XNE5nb8I-kMenWDzlR@T|phig`^*JW}R?pP@+T=S&6hXH#Y3Tlj*7P+Uyw&FuV zP2{C_9J3EhU`^WeW9{jMZ@Dr%4!nA`>c10j<<!eESTDQQQZq0$y_#XNr%2slfftkE z%H*u@oQ;=cvHG4Te!*N&Rr=#ol+Nx0^8X&n|9d39f5oL|-TMSIb{vrZ|51K=?Og$T ztTu7<fXng+?+>@SH#kgZ`uM+C;^!nK2COy-C^#gXVcm7-dO!~-`g?vhE&h!?v@Ym_ z5`Wn0tJBM`YbiP;s4y9}CM$i<_6^|2?hKI8?M%uy4KHdmZWOxlP^Huwhr$z_pc%i? z($Y0?+g|H5p5i$2q*rs!>??Lc3RuesMkW?Fy?~i-C1e!?G#V%R=i;cT99mhwy}kWh zVYAa)ZjQDC&%k9+SViC^Q(R%OfQf12{f~Ew&!0Vi{`|Rfa+XCYpWpJ=t2!u%c4!I< zt1t6ke6i!b_6CI)OxXP*60hLrXjSv0;Mcxeri@HSMIs_23v(hriiZl~^o(WW%9Wbd zlaAi06AE3(k~Hf`%1K{&d8~=uq2a&<mPhOtW}Qu27&ni*jiJ#;VOhG*rG>g2QdnDM z;9U77RzWD8PtN8>*49n30^%$jEe<|iGo*}8|JwI##RRYtjH<p$prd%=qqSSbe}EeV zYRi&OS4CXD<AkM-2OA&~pipMZCu8woxqkOHMb&u|IgYq=yiCyE(4aka0@e&=@Qmr> z>I_gNrhgt(iTNq0Etc1k`D_~b9f#i?LP7Ca{^Z2OJI^}$S&q3Vu+{rCt~!_Z7rWmZ zvpCM2JNN7C0mGX+FPu%{0u?zCy<c7QvAPGG)TB9&_`hAdX3dtUwMlt5JGva|S(8>A zZ}`qVSz4E4AGU@;14APdmyAutg)qPR@7!1161*E{lo)>H+M&SF$$&kP2q+j>G%j7b zRCjxzh(bVCqr{Wu*^W5sDn_Pe;Tv1CuRlE8?)`UK+y@pf6@kmTYIh%`ZJC85m>3wD zSVexUz5i?N_WO0aU8=2|R4>dv0GgZ>FJR)r<){*615;Dg(`&Z#GL;Ly2vS%U;j<<0 z*<vH?r2(iG_2Meoxq6XA<0P(-qFb*-u=}-Vwu8$4HS5+*`x3i%1E)xs!m_DnHWfzu zeZ^j3uy6?6a9Ob7wiT1|h2{fl&UfeIh${zA*0l8W*I%pn*Pp%X)ZpN!uq?=D#Uwq} zLs)A)a7^$-E!eyL)34X--{0Q;{y-yhubcAr+mDnRn>da<=uwnn{yH;#US_+=i<=AU za1;;*MU5U^mPJoI9PeG_ZgzOd!Y6O1vpMI<>lxT94Nx#$;`H(L^)%7Gdo7}sIdA#Y zqZ@SYh6ov84=#Zh(;fDx_nXWNTOImPmN8cOf_vi(9mCWdgRj|~K{!iVgKbP3A1Ym3 z(|<c+)vaj_TQ+Tstt^=X_B2M$HWLD+r-RMxsWWr4k2^jr6z<>@x~!sh+U@g+?>J+d zk;#_h$iLHv4uPi5-h}tvX1g=tw=}a(TO^NJbe-*);O!U|fn)B#4~`?dzoc!pd~*HA zEaiZL#u*}prpMA{F9hQVVuywUD_GLf)5F8Uaw5fQey@pnc(kC)QPep*WO3AP9PV4t z!vwlD_WJ9mw?qVV8y&%gPr$KAoiv=bIILt{wtTs4x>?8H^&3|iw*~Ml3G!z-D2%<z zX}kz(WPShe@Nn|h{R=j;7&S`#F=TbKX5Z?Et3(u#h;9U(K!1Bjq2q$|#{AmX(aF}G zxMGFli+4g+R#s~2(R}7_dlDZWE8;v7(9bA;cwfA+hb<0ogRHjYo|3)XbBn9+i^>N( zCt{Cs4uOd9gv7*$CnhSp-WC+#Z>-}y@}bXh-@6CjRdJ+41&0O)L6&!WKA+QGzh_g} z>b>7?Wq;hidGls=ez}<F=-1cVCRUwN65zL$tL15U`t+&EGo_v&L+ojQq45;=n_F97 zL$X}0_xo86m8?ky$0zhP#{N9Hx*4bM8o9XN+}&+%R?8=EcPGc}^zKsCPrWRUHXb|N z>n_8;>(Jqd>)=F&>1&6bERXj7J$0(<?#x~@i<<a?Mu}a94Y~GHvu_IO;`H(Y>Bb+K z2ftlRbMKScxG?fV?(W`0-R$E1>uWt`-tT&oc0=146y#Xk>!z_G|Ng!oOLv5=-g<F% z{e5ALJ_nvF66*{z+$~Z~d~xXF5Ku7iVSJf(^yb>zDngv8hv$f3A6#KzWNH@Z@SWM( z+FG@D-^soPdqIhX4m{^17S-J@5V#ya7mJf1A=9{t<IlPGf6j4~uQA!%dEouud+(>F zigXrVU^3qS&)nXA|CB$`adCaQ_kI86R>mcY+<5ZsN3h96lN}<Af2^j>bo?Im7pvJT zCLOqP<w_$nyHxKnwP@ylE(sY-h9b!h$2P3Fq;pvuXSQQ#oX6U>EpX{Vp9NR5Qm;$L ze);2YH$tqjv$L~oUDzzsX{pt@Go`j&JR$k-d*-C5X+6_Y7rC0B{^WwA^Qp+OMfhx= zjHS_^>pP=V1eo>xv?qs|wai?{iPH%VD_M)Iv*l|(99$Q>dy#wf_jhyW&h3pivZ?s+ z;MT2K@;A;n=6*3;(4>8#Nspn~(4g5Qp?Le0sv8`2!i^_So;;zPtv>N;*47gW(uZFP z$M*HPe^+K)JGV+qXZC`h!dTPRF~@}a`)akdwN-x|+<50&TmMpl4o0!VI&8Ns&S=)E zfLk6|Ls?><!xK-}b0L4a|E&BWzQ0mpXGro6UMaApxA}4>m&M)tAm1hCu6n_)C#SH` zFla?sc)0T1RkNF4d2Re^vqPa-1MH7=xfZL`SHxlsk{&OGx_Nqa%k{oVv3<7-JNsBo z;IJlJ=<n(L?xq{IdgDpD&zL60il&Q(R<G8Zl%z7T_pQbJdGqGYp547>g-5^C;W?)q z{og9^-gv<KWP#l6#AT1Md9i1<!y9WI9UU3Fnj88vcz?N;sJ`w`6mC}U)7so<n&;jA z4`;iXg-g5OYG`=wPIGZ}v912UyZ-m`UjFto{_X$V`E6qM>t_7Eez-5|&ZN~#{u){r zuDP4UGJ#dNF;}vtWW$CZOt05FO!F1<Z0&VRKD}|F!+qAKy|rf|Q|9>k`F;ETb5$>9 znF4NCbxdBK^#73e%YFL`*2T3NdL*r|Shc2MbA$&r&q0gBX0eK=Q^U92VU#K1d9{9t z!xH_oXU-gX7+J^`KWEX_rv||ZDoh_U9x)zG?rK+kyk?SdAlAXl6D*Iue^hGJsIy() z9{*7Kq;^a%U&w;Lr@IVQk`hvykFa7*dyrxPB=yEcp=ipZ3%e{7Phb1vuze4Ec%{vb zikgoCj|1POsO*@I-N)h`$*aV~#2_Uw`}a$sXI+Imj?41f%Iz&a#bxK*>W({wI5ap! zvZ$%4J$v?S+Vtsj1H!iGe%g0LxZhMR&*o9Zg;dGOkFX~G17)mbZ*OhQzrSzl)TtJ? z*68bphX!dhR;(%Xhy-c8Eh~KrM@0?tC@9z+mLK@?rDRTi=<2I~mSr#ecAQ<-$L3wd zi;pjo8A|%N?t|1|czA&k6R3vcld&jz;<5Uw)R)!aU-_LB<YH|0RdjsR&^Fd7ZNbol z;(cY2j?Jsn($c0)oA$^=d-lub8!z=@=Nj@P8626=(fBZ9v*0;jUu;e{$Y@--a^;D@ zuFLEB<n7*+Y(BK_Y@fR@zlL0}&6<joW;xMU*n1x^4<DGpal|n6^y$;RZi_ekKFXxs z;lMNLglX}*n={t%?7}i~mvDwvsW$WezS@bWMATC%TkR%Yzj9FS$48DwjwjTlKmS~T zV;}%pT78LCIJaol{Q2vzW}VZNJ~^-ArgSeT-?mL~KKskgJk$dvTp+o_A(8dlySuYf z=a|kuyJ`PR-Kal~vr;FsmL|409zdj1Y*7=C)o4+fRam$&ZoPQ!^$44%q8$%KnoliE zTN)?H;*ZU$e5Q$Prq<Tg4-PbbGfdCU&i-_6Tg_cr7sji8s@%I6rubgF{h?SK7JArY zb(i>z*|WPZFU!fw-??(_0Y8?c23>vq;|Z_pQnavyXahr|7nhH(uj{QVhYmSCnJa5o zV{vJvRPQmrxC7HZ-g{A0VzW!0!%<M-V9?3qYl9(Sg572g0gYt`o;*pJqqTL{uBc<a z>4wu|71-i<_Di%Jog=#lYk&8E2TR%8TcVj^AJ@;V66*~As6T1Lt^ZzMj0*){tzR7X zJ5>GO`}$j+DHnIYc;-=I>V+lLkR79V!B1QI@O?+!YNxQ!$NdX6E}psMf=y53TdqG^ z+;9K?OTWLbHj*j)x03gpsP9Rqd7Hj%OnQCq_CKTRF)R~UH{XrZz!p=;b~+2sm@#9< z{Q2vzzYg^czO;T5H>77)nlahQ8Gm?TZ?`itv1sWVn45>MzItk2jmp1|f*lW~nzwxt z4rb@Xmd>Dw8;=x^UqV$?Rb}PQn>l^{ag*kSc`CH!@jQ??);wDoXCIz`(*q1a4U3~k zkGd@mTpFTWE1BLXamH{-azc2{s#kpY(<rWd(`d(a=KT5f>(=!ZD^1!L9<9(;&hyF6 zPcjtid=R#HMYUIBx5J#*TlVa^leKl#+~_6cEVq~puOuI^KDXu#_w*m+1!kFsfw6J$ z>Z?m+1tt8!J*qN`&O5k!R5;@p6bK7Sn2L*wzgE@SZ0`Cp%Rx&(SaF&2%VirH$a5RV z7X<@*`};X&m;XpzXW=-qq+{j9!!1SJsG)+_MM#0#_=wxb$45t3cWadHOcxf892Eg! zm1Ukj(;l7Az&$dEKiRx+ODHPZ6t?=L&TWmQC%&^3F&RcCojP*lWm=sku6_zAppcw} z?wJKMn2e2$SFc{Z^NyrEr@)IKg=PLei;~Xe1(KO+Zg?n6N_zFRYPzRMm!QIiP6r>= z$TVqPQyfES=<Y#xs>YN9Po69}v&pxp^-rfmK2zbeNS}31zGVmTWLSJsCs>qzE)84# zb(-~KJtmf2f*qP_r*)!>WAN$09pxg92}wy#X_4k99Zw0o=yvegKBL5S#_uHDI`G*e zQ4AU*1P!>ak(?@^aAB!~&#oC&$@_l1up<;qSS>uj!J3wqHtTHK^p^%*f(jSP8)q~a z^1AQf$e4v(1mjP0NG2!nu&Sx6zy4Zve{yPwM}q@Dlc8j?SKmXYC8vot10{Z)#b(Ty z5fK;nPLcJPE(-@wNJ3_&=CbD##97Xgm->4851cvUv-ze>Mqke<PJtJZ;IZ<LkrTg6 zA<xGaOoe(uYr|e!zCGFtUf8f~Rr8s)%?4T6r~C;7g8?6?z*-xYopIApO35Li9XvnL zclgzkegZmi)KbmD9l;aA!o$mFyn0l|#NwtTF!{P;T647ARUedqCerj3+YX#L)02GK zZIalMK&HP!9hx%2J8x-Ey+>Ybe2Gn{tlSwdsrO3JAz=%X;oRT*TyV`k5Gtl7F<riV zxz{au%S(eOb%zD}nG9E|tE+48OnHf87#d$jQ*dZ-*w6Cp`Sa+tVfDh%SKL4&UrAZV zS>9idS}2FL&rHBLhQ=<=D_L8WQVw=BGBh6KJYur`#-XLwM20(39s@<2waAPaGcru1 zn!PgvjTxDa3a+^R+VE-l4$zD(IR(K2DNx{@P1|g7QeR2YA>jg(;nU<t;mNF*xykeE zJXUbnU0X0Y@``_h!$t5k_xsA11<K?&ufgFa>$GXpx~6?rl4D|N)7-FQN5r>MpFiXU zo-N0ftgVU5HfD5#RuCNtx^S53kr;X2{KVy<r=7N}e+5U6i$hmrrFii~Y#liqc@yFM zZK?)_h8HtT+$J4f6v)KFr5&*TdUD~7Ye|c6%?Y3-2!v7KY~rw!MP<6E*>3j)7B@YC znahLDoZ7midm1?<+=aajPc}__{+^@3;UMdh8KwIdVejS;idT(^4No>TJ^#wl@8HO? zWX9BtL~$)bda!wNfi&aERMwMs1lbycI6Mqrr^SY1TN_5u=m4?C6JnaKVciOx0va6- zd*k#^|5EcKFB$l<WNnRdGzx2RY;fpgNqTuBCGn#=c}6|r*3s3SsxjYn1q+9Wmx9=Y zN9&7}unve2jLeAegu1$Y0Xsp<Y8I3*ZR}aId(V$a1hrue^b?@+Vd?1<K?Bf4V#m=X zC$i_>04Ft)%`0M>JbCiku+<HnT24w1AcxI3GHFtDN)36w)K~+GyI8*N22KHuH4ZwO zt+DS|+(3mSTAm>6&<R{RdU|4J-mVEO98*FR#HN+ZEyOcSk0)0LI5fU|`7&&E=p`1h zL}7)1h{lKrHFb6F9WOX>&9&mMJ`{vAOr%=R`U^^c7MOKBRgKOfw?XQgkeRvi%1!Mi zb%zBHm^Pje$-OI#brMlkXvWX4`+xrYS#f{H-{`owb@{*6-^|JT_sfJUC(6-w)`?l& z-5d|DZ#*-FBVYyoz`o&<P*qj+d2MLDszbwpbF4`#Z>A`I!kR^n1tcUTEt<P}YFcmV z&A8}gZEyeVP2Hd6G5N}-lr1{Ky1Ojf_`|2;?Z0VsJG{v>lj^N|JAYL>19$;wQ1G<Y zK&%UxzJw<f6&ZaxamzDhYm~0hiDL!%O1ora``@LvFJSeqpL-R5T56PInKpg8xfk0< zTSg|9U)loPe*CAWL}SYu8r=@R4K^J;demcKRBUW-$*Qo`SMOi%xw=}ngGp-#lkSUK zZK;)yu#bMi67PaHOdH)J_tr+(Dmg4T!L;$sl-j2vSl9gIf>PklojXr-b$wZpwmI^N z`Q+3dT@Pln3TDd{y;k^3Cmtt-Z>pzvEY?b6VmYNPaQd7=m~p8PmXg6BqfuwJj^C{; z6RD@Q-jVlCG{Z;C`F?e-#<rFfUNSeH;y&V5P`N$8)vv*!lJ(DhIj#Tq#bq&zffWr7 zdydbZIkWTd=B%x=;#X_G`F*3p<YU7l!=r~kz1qt3*-so>c*C5_6RBV(!@XNx%YcbR zOGlvl{DkS&SbGl_dL5o<=<4Ym<BVJzw))U|4edKyD+)gTc%*o2@tbFzI4AnRmLIU- zKGGi%R`EaNI){M9j)waeWuO0Nc!{~b$)ONs`1?cos=ck^u;K5clBG)6m-In{ZGi$4 zpZ@Dy?Q5|t9A8`y2&S?A%x^RRy8xC(z-8aDfP|_lt8?4C%1h3sZPs7^J0ys!vEt6h z3y&`zXOK9YxE_Cp><NoZTv*rII7gus+ZvS56lrh9*8gBr5l9a|d*+OeuI|yyu(e^U zZ|Tc@T_@cr!Dc9t<Z<Lc!Iqm1&*o;~%d8?X3Uv!M&3@~e3Yz$|XpHFK+84rwWgV}> zO4dg+Ry}?C)NQfhj_oyB>)N1W*^w)s@5a6i5L!UzcprF}diBQJtK3YY0tGEMw}s`m zVsTQAra*e&+4JX*_gh;oU&E9i(0;#F!pyKDiNo?r&gq@YP=XgNz#D_OkF1}{SMR=Q zzpk8BiAF6;`kcaJCnu{{XFNL6DZIP<z2E9x-)?1BuUOu{z2?`;<<I97`-y=Le7bo2 z)bUlT+U4sklHXLe^h~|sVI{r4W45iDIJOe?i;jT0zpkF%wbx%K?s;)JLzOkj;^=~+ z6_MvR<5>O;%>-RK7cxvv?YsE%$K(FzE%jd(%YVJFa_iQuF}D3SpFH@#e)%}9-|p9o zHJi_!TD0rwwCG<EKO;iF-hE$Zo^12?%Vp4Y?Hga!MOsOp4*WI)Yt6GEwsGgqoff&P zZstsTI(31?X$=8pow{8HY`4pfFaLziGw>QuBp5Vk)l)rv=Zs>{2*=u|Q^TK~D*62J z)#~+r^1*Y8Oh4%?`TukN|C^iB{l%vK*_1c$@vhWgGvdGf`FuXU{BG&}A6NIkUcdj} z-SYdf+g;<osR?uknLUVwn~%iUu+(8sP<Qasu<-EeYUSs8OxA)OjpB#TSKrlrz7lVl z*rj7&Z@+(X?cqmvsvq~7FFR+uq;0N6Vbb?^cQaKd=9zusJEi~ny7G(Ux|?^)@6YX< ztUkYHQ@rCUb(W++ugX|#-GUA49IV%_xtLM0-eUm=lc9*}thLsmwOA(+V7dPX)6}1? zmy?h8J>4Q-{bpnC+ZF59u6>$S@$2RC?V*PixK8W8o}MND`Shh#NoPb7=X~*A$?^5b zqA9aGv96n(!0F@Tb0pv7>g%scd(H|oH~KY7%rSIHUXa#&4gbs`t9ZuNsJYeksehh* zK5uXT{Z4W4TkUl_9$i@(eD}MmpSE{?|K>BGi_6~S%LjP=O#R#BJNb~G{ogPAc0U$8 zpLKav(wP(buOo}@N+$<;r7z0H7WB73Lm^wEa_?@>+NToW&<I*NaTe>g40vwj(gO`1 zAK*Pc&$(;vDUq6JOBc`$M=hJad~<H+`zqrppFbu3n*JFR&7A1u#l{U=R!JCtI&IZi z_QO}l_hm{6meyXv9MGDe>C>mrKKqO>e)rC~2RvAkUL0fSOSCz+IpRK+f&`x2L?RW+ zzPN3gX|cc!blvBiZ~S#1n)Pl+MMs~$`#b*s*ZA0b))$gKo&I%nwp!~+{nyi9HN5Iv zs%b8dZTjCJ57ch%?(Xh&OLoYA7~-99g2`}3vd8fQa@%*V*^e)Sap?tY?0p%$+%LA` zVe87DqTw-u@nxHxtG-?hUv56H{9fh!`hP#w%<DcL6@S0y^SN&QeLvo8K5zH+O7Q=W z^8Y_>p8q%JbF|q?-QSo0|9k)c-}m+Z{(hRiKd0XE#h*=+)&2MVdbRpu_mA=~FD`=a zuoK_^!&S`xym;W-+xh!tV>^HBUYQd8)c)U($18rW-F~m?``vQ;KOYX~z3MlrJ)>X! z;UN3vi$aGNoR(k<*O?b3o$|c7pun*#zF5b1<pyl&B3Tub5qIsn_4l`lD(4h$@Fd2@ zSy!y^EK6`$uz~5L@WiLL3f`#Q0u{Eb??260C9LiTIzeUc$9dK7Zm!sQJ+As~cKq+C zD2u)OJ|2@+UZ1tN`u6?$_tp1*@817=cmAJO_y2ysfB&CR(XvOU*R1j==oZ=b<MOso zr~72B%MSCJZ^`ca54tdF^RHsX+Fvi1^V@#8aOY0UwWO-Te?Onw|9Y`__VQ=0a+kO7 z|NFKq`eMM6<y&WW1V34~=hLY*+dx|=|NbpI{hX<<fBpV{zfPU<dgtltoIbzyoBf}| z_Aa~PpX<Ifzx#Z;>v4X0yE(RtUp(G=J?{6v-|z32-Ol~^)O`QXv$oaWQe=C&A9U&8 zelYRVwY)FQ{B|9MlYZKKJR+QFF!%b-Pjh$9-^nyF@%lQIO-$+O>6<I&)qFa6?$qfY zz4teqowpKmu&2>bu%kTb^y$-U!&dj`e>vilup2zZQ!Q$v_Ih?6wk9F8))fg$NJ~rG zJ-ha(zPzQy#NcVO>_44Qj&9q#ZQHbaLZ&kIb$dRqJ8|;Y>ixe~Z+YT&eWU8Fb9}GY zsO-DBzrMaK`N_oEpHHVx6raZZdr`Mu*Zai<-+!hCdWPlxR(kd4rGNb`N#{A+re*7u zC;xtI`FzgjPp9?E@7??NY;nJx)$28zH%ar$T8Z5Me|rBP?{B`pA5DwSd%3peR^FVv zva6xtPqW_rk*LhI|Nry+W$DYW^**0g+No1MBi5wkZs~Pbp1CV?=NhKGjNN(s;y2I7 zCu8#??ZOrO&UObVZ`Kz-eA(ZA?&_UO<dYjum7aCSQgDTec5F}F8nt%G`cEyspb^|3 zdj;0LdbBJaPaZug-f?%AY~D}N&);H-0#u4~>-fUID3zaHIz8@IrT3gdv7cdg?XTVc zd-wibjq94W_p}dn%d9(>rN84rQ|{C0w*UWp-sz>(tkWm-y2kDM-SYT#PoBxY-~0XE zIj={vV;)7z{1AP<sWfcr)9Ja}Yp!L;L|^kw3g7+m#aB1W!n;qVA1(g>+5Z3M82wu- z6L<b7PTkZWSrwl0Ej9j_>$3@8waYiA{)}m~c#xBsshPW|b}s9L)%#22|K8`cl3$k( zFMHvPRqCM0)%DlCzyI<(!17BEJn8oJ*$z2;W5gOe4m^64bbtH*u7HQa{x%a&xgWat z`~Cj?o(U5zrg_KzI>=u)L0dk(bnWbzvRj$U{~nb8<2c83+O`?7?w8;1{T{b&)sGp^ zrl+<Ri%*QdX2+;I{o0niSwZPVHzm{OY|JaVIZ@fYh<B^~y!wAXFLs~kjQ+m<wb?B0 zoV(JGPrteMc3S>!*P=*+ypW%}?jLvV+--Gp`x*Uc^PM`q_U3-qa&7xWv(4vvv!8zT zl4s57PdmA;=i2UD<5L%@6CnNdBDMvxTF{9?^Qy!b)l82y1tu#kb7NK8p$D%VurM^b z9c1c4PToCv&SsgrTxH7SdF$4$UD~f>v{~t~PWV1!Wt~2o>bG03Z%UfT{q2&seyP~* zACJ0kAD@t_`dCT3?Ay(B_sbLcr?LuM505RqnmRr9+w}UM)886jDZ2a8Cm3{3@aEgM z#V@u#KHk4vciVbv;VDX`+I+IVKOE-Yd`Q0LgX5FL(q$#K-|rMh&iv*o6|wuzJlpC` z9*eT;KZ@6Xbg%#7{{PSU|97H)?$EyU>yp*&sqJwm>i_+G9{AvKzdfk-SikextTlJP zxvDfRotwqJp|UPAgS~p)yy*PBTWj-w*Wa&r+?#y7@94X4po@>E?RmTHHt0Z%AD8R@ zJ+I%!-2KV&?K$@8*Y5cKTyrSrz?S3w)|0sP_ZY}1=@u@2e7oqZ=>NyNmTzAAW*wGF zcS>MFQj*fW+O1J*AMIZ(tk@XHd4#1iQ)u$ip5hoBn|&Z9)hShh>f*(>BxOo=$N&Fz z{c`%o`v3pR)?M56)@@lt)Q?-)>(7c-KWr7h#8g;&J+}PmsTBFg{yPu3_sgCAcWd8? zPp2<Unz-oei^ctA$7U`obp07K>yq(#o5^89*C$48eOH+q`1#Nwrzi`re}A6apFeu- zpG0KZ&LivI*lb->qqkwrGYb~oqJ5i^ZXPW=eY{s&TRU>=+iuX|(~+$&kM95fd;fE< zdxghkGaGl@Q`w($_sOOcQm3y@sI382o6oE!zh9IxjqjS?%<6*3(3?l6JuPP4#ISD1 zqb|^aYpa(ViGMo1$^A_eM%QJ56sR$=HOe<FGWA~Ks}l=YlQtch(%Bi@E9!t}Cj<+J zNbrKV_54-u^FzKK_Y7KDxg>Az_j}c^*@WGvy3PuX`tfr4{Bu)5w`5;tD)b6j=kPB1 zoyFR7%4e)TpH@=OUL3MMCMs;!vM*PH{g*Z#{i>#!yz|Wx3+C5fug9NvombZrysK#H z^Gz#?8n<%0Z;F$7I_=uz*!=A^Pj)=*3w(X%%4x0s?yFa?nmi~zZ)<MtwI()a@t;i= z3GXI(>v_KKeQo`IkMUZY^0{H6t=7kVrkrnF&aW39{rfQ}SZ*=iuYSMx^|i1@{p7|| zwj$W}(o6|SNJ~?TO9*?gcCMa)M5lw#{24B)bN}JlJ|LhFP|(Qre7ftgfF<Hf|ADIf zU9;z9XJ=<_G(K<hdGmQYZ|{Ad&sk?So~Y>BvwVxg^HLFy;%iEiU-z2d^XPv1>GYy= zpzO$c>2*w0*tBILC&Mxm3T1oqgl_km-<vV*{43Afr(*9{y<YoLcjx50MUAc}KcBPK zpMGg-*p9oO%J0{f-}=RCerLk9Yn8I;6P9Ks&E+h~42t+Bqx|5@y0Y%sbNsL8nXlE# zlMJnkw7KlpeyT=!zmDvGEIG(aOTg1mv`#dB=JttJL0pY9yf&Tj+9kv_8zb?6#}`1Q z{elxry>5#|tlRdoN@_Z3);(8DdYkol&)O{!>DR6{^V`i3JMlCkSLF7kOF>oF`|G|e z-jbrX|ILMk&M)JOukYNlrmUsk{$E8@eT;ii<m#)Z?#`|~6DqVbe4_dEzom=2&F|M3 z=c-P(o3`563)GX44i&whzq%%c<J`G(X>0T6HBC32RUNT&$srR>9j%_ludn&)y?*Ah zVaqCxB9))17h8M%o}PB_suko8F=N2iW7U`oSvL^0f00OyA?qWZ%`;+_Mhmdun-^WM zf$8WS$v5F4pj#QW_U9S-rARDg?{)ooJ+4|;{DA58n90{R=cxt0oA%?!i^cuR%Aa1k zcInS1UE}3NnUUY`6#E~U5GHrM@C~R9dPCCfoA2hEKKVOeEb89(<5BmU_0q8}ze1~c zVp?X+>z~H0Grjg&<nwK(_W%F)`(ljPXIAkT0m<~arO)<NKAjrADf-c)+4ujXMJf1l zbwB@i|Nr0nbJeHYemKDVQdc^5d8n)N>%Ok}|Gq5GG}vi)A@VaQ6RfJOh`g=NimjWo zK!<7KpP<!Ot?o1aYGY`u<2)iVIW=sWD)vEBXywH!{^Gh`oZ)NB(pOhn#p7n!HQmV! z6a04TR#cS2q!~q#;S&?4&RbM^Ofr3rP35N9|DFlWEm}VB>8I0|maIK@syH(;^T5s0 zIft%QCjatXw;XiE`>*T1>xvhGn%|KRV-n_8MV|b2blWL;>oT3!u`zG%@Ba@v5iVnO zJ?O&TSyRO_OESZv^fYzW+V6h%EMof$zjdo7KAE07bHlXH`j3yl*|`Hc`~ga>uw)y+ z)!5m|IWsl2MpX0JB(5VR-JaoHM;#~NX`QifX$z!BO)WXT;q(U3(f1<%A9d^dZSGw( z$>X#a_nqqZdw0%Kp8pawdUEQ?r>RA)m;3Yg{Y)zhk9ktG{?d}QZ{>bZ4VxXee)gj& zttIzszb|c_U-@k28~@qycM1;kzU<A^-dVFzxBv33u%9tZ;Zn}uukQ>#ziZ{@)06KO zg)Y^Znf`9aM%~K?x9QB+{%|9?KQ%Y>)1r$RCI8oe_VlCYPlF=J8j;YG(@U*f7i?fM ze3|sBx8@f&EC3+Y9&(U4fW}{6eXU9~XZbA@F^79w_4jvg7>}L|JKisUKFhA~(Gj)! zT=COOU7miLx@nb_zS(}mv--D<(sjc_ug$&V`bE|6$E%(te|^n=2E4xa`$04RGTx<~ zAv+J`?S8whH2cK9J7GU#4rKD&jekBbe0nM9kj%(4(y>ogc|~rDE_#_zdtU#wou>i! z${6vD4y8DJ<<vNH=FC(7=SA<lr`J_>hb4*Wn2F3or3IN-THx@gd@8!4rY`c${AYd| z-ofqHu3fv7zP<kczu@J5Pq)PsYX<JDSsL^3OS0Zp-Ml}Ky7f0PW!BxCR{AW-Bl%n` zsLLKHyt6y+)54<dTkPw8-@fk`?J2yns4;h@{noXgb~ap=*tP%M#`4JYCyM((wP03C z{4<cBjGE8sM{mEl<||js3H{e~E3`3(bPTjWtNRKoF2^-~@7-m<2U#bRWqLsmI?{tJ zvKl9G>FDZ)*4cmTRG;TD|J+gW_&-ml$8W2i>up>8X5(=y(<05l=x0r-rZU!LI=SC3 zdF!9O)oWyZUcZ}5IWadiRW(<2U3}Hcr8;e27R|0%v8Cp>mC!q-w|cpc)a`$IhUv5$ zzxcChecjj9?At!S-*j5<_wW7xf9u@ZaYAv+@6s<XE_$%_%-OVM_G>liyr8SQR>plg z9kfwyU2>zBd>6K!daDq0@y^4e)1x^ABvv@=iSBzDx#Fpl0X&AVFuHUM_<pADlv&}S zY*qKCA}3}ZWSH&dWy{As#-NjfcP{*S(OrIS>9xqnjoo^?G<=0$>&&m+T$y)~@AGM; z%d2GFTDGU3pQp2DhsF0h#rFUIeAelCqclD0>z(5Bsr9%1DDj$pQ4-bGp1=8RK4iG= z+v^Vx4@d5{jejEGXZ?1|^!U1+vA1i#-<@tIe*N_`=``Qxt6q86Me3<<yliZ~;##gr z_XZ~MPp6BLFJblo8y|6;IdjHj_F1kyt(RGuriygDl$^Z9Lc7faHP4}DT#?9x!orP{ zez)!PlLd_+bA7*GUoR379qqk;&$nCI#pPS=-MFq=KA$srYR{A{{Puqe?oQgNU;NVx zRINlQ_};qp$!AN9RJh9YqZ^YVb3rw$SlsVN-)`rh|2Hev=Ff-2nHytlA~)V~)!VCg z{clXd+@AqEZ*2?xcQbvyFY~<@j8A9X_>(+KMC@eh#C21r_SfvadGqF$qaKz%lV5I{ z^tOA;svX&PL)OPw-I!*#)5`kvbFG-|7h~ou{U^a4^2;R#%lM{7lf#_ukkwbc{yy{l z0NR-gS{c=~A*ZVm)#uR41e_8UJYf3xxcBjf_8Hb<TIUqH|E$Sgw^OawYWAGxQ=c^* z)tx=%jKSi6-1>V8CjYu@wS9Jc+3nozsk}#Bx0L>TI(>Pr>$5Ab*YBS<t@CwwT&1dR z@yDa$<;4QgdMCBZuW$QwRH-d@YW?T4=9e4Ht)}Z<KkIM**Tjfj`MKV|qepkY-#1&# zLwJW$t<Jd(-v4Jwt6!{I@@XmSrPo_lY3$5f6|N_%^Zmi4Teq&iT+w0mbo$TIn<ZR3 zFn5+}G#$8eCua54S2a7IOEa-_X$lCNEz1=Q<2OY1D0=?ZSaV>;lj*KXp(*OA{tv%g z_6K#WzQ4ISxwiP(%=Ef%H`AqaYwy*5zZ-dS$BSnQYs>Fds_#|p`)gJCDJ80Ymgknc ze>R=lvKZ8sJbSeC%Fm<X@k?}{`6+eFY%#xAp{%>%-B(b9@><RFx#i1_ZkwtvW}dgY z#%AJ|Cp$PE9~F=HiH`sN>-YWtby5X2KHW<_6AgK+`qfW=HD6^_^(7<9xomEj=+Rv# z^>_b#Hhc4JYkj2|66%>B=JH!j->@xj@m$mC-=%-1zN{#~96>dRYP4X@EG^x-C;zsK zU&0*Lq)%2Sa<+J{xQ3-02MeMu9RpKSQ?=in<#$W3tMM-~o~WLhX*T=i-igyie#T@r zo_p=w&bM@X$+9J1&G+jtolrgK`uh95>U_NocP8eV-zjij=kV_F@Av!V=bp8?G;`9n zwKW@8)a-s*+!G#C=&E<<&hhj1|80C#-tbuXaz&f(*O}fbUfVxsJ?KJ?>j5=BtGkk3 zFROZ*)opUDW5ecE-^_QObDKN&aM7Jlr_0{nn#yaBZFa^@L%_cE$&F3D_i}&DbI@c- z;`;5oS#aH=S(s@A-Yn7B;js9k#?fQ<`I>89uib7|DX@O;w_9po=UbI#B_=BF{ky1J z@0Lp7iyIr0Gav4#d%1La(bw;``*o&AiT0K~J9u<u?#=^p^?yFbB-}jy;_K7t@$;tL z-(O!}GgGvq`|Y#t-0d}boAsN1Ua$Xq-K61*RnqQ%zg}N%cx-s|Vrk|~6V05ve>Q3C z*|u$3n9%jY6_HV%zpd74owE6Ur+98^(cj)A(Bx41#vjjarq4fXDkXp1X1~s~Wq!ig zcFIWXJMih#r(Ns6)_68JyktqT;;-kusKki7c5Zyc-E;C>g^GM^(Mi?Uc75D>J05iF z@4HdMzs2~ky3skmITjZyuY)d6R*zfC8(Z~q=}w*HJ66B{nHu<<TYt}lZPM3wE@OUp zh+F^6)SnOe>u=obJ`uM2<+9mDs`Z~H&wt|e?9+0q&kM^U?DEdf-6^J6`@Z`A=}>8T zP(RTA=VbentaoN!o37THJ0)JsYiG%!727ty-^u*=(U*-oHX3jE;^=N$xa8Kw#qO7r z=GXmtY5V=o<nBFxH(oAYb54Kr>HY6ke8Ai$d%yrRS8)7^`mIaTr>)}*iB?ei`sB$I zgK(i-yklScKx<OBnsaTwSNs3>{rK;Nck2KDjhyMLSJdhBcGbUc`TxJ2RG;6Iye+Qs z>D2n)+v{h~pMTy|@TUvtF!}VYnYj}mT$|Z2?cSwYsq2?61?e^1X^a$1U*}L`^Z(Ch z<&RoMkL$i|p6{x5ckT9jQai(UCS8xK&Xo%Kz3caZDsB1l+7AcWch>CXcr&N?+|P66 z`#zsBKJQXKuj<vx^|f!acV;|(eAfK_9mxXopQ(l6&oj%@=T$ySpI<vIOu~KtQ>or` zS@mUe%kNdbEUf6a`<1aSqQ>U;o6Y+__U8Y2Z2#|Z_`Xk5->fgJ{%!T|);@{Pe>O$T zGLpfTf7<i~-d9Jj4f_>#!IY8dszAreyE_*e|8aHe23HN}B_=cvaj6=pML&6+rsb*> zDpPy)Y+c42<FBB0%kA2NiM8AEo-&`(?^eEAbTeY^@{+Z)KW?equav9hXY%^Z34u?i z7hUvFdVQw+w#@^J9l3XnU+y}i-|d#YHELaF%(m;G@yEarfBU~BX`=13&YnH{bk(gF z$t`p3_QiAuKL0T%Uab3)o7X;d%m%dqOJjxejJ;2b9UB}}S*^^O+BR&<z#N7_c*!A= zH7q<_d#CY@n=3&z-gl9IZ_fYIF>0{#UiaH~$qY~)*(qiAv*OE(i>0qS_4W7v`Sj+P z?s@&+FBbQovwFQ|O-=f(z*}DFzix<z$4q>k{QPEg<kPw06TfW9D~dGPwe~=j#{93^ zlXgBjv+3N8Yk$@HqCmr&S+DK(>-cHE&M~~Sd((tRi#~7JQD&1_7b((x<k**wYo&{8 zB$scf{qym7^|v=Cxk~I_d_1Y&?W$Q^;D~TKtTIoS!6Ym!-0P-XEBs;>L*pv0E3d!K z_;ffXaSM*~yTGx!U<1?V&!0o@N}l=pdgbzYr)*p0|Nl6?(<r*G=EcHxGpik1t8Mz! ztH0kZH(&WG|KGFxO^3weYd(S+Xr2#GWP2CSeYfLrpD&lY*3H!EvC~53#Fx)4y9H_k z?0)*=<Ky4o-}`r$#<`n=x@~uQUmmyEufzN1+wFY+|F<gl-u;xxdvSgJujTcxc#Qt4 zHFdhrxi@up-@BBjkC$witnUAeYl-~)+HW`46#RY!nvCXl@wgsa9=pz`=FHRSM|Ce= zIM~c??Y(V(=Z4$cUF71c-0p#j2{ZBQXVZ+=KH2$v-f7VlXO2fqxioJVmO8*d2DC({ zf;)WX_Z%yyh6B^Ui*EVTTQ73qD>jw5eSCd$ckW;2pe1lT*){9@_I+R1o_O-Be*drX ze?OnQ&$@Aa|G%#u5w~r!HP@y;xel5Jn5gXj@7MbOR_6k`>*iFy+d1)m$%6xpC!SP2 zof_^Y7njaZcqm-v!ndjGYnGms`!D@w;;yd;nE6YdT`0Y0*O7nd!;Ou}ADfTq@A+_O z_4<9kPRIW%S{$bI!=rxp>vg;H_WgX8U-MYn{BFtRz2EOe`#kU6Ww7Oaa-i0yS(;`T z<$t3W*OB#dTcg%4+{<!VfRTw+u%q+6`+2RMt6t+-r+uJ|Rmpmp!tRPg;KPZMEN{Kz zT4sY8OpUUjE>iE$YRkLo2G5wfySuGp-0<!mTJVNx+qvU4w?n>jinuFGTfAxgibt3^ zT4TDy+A!^NzYQk}C>UrpMsS_lTGokgJ*`7M>#}9b+_pw92ko$4!nC{W?W^~{mSKhm zBhzdS4?XYu=XR<YJYxzvV-~6V7tb2O1R0h$3;Tc0Tlr2{qp4x<@4_GFd+ji$;kc9_ z>xsKQMEUTraEQ1sh+BXBQNV;$F9~q2!_2*4kv5$N9Gf4#iS24RaD(fJlgX2%{>7N; zA8RV?%*ly&dS%h5%c}G_r0ZtIzvYhWIbm%#%wCSu0l~EBJWVZ!h64{+Wa6IfcfmCE zu;7FkvmM)OveW{288y=mNA_;Td9aXxLVyFK`;5@!%fb2_Q$h|rOlAG^z6tY4p{v3Z zV!|$cZ$G4Fkiw{$b~XC{*A7^51@<tCQx|wMy3gRPEDtJX;n>0|6L;;Y)>;XSBzC}$ zMP+)WqGyA{cc!2-Wt;Bp!oEow?860nnEDJ}*M$dqGO_&9c<^D<r+@9vPry=0_BRS~ zx@_~1kI!1!1v(bv%ImK}x`jB7#)P=%f_~!-&DDSM7Vrrv1ZXfyfB74A;40?+t__`_ zRC^`c@SuP~09Rv#m04uOA3TW*R9U5^r+aUltM0+XqNOZw+D~<Q@LbHDr5b$)E?o*r zy|?@&2P2cSSO@D8i`6snc5ivy6Dlh!Pe>QfQg%qlVNE(HdG6FQQOwd|qv(wJ^W|@U z&$sexaENC~l9ary8gd*@+Bz1t;9|y?)ZM<S;B$f$rp?+In^uZ>&P{>^XbJP|Jqtg9 zmYtSp3Ur?=2-97QJJE6oXmo&1I^BK8H@Js^k;#_(NKo(uSAQ%yXsXDJIdgKhM%nJ) zUj*9VVAL4lljOPbNzh8X8+y%zBBG*BZ94-RonG*sY2%5UE&qPZ!%UzK@hq>tR^7j! zy>bFW<3`aA)usC0lf6*VE>da&rI0Be3od5#ycJv6C#+x)&=?WtwMBw!Du&4mdO#&4 zbM5h^MNBNm0u;oi8Lex_encQt?}g2vAc<akO(Ku)l@TKovuH<aYF5^&=SxpwJAQPV z$c%aOzSUJP$p0DQmte!1lsI$FoI6FFL1^wpi3NwLEPwXBuE^_uW!l)t^`rK>*57oe zcnt3z70ED>g1J3RVcPVhb=BB6K||ecV9{8$*KS*M3n*#bXHD{yyi>I_4I>FMGAVA@ zvgOM6?@?MR4h;@!0^L1F@s;!kB0z^ZZH-!+bNUQu(NvXK$5EAOQ#M99m11g3057D6 zrITGE9ZS<rbkBZ<;W?xtq9-ij{k^@h@0Mx0H83>#vLqQwzRg-zisA0YEYNmR6RBR` zdja4xM}8>@c>8Xh9=sRZS(&g1xS+XV!-fmf-<nMoPyn46)l;%gcORA&s2AKDpFVxM zvGzac$PS)J1+h7Hdhx3;O9p7GoC93oEM2-(G5<_v9|P$8KBl0qRzEDG>`z5!%$&LM z%x@D}MTZ3<pe4=aXGJVQsTd_yKqC=!de%MAb_>mIpIJN`92T-9y?l{-wh+s%{l<5! zufA3-jO*rX0~M=BHeLQJwNwS4!KXM(q<T-iXM3f<$W$v55gWVq4ATl_q_}{(s8w{v zym{{)d+UNWPA~8V4douv>tVtd&ISsNvAfGW4PO^|2O2W5B<<{QO?Egv5!>3>6sE0F zXJ1<|fln<Jo1ddtgr&6&i$8~i8kQw9c<al9x>-(XDD2Fs`L}z)a&#v*UgSFR(=oNC zQ7w&$WtHLsj?EYUsXM$zSB4Zei-jg6h4sq%?^Q6cU_6<+IBGuTu`d$NjP28T-?`48 z#VK$j=zw5a@{jwnu~=HVuntlNw};{FBKtr_retk}ooDJbG1GmU+Jg_9HrDd5e9Y3N z{D5Qg!nHr~oMI@TG0S1ejH|D|KFYb**}~AM#BpSkK)3V7YuX>7QHA8ikkA7UQ(Y^x zHQ1Pv^&W6+UiDAiZ9k?9;3B(3Hk8{xt6sLtUqN(3`@N^9R${gW9O7AI;->AJTkP9# zfP+;g@!IszSWrcT$ObUKLqwi}4%t5R*UMK}qp#t~rcZj0l`tBcQ$j$SA}!t@cM)RZ zxBHQhr&IfNb-Zoqt1H_I_Wi#5e%aJLpk*JsViTE^1tX%OypFHMHu?_td9p^qg9D8d z-(1U_!T>tgPRXFnd%m79#6fUXEF3+cnpEV;-x&tCn08*-@a@BokNx#~bmzyYg6`bf zmKQ$bfCo#GrPSN16_}+DQqpl1h=_>D*czpLbMs{lMkZyEj!yZ@`#Dxmkbnm*oN>%6 zp{S^+W&Kf;z3UwGOxM^dl)u0C_oVv#HPLl<^^2#T(2ov3Ih|Fc!!>h_SmIpl$Av@e z-mnf-HO)So##sKP#iiju1547W<45Al9kC45fR1=RbN)R4i?!3Us>Mz$ZA)c-aABeI z-Rm<~yVON~FY)RNQxIF4b7nV2AR#3ygL9x(eU^#T;=B7VTQM>nhU~&TUU~F#IcDiB z$hBtOI=<(&Gs1R>|M>sr?(KfrqjN1j>_2d;@)2j}MEP%x>`7}|T2d7IKQ)DM++59Z zI!g1C#vTQcrmaE~dZ*mbP|4UFX>)Ue2B+h^J1z-|W-RQwEXQuL+-y`i%qFwhEQRBl zkkf~P{WsnAzwckX#jEz*9Lrk0+FzeOGGF-;5*l8+Yt^#le)Y?X7bd>^U{UwyN5j`A zT7vOr3ufm8i+8wc%6`6tlopV@2}!_FdZ5G1R@QedXJp~<2}wvyT=<lG?mNs><P)Ay zT3WiuIzda`NkLp{THl1zdb{6zd3m|{%FNX+H8&M9K7}|ch%GHS<Bh2q$yx(@`}c?c zYSqkI$;)y~PaxP@ZAWMyq7s0_xkJMN5!P)vH;uma>WlX2P2lD|-8*6TyIt86g2A5S zm}Mg>*s)a8{7o(992~@Bprp9qDbwc7n@^uUE&9{N-<U%{qT9je)r?!Z@pnovcd#V9 zVygcBPWE)&bgyID6S#T13yc2!e4f7eDQNWUbo{?f?<9+-cIZck`?S5{IC5zUZw2mS z$3Xru0v!nbs%G7CRThpOr48xl=jCL1BLxJ^nKKqO*yov@a=ZWJ)Ut(%(q=h7-j(l{ zHcWkKvGdof)z@vSqdcd`+U$FCH9Y?B<@x`<fR^z7{c`!^eb8Xv-D2KJ53j5Y26f>- zpSS=2>9qcQyV_m;6R*eD|2<#-uUP&0?)Up{tEd0Z-~0dH@4|H})U%|+^?%L3Sbkhp zz&qIL!BRYJa1MbJEYF@j3kwfF{`KaZDh>gSc!gyJK2LIjuzTb{<@34W|HNh*^C?Z> z=B@s8QXRA-;c45ciOTN3!l$lIx%*?&V)y=c_x4(gpSWh3d1S}kg2TN1_Wypg%h%m_ zz65lbIA~b0{{M^nZ@1sSck<^k>HIghx92}T)|>fz@u3RGP?tGNx4K3|KH2kPQTL@e z6Zif3bh`fE=lSz(tIf{dQJ1~Sc75sexLK>0U+#X9Hh<H;P}#<a1x4W(rsK;493?Di zX=&fy-;bZ`|9wjfL*qf#q)*30w#~vaxVxg`z%<=xw)=M{ZT4w=cVR=vx?LX*abKP& zEExTM&u72+VWr`l!k&Tdl>EEA{@3y?pSE7Q*alkkx3+5Cjz?W<9vl^qmpPa*(bD>o z@kG~?f4|rNFF((7^WfRp=KH^1i_V_AtJvn;kGbz_)U`K-J(}dL*EwPDztErWuCOLG zM!n{;!h2wf14qv7ZD+gBEc<tI8JmDajDlK@PxNVQO(-wU4t?pG?)6XR*g7As`~Um? z^JC{h!%KF&uOmIn|Fz54S%kmc760$ca{IUI)cay;zg~^Jxq98MR}T(0-<+PU`e<$v zD9PD=zq2{4?aPloS?gbWj=p)j{r<bU^vEci>Hkjp*In8y&KKt5P!pMV<QKl}sSev6 z_ONCa7H(9U|1pz|k*StNOiXOgwl&p)#h52>CA?y~9#iZ)zgGADtVIW+7AArwh4OC5 z*w@vpEn64rIqUz|>+${H7d(B{qrW}>e%;fl;m7LFTRxxj?)|ZY)8nc%*DjxY?$POU z_W%F93re;u`v3QP`F!)fJ-^@W{@Ap6(ejAZ+vY7V*pSi~v7jq1;3vM!u_ZVmFE1}O zb?FoTFLU}B8W~xWs*b7TK7Y03I%aCSDt=>c_4fwr*iBP)HiTtFv@}0;+OD_z%_igY zb6;}qMNM5Y^ZVP|)1_D3|8dOxkxu5k^m&!fmd(yPmHPYM_kGi!y<D>S$EKKP71M8m zR?0k^oxktft?YiAPbXN#V<w!QP%F9K`1eEp`if6aPM-Mr<+6YIeDhzo|8i~SxBp|{ zH!<{*XH3ya)qdM=5l7~_-o97=|1apK(D>iCt`}84I=$GvzpVVoL@kaZOjm37%3$dx zzzQn`hXu<W_K0VmpJyBTV~M{shkyrbQc_iJ<oVFkj+m8W7e|M_xA_;XsqciP%3fSp zc<0B?@As;!&Gz}L&ix};J+-aMHRt+7W%sHuQFeYgn;G-Ar^iH}|FH?2{?d=EU;6y) zs=r^B+yDJ`JO8=S|8Lv(pEYt(ikn;Z>dMNPd7x#Tne#mE7oFA>ESYv%EZ*%&)VtbT z>#{d5_#$5Gz3}+S^yqZa;#+t#|25GWbLYlJMQQ!NY@4p)upnANE!pQ}>GHKan32e` zOgkZbXLa#<CHG$~ZKeBHYdft2P2Iek_I>4&$)H^jUiaI+E!D4GxqH$Zk2&8b&;OHR zmb5+p{yo`gS7qbB&A$IfZMCBBo#OMhk)d;4LUvs1zOioqzh5TBd#38F)sos)`udv5 z;kDcE%}P75)PIh}#5BIWpfo%E`1DYL4pyzbL3rzO4jv5ybMx(+HU+i%|J~B)V9g3% zOjB^^6qdcN3A>mcoz~jjd(+-T=g~qXEiG9aP=!(+|0`VRXTPlVw6IUz@qZTWp7g~- z%1-RPezf^MoqO)n#QZNG@0a)Ymwma|y?>eHr7!>f{=R%>=Z{S>`eym}YJPorxuv4~ z*S6bv-r6y*Sqtv6%4!BX)I?f&;jL#xL~m?PKmY1g*39`IEyWp`KueoM=dS&Pr6n<A z(Sc8&HqG6e#kEFSs_gmP@@H=6K#Ra@Bezfbey{rdy4~+~{a##Oey8yG>h=3(tycV= zdhy35_4zeM;m+Su^)z%AUA<OS87cDe{>0h&`z)7Myja-2Y4e(?9rhyA#CE>h_4?YW zmp?>UlN!DBC!4@pBcS>m)S!U(&Oi)T*0i)VF>&$bKUU5U7S5OoIRohVN^HkhEYrTQ z%6Csy>9%^8&@Za@WI-`q^5@Ur`~Ux1zuz;ttoW|ir8BRW73)uq`u;cdW82o?<$h~J z-@abIzYf$0d3%3fZT0ut7dCCGwfgk1U49u~;iVOp+B?D?-7UYr_dyf)rp@2`^P*P^ z9rqSEv2G#@UUxflpE-A~%Sij-XW!)+n;m>M&d6}~4`Rhq)cFK1IBQ)k`o4O8$Er0? z)&1t2;GGwpw^Q|Zo(kJam9z7gKHi%Knz0J@w-q%^wf}LDKX1>+W3tv|PtI-4tBEY% z6CGBsQY09+bJ}uC<-5z3L8~jJmTxP3d<?XTgYVn_@6TrE*Zp}cf4=I9y@=j*iTG)n z6JnL|x2xPlIvz~_`}_O!pOy2A1v8o*e6%N~DzEeF!b~ha;h^gzc%v&z-z3lPShdCa z{-0;&mld}p9&SsYSE+W|AVGERpYyig@9@|EIIO*Xk5SXwOIFvt)=S4<`#&}1ahJYz z-Jc&(x-x%u{MeLpCPZuFo;@}{T&GONnjE0TMWZ9A$@GZ7H|*79$6m#N;KmtVh6~wd zmVd(1_FJ*3!T0g0yg)t)scGGpx(<pZ#;2c~^YTmf0WZ*csJ~U4N{_$Y^)c1fIOW04 zY5afx8GTHZ%=|30(P6DMUn;&%j6(uPBS)8I!2^fSb}3hsnVxd!=;?LoNGClF#H>^o z%wl?U`qa&EnMXRzZEdb+LDRi?C3mae@11MR7j%-D-)4gLzH8IN<7-QQt)2HUIdk4T zNh7Y0sgkWnqL?0?z9gxRxjY0>V<fx*wZa9}Ht*WC>soqQpD^e)m6T3RVd3;QlLK3! z;f9=KmuYOM{{F5+-e;E;Q*%pO>e{`a<qd%)=PaMku`1Qtw>wW2bdzb6fp2`>&!_YM zzDeKz_ieuYmkZA4?S8+he!o{-beZ}qNxQJtADiY{m%r2cr~l}#k$-0w#}THfeV%xi z7P6=*8W<aIPCqXfm?rvjPKfa;P3ZA$o@X4f?UkRguHna~tUPbG)z^4=y`$wWrbwIT z`5eEr^?KayJk|8`^XAT;?d|RQi#z_up<sX8Qcw~3PiJr5j~lxrH?2DM_1~uC<9$nG zZ){9<FXQUm#oeLreS90flBdy=8+6*=nl)Gc7Q4MwH;4nDv#w_Q`wEsL7ZbXeuE!Lg ztth{G#Z0f!>0@f)B~W<nY!rE~c3QUP&Bo)Go*fm-Sa;$uzx|xF7k=xd?Y8B$tvOeC zbo$ez*Jk<m{v2eNPf4G+VylBrz)r<i-WZiUa>S|Wg6=6?x^!t&{go9TS&k`z_6Qwb zl0N4bw$ddw;q)}!<eNdkCvUKJ9h+YJ<6-;G{nJZdE}dTYefNFe;}LrM-W+6?_t`I< zulM?X_nqJ8Kn*5~N!memHIXipU40_2P2`m}1C5&O4Ey@$(}{`7`+wcuZ~x~ZzwKuW zi`d491)H?B@eQ&yILu_4ZI&Aq6Eo+XdfPd_geWG%AIV%(EFaJ5#?0ggL|BhZ_s!NW zy8BtISHGKUe*M3n|B^Mu<EL34b>_FdvOjd^_qm}e`*d#A{QY`;x$OUY-}hbLul(`u zWOe^#uIu)GyH(nKB4A&`k4+_0yf8~EMERf*pHNm-mYA4WTDtX5Klj{;4nM)W^Nw%O zuU}^gnu$QGj2bn$j?9brdAsnOMTdjl4{dR&ZDG8i^7t3e@)*^f!7_F=6>GB|SL~73 zZQ5|@)N0}QZzq)dm+;=+QTW*U{hrIq^*^q?ySse3>%0B`|NZ+}TdoB<8}Mc7Bs_zD z3JwWTpgDeaKA9P(p11jVEnsPsxMz4`x#|8nSf<VnTw$FyeY*FJj^eIGOgkT}kIA?Z zwRNstZPn*zXR~=%#i)XY#AbcIJpW$_%fz*zpUwAu>@_J~0&2s5dvi19-|F@ItWIAu zX3#zT|K0BQaRmoiBcFlmqOkHs`;W29*AzT#6;BIweY9+L-m7&g)<vN8*fT*b|KR0* zsrRR@=y1^SCFrA9Odr*i%HQ64YS`RWvtpIxV(udeeTr}M=lj*>Uc|gsr*S3d(E9Q( zyym7ou?y;5Lg!zWwJyt9>o~O=RCiS9J^#M{|KE4B=2ySldA{bE@y<CPpMpAo4|8_@ z3GUSIHj}ZbFt~n*!_d0;na{dP(3F1o{$E#P&fU)6Z#(@gsMWVrvwUd{zCn%#2Uixe z+*?~VY}f#5`JETr+UO7nJ_0{kB0R+j)T2T#VjEX-=iJ=1^o8B*KdKx&vhiZMzqi-_ z-ahZKmUz6_#l+&`;+=D*#}s+)x&G!zr|?JjU7)oXYooV6Gg=aV%=@@p#e>Gh?)_;B zm%H@4&DYmH5}xmITkK_pVPp=6yj_jOuFpq={qL0B&Mj1#t{%7Pnyl*dQum}Tri~^~ z^`_}#DG3lMf5of=+j4J<iHnDahcEweb5XFcM1TTY7SDBwEupjBZ(&Y_IxOH~Dyw3@ zlc{5TTjOJD{@$<GSjA&5*lsEMn0j&U{lD+Z@7}y-RrIh`ylnp;ZKLA{ebS;nre18= ze!uQF=x(L!SvBV$Kc83qPJ8{HNv3g&te7@xeBG16hcWezoZ|u<L5tRZ{`|Rg>C#s< z&sM0i1VK00hZX$F5JD~yA=(<dINsdfZ+|y*^17x28Xr?H{&SbBTvA<9dVIR;IqUa( zHe08EpLkk-zl~E}T=m<n@4_37MxQa-xO&|#Ep6%bY@pQfZEXywu?N}`y7^3|Dkvp2 zNPSe>biVdoapc^;!qelbR-QPO_o_>#({<(lr=LN~6A<Bw-c-=iFtE1Xoqc`X)2C0n zYCf%y)D`boD8X#hmddK$ttN=BoI_y6tOMufT1W3&9C7g7{o?bsFD)wnd_3N5_G#Da zb>7(>Uncw8-P}Cs{{Mg9GgpMK3)!>n&2#(zKS9Gfn$=HEOpIy!@;4RKzxa07zxGvd z`uTZpE00-7d`x}meQn?Oz3<mfHSUwQsW4b=CiK^|?&s<FygNG#&(8OD?}%Yp^EESi z{<I%qmP{Kpp01lkAOTHuP`~izKqK?hnnN#iK=D%Xahp+Ms%ey=36_acE~br3r@h<k zxjp#7hlhvf|NrxRd;ORE<9)KAN-}@{-*5K+KK9?0TEFL$SI)6})$jLyzgr&PGCTBx zZo<cVTPh-NPv7@tX+`@j`?@ds_x6j`PtjR)LurOzO5}IbwYLO+{|WtZaRD!S_Crn| z$G|uHwzjrTojP?@t=>voUm@sq0TFC#vCRc<2?os~c;0UN<<#I%%bH}F_1tO=mH`KZ zrL%N5WL{qOWA}n~KG{|8m(PrfGi{XcGhC6BVOss}g)FjbpsBTprR@E^*sZn>ZxtOD z%w^grGj;PjOZ=zd1`E!ZIdkUx`SCF^F|o0^&zCQ%vh8x<nJr=San&XXk6_6IeqNwX z6T(>_yB4ejH4PWPxvS~jz|dI8`GaG@O8bm2Sn6JQZ44SMs?0h+&-V1`(~o~02(<MT z?Qj%wKDzqUF7=66=JZ&Ofv@XW_RjE?I3rW3U`K04&*@pKK(=GL2P(2+B50{Mi-4?E z$%*Q-uRd|UceyQjSb@!%r&B`0RO;9)Y+kv>6qjgrG1q^pu!2E{gO1DAI1f`Slm2jz zFf?xDIFh~U+4JY(;^N_9VQfEF1kOw2IP$cwTW<Qj>Ql#z`a`g+lu6)VTyKzltZa3h zz>1X()2H)p%+toA4C)gFhXo%&Rr&30xzQ039or+XemNX)_MNi8bW^>&m`6J<^va*H z!g753f?rH=iPzHYFK_1%n6af{`t;EM$6Lhk6^b)<9k_Gn&brv$d@>drcI~oy$!~bo zp0jaBLE+CwO2?MY`BiWUv;JgcV%f#I=TMGN^x{`44hgZ0`ueZqCdlF+fZFfyNAPq< z;H}N+=N~;<w0-v4-y7d-F*>relUroErrxyu*0<_Ce(PaL)><4#?Cx#ZCOmgKL!%k@ z4}pbT_DoywY+7h=xXb!z^6}i;+gvq*_b6spR_;72f5>n3`-5^n3OOG+{ZQEPPT1== zW`!1|y<y81leM;P&sD+s=gpR~lUEDzx16;=nN;UdPHO7Xx${r@t-J0x%XKpAR~P-I zr!Xzx5YX@i4L%nA?gE`d?y%iK$9k!5p&!;W+hHN$aGF(#N6T*Uovqp7&rQ?Y`DBI4 zul+U5d*>m*8lpZ$=LJ)MN#yD06R}MGn8bnBD(tLviWgFFNN{4>_`swt@G9njAIvIH zB44F%U~Mg(82tJ3XTkDqJ9bDs3^{%JwD7MvTQ*&Fo4)w*#lH?5T@0MlUd3DMVxA4A z;E*81q<cqs?VD$7+XOQ<IOv#8jyQM)Z$k)Ff}A;X#$`t6pVuw(Tpxt~=~h^CZokyt z-)lbeZSvb}y|?3kS<{I{<rmKucCG}SActBSH83=$apc_Evhtv!?k+b_yDDjA=CN5T zu`OywDnEW`aJ~KiKmGQ$+(?FS^^e;Nw%q$4|Gl4~JWl)C?ho$n#ml?dQhEzxk+dM{ zSA#7F-re1;E!4P3l7+)0NI`7oLU9djV==hva=5u_x*OifpU6r%)9ojy5YXhHqdz(B zAhu2+yl}wHFz7n4%y)KJc(`|mNg)>#OO&br_vtrp-e|0zya_$jkYgS07z~CgM@;cq z)3sdH7bBTiyaYO0m$p1Tjb)_(hDI#bxrs+aMQJJCJEF-UkkRR&qq%s!cNQX05n~Uy zJqS~y;STC+m6mQ*ov6Rdv*CaXYm#B7>e4w|Pe&5t5==G6lt4MTvu)0bISh@{IF2M4 zO>_0cw{`%F|6r!3g3k5duJX^-oKs-N1P2}E)OAtk@GZN>?Oy}8#=E=A{WV^>Y-Qmv ziBk}pV5sMgccBj~gfPQZBOY|eQEz|KMMoykB(Asn&(~9p@zoBPX23*xKu1MazS*d* zrQ)#QAk**f@8y3xEpftISi*t_J>(i!f_CU}7-kn}Ojsu<vED&Pd}D@B>c*lV@{IH3 z;4qZVXXv}dVG`<4a8o5L0owo&%qO^W=rTQpBWqSNI{tD^h+%3vy=-4VHmHQe<qe$q zDWQnT>C7?Fw#9NxXN3h~%yw=KKZ_m)I5i_Bjm9nxmyVm4E(LvdO8(Np&=|;)6xnff zq0;FoX}CRs&$T`wpaikFWs!z=gTrK&B*z&qnidz47wD@vISjLdY9{Oxkce_9h`cJ6 z{uXb00Lfn{exIVeA^ZBeg~>r8Dh>-6nKp7v*?h|ae<K!GSURwRj=c^K50@5DTg=VE zAtKZPTKdw|JqcS^iEw)0n4$?PBc@KB>NHW)NLV2tyK%-R!;hz9(y<LY5s_3DYyvg% zPM<!#wQu^x3MLjdk%*|MF3tFxPdyIfi#Ob{y-W$TE`;%MaEh|Sf@MtH+}y#DadV~+ z;TFvJSnvxpPPBUUYE#}h7ju|cesLVR(#IM1H`Ie0ThoSc_$>qXUia*|qwaNdJBPrE zx!`3T!7&kY$h+QPfg8w!Te}xrOkiTE;(Bv)^K!TD{$=D9Xd#ZEmRV`(*7O}+%`6;O zoWM&awAQHK!d;-^^KyVSXt3e$@9)=@`rMQ`1x|2+u1t>Eo$B69Ug&A5ZpgiDrf+oG z_1%w24pUi^4jtRF_KMLWLtM!pf24mE?bxoMtEU%cxxno<hrkOC9UYyD+{jw-XkCmY zaJbVOB9(@Ofx<5})m4O_k?AUAll3O<jy5cV68M4*8rWB274CI!Nk2a?i|u-bXrmeT zkt1JjZQ7;3;TD#`a?GTQF0!Kaz?(O3E?o+mom}~4u0ttHlF_j#YmQ!8IFY=->lK_a zdv<hW<VwFOz0(9TW;^&Cn9<f78B~HfNrUbbY@T0G##H_7O=N6rZgfolKcN}x!1su3 zjn*@nfj<&)xPCz;s9fpp?!L^sy|9ewtzgGXvB~QywL9^i`Gw785Z7M`Pbe!3n-W>= zH0Mi+7L(!8q(xWDr(Phlrby#<`EdH*-`~rHsva+4k<t;k?3EI^S==A*!e~gkIHvTW zy#9OnZu?*2of|_|2w_xJjf$XYylK;>Ny)rfoXz4T+_6$bIIAOb1qVtcgEc`f2xXdk zV$;>DSI-s8PVBHS4oq7s#f))`VTi9nQxczyML?89pRi!Yj02AzEjqDjm2Nh+QBFwk z!EFl(P!NxtX6LMQYE9F1@5zYF16I+vjq}X8b8a(yzLhs#x+|Rt>SROCfx5hHt5ZD@ zrG_i(FPCXc{Zl)Pw7Ik~j-gI?14<Ru-`)tOPRon-6g~kxk}LI%Z~(UHJap%^aq>t+ zPP3b*cxp{zvO_t#^ej-Lcm0|*OMaVOf?UQFc-eF9O&m!SDP$UrSlc>uyyyD~riMK` zTBL^_sRyE%K;s}$QC{D3mvC+gR#0>DY2TXG^_Z~Hj7&2RbWBWrd0BJO8KY2)3F-qP zte_$I9Xn>cyX_&I(eJ?XZw6EFoCZI9^P*6fujoD?p?vz%@?e*lS5p}>)X~z{g`CEl zH*dDKw%%Cnxjk<Qr%9+nTNTd_iEn4;U9ZA>A0s5kOLQM-Q96CeJ=kSt?^Cap80Ct= zt^<Gm{ApxnzqD35lgU@8<DqPG&6k;r*w8}{VjObbc93TA>d^6)_Z3XN*5<er{Um7z zUC^>R(B+PM_RM*A&qH{{dIz3o5|<1&WE(P?;#(00waTEhagy@sOV5K`X8Qhph1q0Q z5WcY`^YWoXhfbaH+SRD+yFic0uq2t`xWT!$E%=u}KqB0szERU{+EV_d9Y(L~XVzd$ zS_N!^PDUhOR=az6qFR7&qr?isnB)u7Y<%ZnS+fdtHl&0B?UcxF>;h$@B^^eqzjj=z zKnqbw;rjXWXK!!smvVh3jjy10lW(ou?B9=;E6`E}*pA7<D-u#7f4OvNY(5!VWr{JQ z*d{z<?%cauv#)>pRJ5yC*%vgs3BI;hCeKEjh+bsIT8E>`r!O53beXxeY|1MOG&cmK zHu^2N2}(J0WipwbavV9(y?rXD_UcbU3v(d>j2<9hS3{&6QdzS^BB$APE1g=iN!bgt zl?uwK5fKrQk)Gd+mvHukE3ifIY?jDLlR<L@*vzj&67Rzn-U1yp9@kj4c10BI%vg!o z1<NL;zVuz7vH4<qqZCG<P6j6-(5R)X)s(!K9>Nl?3T?qWt0bZ(OK%4atzmc}VG+~f zHv(Fq@oG<QpAyCp*p`+BK}@_II^Owwt}{ckN-}xS-MJtdbZ}~2U0q?JVOi0oUfE2h zW{x8pIu8o3*XnM(V!I3Ly1NB&OwDh&PB}L)G-h&M$#%UO1x-Z<3Yd7ib-eRsU1#!| zt4zVzu`@+SAb%ccj1(04+m(G6L@Tg)@`$e2(ynZ?!Zzsd$z77qX64kt(D;hOr;0ZO zR_rJ2V&d)7@y^$Do#|UX!_peVUlWiA%P-lkyS6M@;z&Y=q9F6)3l5WJVuWA=L!%Vu zmNIV8_P-Ua4!zTYePQeWMT9auQzEO*Yo1zjfny?u)&SPV3g4@L{``6L=n*K-Usb-F z)41bK;l;<7s{JEHmn}2{*MF!k)NovIvwB{YJ7_f5D}rq<Y`cEICI@ci)0buk1*WO? zn=i-M<kRB~im%(-a=E#=KboyBIqbeml4<VrDMwZNxNX-NF2;IW)GMV6J+*#&6&x0< zWGapH-U?ePWYFPoTKV*)=&-=FW*&)3jC2?(He>ee+gr1*H!`y)tyaJLbK<&ghnO8Z zY6=A(2ZdEG$&^O*6r>nd<+zfX9Bj=gkg?o>^YnsXnD4y=1R}3}&I_9o$(ei}bBIlq z1Jpd|xirtVT1;Gg@7*=e!y-iajzI^|!(uiGv9$#YC~TPKAbO1@SHYp-KonE<+Soo& z0pn20V&%UObiA_A)y%2WKsGwuWxe)G_8@3{JH&CpyX-aJKng+8?lNs{b-3oKGbR`v zcoTnxL(@Ssy$gLlwyk;k^l9n$jueUA4jb6(Vw!dcEIK*M{OFez@0gP3e**2+J0QXO zYTvOeP?DUbJE5BEsId6ieRn|BU*ja!V?VN6LGw8VWsQ@jyTBu|Cs1Mga`SK2OWQ&- z&KLJ2`-ehG9+1Nz;or!`m2+#0X17IjWMt-zch|1$7G4r*5*ZL)zyO-WU3uV&I4>{g z#xVKDlD(5aOCcIxaeS!+*?x7WPZTJtL~(!lX?k!wsNgAWjMCpA1?^RA30rV}-n}dD z*K6HlsGhfWt|`XC?JWTchZa10_N?sft*e!1Z!UChKQedi?pkpd#;cs5OKU}ZuN~UC z_%yFTMER!EpxtqrTqX%Kud*_+aG3Zc99SM;Q+RR1>vh&FpjG(^UHjWCOc|M2u8C^Y zhnBd($_Nc6=65gGR*PTx#PiL@U9#mAMwj-L9=1{X+}noTdhW*;|85izVHDCS-M{IU ze}jYCg>9z3^_&7LraNql@B~Hufh(+S6`=44-k&7}a^x?rE3eJP*Qz=!$YuH(8@m;{ zUpHg+0fFkO+}&HXZ^c*7%bo4=3syiw5;6;izzcl?V`JgOu#fA7tHc_^Kk7Gau==0% z<=y6U)+emazWbu|?>47W_dQqh-_}3$7@2qlG<GHGffB?ik&FXItGQV?1Tq>9boei< zc(jNy*#UHONWeaanfuEvK<nSTxTfsavVyIgS+L?jM|G8J{)Ai8?$1lV$fyZ22a+aW z+3bLOV8;Ld_P4j?o@Ux%)w#cQ@z;O<cj<e*-V?T_{9%9JGe2?O6H<?N2`D%y2xr_5 z+y75UAwa(|XX7N0j~Z8U^nBD5@sII&%4Ma=$i(tWJ7E3&m@U&78n<y?DKEVW?eQ$& zWlFwtIs0~Q+{J&lKIa^6!E)>v$VFRR7Q9f~30hdH5xhXvdn4$8?gdRu!d0NK7u|Dh zmP-ReV;0wxpVjTff(i}`Rydf3`>lo52|gMA>tCD=y8Y?)XOpj}-h^d_1&mC&x9?q# zXJUD!dZ8gT3><vcjY9LBJ|1y>>(<I9tl+Sqrg72!om1{RftE>oGF_Xa7VBFJ$=Pp3 zG!p&Szt9Z^*^%@7%4O^u*G$|N<Vyek<=x=0mqlvxjaQ()RF-1Er(lhFJ60TBalwO$ zg~P{t!Hayo%UR1m3n^USVa)b3Ubi?7l-3v;%ebcOSswo7*vj0WZ!5PIOT7Z6cufCD zDO}j5Tl-hlVL==dZ$w%tXohdAz>G%_TR1L)Y?-1T@Wp)kr|1_wEF31D2WDMfvU;UH zxO`Y(%M^U)vUb()E8G5jv$<`|`xX13SFd2k?X-Q6SU;w-4P0@a;tF{JiuI7PmJA6- zCYEKYAX_rGUasU6$Y^UYT`qY&5ONH!Lp6)mrsd&Z)K-E0lJ4~iluEGsCAS9EFH=QV zJOKOUO~yq7CKe8eU$(Tmo<8N@;9$+_7HNKI6KtV)qY<mtj^)?S%|3asI`{nMGn|iN zz}|#*K0t{Tl)wZO47MD25PiQ$2prD~#m&KUPz(AUj?M=qf%)0bqd_^W-{InYyP%ni zQlF}WW;PeEk<N^SEvIy_WD>o9Is3Wp(+7LEJ&!zRQi$XBJ&CA<55D=9oB|2~`wm>_ zp4|j;(S_gzZs5%OT(o2Y10&O0L5*Lx-L-<Ztog&ju_ZWRN~yB0Hmo}}V~a!Yw=cIU zlPxROzpeDE+Oz_5KNr}CZDJBNyQBTUp=9vo(J}>)XP>ZS{SxU?*DJbyaXKMS9eBc$ zwQKqHbGJ`}!mqd}*bT>sJ1G35@1ljDf^fzGP*j~*w~U36iRG4Zz?bd)A<Hr%e}d}l z0~)X0qQYQ9mIj=SY;Rs}{j65}A@26)IY*8JqIU(sO<fia9$kYUV%z6H3jP;IeZkYP z9F1+Zt&cjn7lVvjD+CI=F6?0^vEJb@DC|~)!>+IV*NR?PDF6;Kcp?OaT`^kNMd@95 z0IqsIZCv}Cg=35Rf*1MnD}63*`XsDy!LKp!TJM%Mu(hiRF-*MoE@waIeGW<wmg_v1 zU~MvS2!PT<ZZ2wi$XM&(4K94L-FNf}D_oFkT(rM-i4pcRevvh56DW?(f#c}Q$|X2D zuON$f(Jfl&zzt5~+{bt75wa+dB?_FG&VwzQ!nsrjl%Bw)6AA+qMPb`eqiBoQf~VjF z9=bR-ol_tKUsgI$z@!V#N-w}ccV|mb7w$L`Mvo(<2bxpfq)%4Yi!ypvI+>yI8%K)v zpN7tmv;#_;1Qjk6p+?h!6%Dp~r`_-1yH{I1&sBXosFpz#3(zzNDIacMM@`=sDj5A2 ze)+TVNoV)5{u)^ohXuAww%32!u?NqzyIBKT#WNEvjqhl%-TNlZC#it3dS0`?At=t_ zHXs-Y8I1?c*F9BnXmI$+<gA~^1uB&eGR<>}{Qi8Rx}KEHztUcix7O^w_1tKQ(a!vz zpwR?dw35$}<;}~ldsK@Hz?S)#V79tJ<&Fc$vh8coEStzQ&q?#k<P*Z;y>nQtTpJv! zS-95zoM<^!Gb*f(iRG52!Kqynr%eU52|*G6MSR2Z>*sc#<@|bUUi$x+&vt`NM$Jy3 zHsY28EoIw6L4C)K96Wn>XnHg-G`4Y8aHYPG*Pgc{<3`K{S#T*)^3*@IYueQLpgON- zQ{IwP`0kl(&KsArpVy{w?%no$=d~rp&;}NIgtdujB-Y;sHT?~?z>3(6o`&TCZT}P} ziG4ZZnw-|sCjiP;C6e+gb5HS1iU(y*RJ-mnefx4JcbY=N`OVd@EO9I{a^{}0Ve?xN z7H~F(mPRHH2ZA-6|Nn?sy+B=0%0R!Q5gc1vXRI%^nHs6x4;pauK#Q%A1M}jlj;qEt zHQ1gnVZyOI`oIMy)i;^epyN2ZT;gF!XLR<REvr!LrAuxY;N?2bCm*Q*Xnhs`=K zGv|e<+3NW=Ff?vuL9G<~8f^D&eYaai-|@h_<*hi*4ssLGNHm9qVTbpeM=YSJCU6)| z4BWCnT`$Yr+GGZ(MJEz_BX~a6I<diaZ`nQnunpJ0+333CN)!&P-}jn=j_;WXi>eiK z8<q!bI=cT%3&@sWkS*UhME({|I3=PB8jpP|B9VI6<1{Rka>YQ&&-!H7_gnMQXN#-W zVx4$7aDhqm{@-ghOe|4)u(~iy<$>mumH#(<KH}Q@tb3UdC`Bx?m&IPgFPO^&syO%~ z7suWHob&t=wtbG^bg;m!`oS!(1_y4|wzxYYplqzmV$&M5Qa%^d&RYX&fq|;RbQkQ^ z`xf5=^Wv=E%VponuAY}0z2FPR$Q-z+aOS>Jq8_uEQy`-g9&S4tmIrA4ZayO{E;`?O zmOCilcKuu8fi*KVe&Yb=rDW!+-1D1lPfwYL(K`awg$WsrY;W3MGchvp!js%o(GMbC zx^+2~j}~n*22HVoO7r>R*ek*dY>d@aZ}%kUM67>Xxh-)cjy67z?u8Apg?AMl79_&U zye6i3PAl*7Yx>886v$-?L0Uz@%GgVxS-J`S>*s#&;(fQ(_I#RtB&d4~Dx6TOr^bb> zQhUtTWwUUYI3z&xYlzo@V2!Q+CO+xx_ByN9s|d<JuJvWut6PU)R!}oVZ=>qoZO?CB zY4yf_)`r0r2k){Ipz3E97p$o3;;7(Sy3D>|*X*~Q-Cbui&nkdyy6au|UwNg^|2g|W z1!Esdjgc|0!Pd6CM^|ve^P78~dSf3I1zGj&7^+n(xxrRd{W8BTEFL^RQpy387JliU zxO?9>b=UsapsvR*lp@GsGRvEnrT0xOFI6yB&-0Bs@&)@%@6OyNb@nmroB}Jh!jj#L zMGeaXvi>ekpKz@DQBv3E(<?#s`vC>+qFL%wJ^MiiA|&Xd)VddV7^|zY@0wcP6Jo5M zcQ)eGmnN(gyfgQf6#E!+PJtCG;g)rQEc^91ZAV)5qa>}(XFNfcIb1x7qjGws2TB&@ z%~f}U56nxyD{k@@SLtB;y;l~LSzTFR+4dwT{hi?N`!xGuXZNJ%vn~sQ3kdHj>>2k; zI5^`nf31pTte*EZ_SzQg)sr*#n%&hp%%C2U2CO9V68<1^N~GQ=<oT6(J2Y~SSqg$v z`>qqqu{Qb~WWlMBFJL`4=Z(*69zR-!y<IL5wcvu>rZb?%awIIdPf>WFIb~A4M#%q? zc{?-`?^&`!ta^jPs=X|r1b@$eeY@C(=aK7G{j#x6p@C{z>yzNN3QHrj2W1e*=)Z8v z2jvC(mVY>M)FplXDM)0=vtTbP0>r^(#p}zjH*(zgyympi^0`=R4T-1(o!=+56df84 zw7_EPKnsgatI<N%{gqd%9wj*y2W*8j(EHo4_c&JU1J_RPUw*y8`ld3he&=QEtFCx- z4Zg*uih@>t_P|P}gf~p{oFpHAx;Jl?O`+kpnJb*Y?Upa?uGmvXNF+FAeECwfi0PZn z>OC(qu?}dmw294lac>i7#jC+0Sb~>W+^{^rE#{2q_ajFoo-ba-0d70X<LGt-_<}?5 z_~qA^Sl(2I6~DZ!1sx58Wv~UOn4<rE%YS}u?(WI;)!*O6zWSY?n!5D=Hvg0t(FcR( zC|N#ymvP|!txZc$CEapsa5%~Ice>Pl&;`dOtX^?Kb3rpdmW=)jeZDVuIDGD1XZM{y zpFn2@|Kb+;t2yCX7`7g32&77T_oYe;<o|69S^Q{4bHF}_9FMZ3t(R78)VY;?_rivi zZ(e<|$&^|$jdgMA#Egq)KjqGy$j~^6wMvf<v^!;i5|gTar=NQRL!-}uU=7iqju-Z% zRXkFfohk$#O$+$q?hqA?tz#A-3l5?6mtU{szVUg@IinTms}m1AVL500eou$;YnF*` zZ*SLEIx%hf^yT}EgNv9Koxb?-MIFn6Qm6AxsYTDS)EpM1G)|f>0vdL8P=pP@I)DoL z3r@P93z+8Z*l<fg!66~GaS?Y;R3cUfv4S16`0{HnP+mTiv;uw0#DNz~bEi*?Ek0{1 z=(M%||38l9UA6sQZx4rTFmx0NI4GLoc->IuZ`6uLPylJ|*aI5AWif)fX2DaYc}^#% z#dj95*c4v;Wa|E%Q{aVuK#8Vbwl=ob{4#A&f%(0tDmId_dfw$&p}BKmNe9}Z*U<W~ zvA;Iw^|iHvqM{E2wY9aU-Ys33dAP|Wq1k*w^R5?HC(Z}CBx~1|3^PV1T|tdX&k`#p zmMHB9np39ziCCFtZd-Wq)>QZ75SLuU<q}npOUetYV!1&siISL$-V%DDKf!hK(b?Ok zO`o2<@$#h&Zfw=hP16Mn%kEV^|GGbJpEoG^@<tbww1YYtQ}(EUrharqK8Sc7t}D2* z-Fn`RjEBD#pJw6sBCfG($?~nD*qWD5xk2ruzq8}6`yH5<{`2%=jHR9{9a{8rZ*EeJ zo3}Op{=SOtu(xI5QI{U<Fez+&WOVeXP~kMbgiNNV+*?v^Ui4*R$<hk=w+b}$w#EHG zu!ia1ix=LcRX<u}>pfwfkiv#_4i{PN*KWWzNTLzEAhEiNonP+Emvgq?@0j1KSgdNE z2HID2?W3%9*&N&IvPH7?g^ygyc6r$R`|()VcJ8TSrf)WvA7boK_K8wRnzC-^vso3+ zVL4t;wrSQxawB#te8~v3XJoQ$j9Mck<=Nnn&06FQ-nnKV1{!C%bZfpK@4Fr9ddG|| zhdO~Kmb%t`&aCgo(qn5ZVv*Xp{5$AY(3$rvpU)|Nb!FwWJ2PTSuZBh**N2?{;j`uO z@qYR9e&U_S<*IWQEf22rXRMz0Qeg_LdkJg79n%o7ZjauccXxOBdh;n??@U|y`{0f> zg@uoWj<?D^-Vi9t$Yjg<YF|=@JtNauu@^fFEI}R2g{)FPMZ7lG3vAh0K5vIa)iQ05 z1_xu7u74aJ)v?$LE1#$Z2dk^r_UiBc^=kFzMB$IAlk4guzdk+<I_pBe{^#lc|1R#A z&fim5S-ErN_7~r5Hc!+?-(}mQ1j-^h_wqprV(QeX%kq}I2;c4y^KQqB!k5VmJw|m? zR2>p@8{btv2Q|f3DQ~!T>nUi4xr@u>hvt-5I=7;XI2rw8MCQH$4J}DDF6z#@^$}Yi zE1`&~_x@$!c(La6-{0Oo0^Qm<?cCzo`TKU>1i9_<X<gW;A*_?kqa+aB8oe#&=HBY^ zJ!iGPiOt$uxv0FE<A_1WK>=qaHaDJrN4JSKEF5dJ4Nkn7+|IzrbXh2(TyQdIB>6R$ z$v@30nYtIxMK5bm*Sj|NrICQb1)Ii2r*pIdu!g470#$HmcF)+9b0ena<I(hUb7sDf z&D5&`T}~owdskrU^Lrc0PU~*x3G{s1b>s7yv_{ZqA*k~KEpR|{aeJ0!y}!4Yx9)cJ z+ifLUw;xET2xdRqo0jdXdYqF-BjBdxx<nQZ0ggt-=|(p>1Qad=FHrSg_@nZo9HW2C zmpL!_gcL4>G%h+_{R*oqd%_olf?a7{`6=Z{P3gb2Yu5PuD*N*H`~CV?E0_N(JCqE% zLw3peh%Nuhj!iF}@}{z{oHG=y7SCvKcq8!c&d%cd`)W7l2b9cqtz$CGN&0X^psVpp z!^;KSEM8(8+5{9F7Mz0CUJl7DQC~&8rcN)+o!!!)t|zrQ2z2)BU)C<Yg_*h7hWife z01v|5`mw3(Uj4V1rL!NOw$k}#bA0QBRiKzcYA#&~SGZ?Wde-#1j;`+4o30;qnOa#u z_iBF%+Wbq8J1TCU!$M6pV@4(xFEQw>*(<#Zhn5F;#m$_%PKjyWjupR?mi`4LgMgB~ zzS=rbScZPw#53N`n+I}BN7?tNn#kiv<~@ILdL`OQ1BbUP+w$&8<<Hi7DEs|xwNc*| zcLlZ^_x4sNZ@8M*lwr^~iS^cIofn#nOr;{wx*|*W!mZ^2uXgOo{=9?5rZDhzsP|(? zZL!h^d%fi*nDKMoJ(tI)&&{#?{HR+Wbh+C8-*?~3)qc4MIx6S9-S0OqFE4lB^S%22 z-|zqbT-*;TI47*?diFl}`R)Aue?g}TeZ3Y9x^{DZPV%2HlYdXA$AiuvS$v%NTlwA1 z`#&C&*5C8NDdfky-S5+8KK?naMDA|Y>$NwxN6pyqd?p_oY$gC&U0(2L1YK%(PYYCK zi{;h6_;iIe>A}$t-Hta-oLm~r;wCcV7tdADuCOnH5`~??;QbO?{%B6ITfHKGtIGjl zaoxz*C6gU)vvjR{xY8e6)4^a)gYDiO?9w*--W=w)kBN!-b1Hn_r}y>0zqjhwJX~M@ zH~YNwPS8<Gr{n*9in{)E+3dWoAIs*kZf*u`<SYXn7PGq8=Fsj(31M$R8?zO2=H`o@ z{SQ)o-2UIkyYhdlLFdDK{^qmi->=sn)z_Hk-I+1hN(gkA{o@BKgO^*m{`+y<-fiyw zUsu;pn>I~p?rQZ-cMFfp&b@rJQaMFuy5jfLC;u<@*Ok0nI(=Ds&zCk{>AW2e+ZMa` zKl}82Uys7R{My&ibGb_&_nN!a#H$}ZIaz)EzF)7_oC96g#BcM#VZy)X_5Yqv4Ud~C z+keFJ`5a;P#cdk<_UxIndcSJ?t<OH~EwJ%+Xjzfb=Agc2&DPtpx;L+`3^Y&H;4;ZR zc59J%vdD^yBG*EgSfVrxjy?4Y1#LGv5Uip5=i-9X*_;)R7EN3|$4@Y0^MR<-ccYF6 zuipB}!moj$F$87iMMQMN^67Uc^GL*t9R%;^J@>Oa{?DVEo6|S1vg)kZc>THE_nk54 z=Ec9eyW6~*?{uh8d|csC(a4n@%H6`U)@3?P^ENe4ys@vg`dWkF=kJ-GF6)-6zx8vU z61nc6;P$Dn15NC7D}H=<7}NIV^n!oq%J)r9dpC36lS$r>juu3&j8VF`p$v2$4r~6t zpU+NwxIF)#iS;GVJ4L5;S4O|veRKNUM>~VJJom1ichh46th9$#o?k^f{vMcXU4HC7 zYu5RBZS$^qE3l>WT$EVxb#7{uUqTGi*I9d_yc-;DvmD!cZDl({<1@|*uBEy5f?vuV z82w{R@^@ZVW?CyMQE>P4rlkQl9YJdVzX+lX!!>i?xP1EV93G)~F+u<TpY;Dva(*XS zEb{&*=!m#t%ilGX7hT2Ier4P8#WY%w`D?rVpM|^Uoz~l})2%P9S|8>AN?5jkdwJ>n z?Y})zyrl&Sqcd$M+SUE3h<dg0xZLT~7d4Xl8LvU-s~JrH2R>hIUitmn?@io#Cyb7F zKd*8->1usBE&XS4=eu`bY%(|V-}-!}mkYFG51KMSA=0>uBj@g}t)H(q&e~hPu)J5W z<DpdZHoec@)|@_03k)wux^oC*EIFWZ&9+oXA)uVmf1ydy!RsqOa#cK9^p1P(H(><< zCRg!eB5ScV&m>$9%!@m3y{`1}=_<DAUwJIL%G18`=-u9sc=+k`c)9mduPbLhnwnDo z^K|^K+h!hjf{(POzL%9&tv~-`(~FAl+PAC96s>3MHCl5!eZr4T99*~eR2GNbZs-JE z*b%KS9=|Ot^x`?kd-2!)T5Wr0yzNPc?fI?8CV@tiL0*G)s1{@~$^X7_{M);`yEkpR zG%1$*Zq5t`p1TqU40~3aZQj!Ez{$ir``j+)28Y8eko7=~QlO|#?B4UvC+dK(xM|dV zlc@}id5w#@Q=*))l{y#V56p|3U%mF<$5g@O(x+3ypH=Mtc{cysnhn;6v>$DrSNUwF zPVtc@S=*{D*0=j)tv6ktkUDd7&i@bm{{?tE6t=FBocQldx}7lZZ_ouk8HvkJT==>8 z*1V6Y_P;LnZ!#_uD!g|)Z};2&`ah4e*YExIYV~@%PbZW?$1>Q=)o<_6@9v8!y&Agn zmfp@MlPWGpvUI!3->*kK(k<ZZ9ji{0eL6}%l>C2LZC3dECf)w``Tu{;fBdzX<DGTc zn;Vz??Q6f^EnjY0|0;NX*SurfAKjPE-!pOb{-@w#r3<ZCSuq84x??%0Hr3bPUh~`O zyR@=Evt?Te&l@jalU_xGz{X=|;z4IUPh=8~WeD|aaOh>RX}xs9HE#JS!4F4Vd#_pf zsyZl$YV7jp3)=Q#=M!~@1(Hn2Gsp?LjMY`I@0ot>)PF4*Q}%l8_HS!GcdE}j5!)*N z=K;HI@v(zH!t_3aPWzg<xniS9dW)Csj|a_>K9Nx=Q~uojn7Z6=?yVh#$yKj7{#E^c zyZy3p*(JtFX|I>Gcj*8Ay1styYIUubH!p)O0J(KdcER*x)0bY2E4k?EZ}&5$T>p{B zAI~Qy&!fb5rQa-*+wy!Sp9ETcW>DG)I!);Q{{3@ri&WiZgB*8achRK5fs-kB#>HPA zpdI<pG}Q$ffZUh8V_LY^0by~`_}3==;54;51DvM9BNgH{3A~T#C>Q?o-Ti;v*VXZ$ z>v}@-3T|!NKB@j?;ma-#<k^_UJjUuO=6fI3h{lWQi~N3~Za=g6@4xT+_lIrWS)LzT z|MzS5(>F5xJeg1L3I^T%m?S9u_4@vQrE9a?Pu`b}pH^LY^V!+izyF98JfB;>thTe{ z;*U)o%C~owW=DDc|FBM2-EYZE<u~t^PLK0StvWXS=<6qsw$C<+o&_#`(#yp!ow+o# z!S;N~4G-AbE=cRN@e}K#y?)i--}T<Vu=)NqRSuH~(DLMp^~T!uD+`Yqu}ayrg68Vj zIHv5Bvl3@y3Kjk!;>A3zFm}bP26eqv+b(4CgHC(|we~_?Pj9oSfA{`L`;(>9<Enmr zdAV})5$AdLf1WG9q%HljqQv-Ks=?Q7yq6k&aHmB+&c5=-ao4pOHaA(jTrT=8g-ww) zf+ms{{_dLhF}2YAo@~su=d~&N`+g)<akB0Fd1kLd&fzxR^S0k(ZheZ`6H(3)I?M9X z;wR^iPIvvTyg=ve#r*o;x9_~Xr2kmF-M{9MaOS^v57xwdxt82-JMCJ*n;RRqRLrTp z8{YxC0dvcVz2EQ64!a>6U-t2+`1ke3*AKnZTk_TWIm?^MWs3tr6Y)rm(J9IsQcq8- z{r&A}o#%H|(8kaQ{h9&iVv5C>RJpgLh`m;0WHJ?nHvY6gQ@FGAZq14nXY`K=Nm+ZD zhl%AEw@7Tr<y&3Tax4FVS`91X)c@B1|6U)Q{`1ds`}=n{IL@0ox9YSt?~9)+3S4h3 zlay^NX%IE_JPn&Bl4Y!}a(%C%RR3<-N6;ym8cW_i*aT|H)N1X2KCk+c<BwMTnuY$) z-bC*%fA8o0_mTMi6Z=FvWA@xQYkq%D-F9nRuYWN$k?-^qa_;Zjdp>)=m2T&;<+U&Q z&Yg12fBNY3qVmj-?Q&Hsb~o=--su)sez!EU?cI+}huis=OYXY7Q>?6f;qDG)OHkj| zU>aKAcCv7X_(6SL-KTYi-&GsMxQ@7VyfoOkb6FZwuwcf+m}{v_ELkcBQ(G^3atc6( z+qbx6XWeDBDKtE~_1sEM0ST7{FN|hii`<ek`}6VQe(|`9#8uZl*Z=<UV#&pM6^}aK zg&h_Am^yh{e(2wq656*uZh@^+Nbq0(Vz0|I`(Ay}X-J?WK;AvrwEO)&>(lp*3qj{N zH5-WAT;1#;1HPL(XlKJRlenC_)2F-Ug42zxO@%@3jqm&a|J}N4f^7eeJr_=UJ^dwg zv*=>9X5gNGI<*`sR?=HjP1jF7;X1)p{F1_sJLT7FD<jLfckkX1<}Guc^Ty{hYE5Vz zK8f9+<5nK8fA^$L5|moFk1Xj}Y548sGAE|XLK#1MuGKQJXz3ZO-FmT-Q$QmgGyoVs z!F2sfrg=Lw>US2qfwll@?E0|ms+jKWXMg(ber0$~U;6mrneuy;>0L&@zr8&zb=foL z#)gNBy7ju+_I^Aj9h`IH!E!%&(RG0lcOJ;*IGii#5q;|iU!F2!=FFR$)BSUdME*|H zs;|1d<C;U&$D`uE9ghA!_w3oTO`AYx=row00UZ+P<*M}k+UA%&H&zBO|FuPNpD85S z@SX-;Uim-xc)7CMn^mjVo!WI-cFtAxeQ(xozi0LT&*#mXK1v_gUcX0({rCUs&u7g+ zN3WzWEi(TDI$iQh<oS0`qHf%6owroxjaWyk#<ax|Q#P$u#u#_dc(8NdJ6#TUjwdWO z&E}7+7FU$A6eZsVE%aG2#i2CJTUXH`p@^xDdF_=$s}0|Ze2{+kWSWJku!6xBhl{M1 zwt*Kn<(`{gecAEUjDMd0KXqPO?z}iO{@11Hm##BTxj#?w+zdOdIn{ScI&O)~Y;mx9 z(0y$_d>w!l)1ot7_X1u1eOXqxwsA}C?{9YIhXvWDwz<1L+nj!$@6sgDNnq(`jyf#; znAE(dE_=$K%$i7-u2@hL`7qo5iGI=-WamunzUNhc^JJ~Ib?HKvb#r(A*fcwDSLR*q zN!f1Y;@8$XvQ12FWm^lH(m-nUBnW`}TL1Ji{#?p^-pJ7C$O75&V|?Pzq;>~WRyN63 zpc4oaqL{A6SZ?hCot4m`GyB@BS9@5hxH^oauRmHQ$Ha0>=|b_+SH%Xlne%h@P31ab z&GD%J^YW5RE2s09&ZsWGyxjS5<k{=-^?RSN_0;Y968P}W<7JD(*R^frSi-z7qZPgw zOhHs2HSEPcrM;OxlEp7~zu#BAHmi7{Pv)9yQLa|Ue~bI%pJ4Bdlvb@@cQ!M$`M$^U zrMsFp7hQ~2Jw6@Oqx`$xwZ<G&oUVy>o^9Nrb9$}BKD09;7K4tkO8x)uZ|=Q<3*}6U zIgWhk^fdY96T;m1iPcT=Cupf_!X>7s>$}c*G&oo?DV<i^TeoWdfeTEF&YX&5o7>9J zSjyV9E;+N+_4GEg|DX%Lc0IiWO2s0JcU@ZUtjzK5toi*lcT>IOMdki%ym6~^^EF<- z<24ui;Hxnj^B4ounD50dG4H+Gb93U3`F~Ew|GTvL+`q&m+wKy+XaDZF%>O?9>7)Hs z*Jj>3&_Ba|ZPo|rms>*03&QlORzLZ%>D{*y>1R<E9uwbrMOC<@L~ir)fc93P6-Q$s zr%S+@OP7MUze|?PJaB_GNvqRH`ue3M^DeO*vl9%N!MW$dA?|*=UoYzGzr0`AE?4#S zYWU{-P@9k6Zs+g+y1iaBf7LV7xCL8|Ug!j!8M0vR#MJlu|NpyRw`Jegd)4nv>%Lw) z$i~rOq@5dDqQt~<O-N(cv}IpKbZ?*gBVYI9;kC8V#@j3MKCfIpZ`SPDr~6zU{rmlX zzL?*yk{1f=y=R13|DI!B8&dJ%c+&5X7tzV$9`4l_PhEyBK0FY`wCK#Wy~jQBrHqd$ zyZ5<#2*2Z;=B`wDR5bjEZB2Qr^YQ7RKH=K`!SjDz0req&U6%eN`1t51tIIC)e_hV! zty7*m?G?Cs`P#34duQ?Ub&vi(a!Qds6FcSIw-n3GF6&yGMNXdDW~{hLXYPL3nn!3y zAVG)e`P}k(CpMM6+w$V83+toUG{c?8j66e~7O*sS`n7w8@2md)PUhnOKj;7Z{94j{ z<^PAn{KxNKJGb@ihlhuor_8OIw|st`Rc_@k&eK<Jo2_Mgb91x0sigO>%k%%0oIlUF z{Oa*j^U8H@X(>7^P-1%9qw`v4!^a=)Wuk1Aa*H>eF8bd#*QV0w^)m@!_kOvz^>O#- z&S}utY}l6)DyR?;vf#y|Y1iVn<XC?OZFS2i>=xR;R8L1|3H$Y`maQxszr4I4Yh5Pt zi`T0AwSDccFE4z1?GFjpJHEKt|L^F$lb~wq%fX9wUzhiDmD`K`2A%tEQK&TUW$mL* z^+oRlXG`VJ>TUxa78dxn;q2?npT5;-%f5B3o(nIlesOmgy)Irp@tz6W<2GLDe;?ZI zOFrGNd_LFm#*gf2cSDcfegE_M{P|C1{`4Dv;m`2OKf!+UyiD>x(3xbf&o$(S_T3k^ z`+3qo4V-i5`r7|JbM)rXeEGX4T>CrpwY9=D_Mh04vjXj)cu<1=aC%?uZ?3;>dd7^P z0l6+vik`G|UMH7`)Qzd9Wa@XUw{Ba_WoXULC-b86<fVQsE!COXKJ)z}iY#w`PW|N> zcD~#C$iW{5@6OCLerqVRYq|3cEvE(tR@PfGk=G&_E<e|1t3Q_f;%IRcYjL^YW2vsv zot?A9syUyFrkbrgxJHhNg^N=p_Wq?)-P3Z@|K-<xo~?On@ArGsd^_E>m9<_iogNo; z{rSG%?|y@alH~vX?*IRzzx46!OMgJ4Xqzvr;+VASai8_Oe=p*Hb>!HjNT0t}*7yI3 zy8X#d&!xWIDL#Mne*4M2PZjg_f^O#owd&`d0i91;|MlX2=XSoM=YrO?eK`%fy?5SM z-}sNyia-bGb-e$!Ua>aBqFcXP>He>4+lzYNT&cP2YwlVSajUKLGN^kA8mxMEYf)wS z-O})q#Jf^a^Az_kbJc{e^*x}#wCGILz5FHSy@mIsZ)ZnttC$_}?(ZSNoU66mQrqu? znnY!sj}Bipzh7g#dWpZ1`2MorZ?`X>dHL^|NsmuII%e_OPlfI0?cjrx>at=q_UVL| zeSUWK=6ZfjkA+))Y;uZeP8W-u=EsZPD-vt0Sm&Q|^TBT6A|Z)Dg=Nt`yEgj7O%<3i z;Xp@oP1jL=Ihz}~LjG6wd^)8aoD=$I;(;%pySKEKR+?CSPpOEVWqYxEUR}quxXXc; zc=_}s-fxv)jf`YsS*4(`Y0YM>W%gcdm2$~@vR^7}1$B7-KN8=6qf+P3G3k7rUpd9k zMRxA)DC~78S8k3uDD(+bkxdBWXJlgL5{bQeDXV*0ZsNZ?kNY;xy;SLE>a_h);VBX0 z?^81USAPjz8yRX_T*kL<s=fH#X=cja-`CjBlHG0?Iq#jzl&%$<ei-Y&Ty{1}e^&kb zz2Eo!eVbn%e(CcGUh_Kw`WCNm-ux2yutLaUlkJBC%(mK|{BA9==Wi9UKfaqT9#h~L zwIThN^!*>lq8?W4<huPcwJR({0ls>fM^E9DPWknTyEA+2cTPxqvCp~BUVlQ`izS!$ z9^WAbY9p1;yEC!kVfdfGrZ0z{dMz#G+ce+u*dNfHm(t%J%m25y{^Om#eC3mgTRay2 z*wmrsUC-I2v0psCX5(*>yY785mY04$7X5ht&D!F*IXmNb{FASK{;k+`;@AKC51hFh zGtuH>6Stm$p`oFni&IjMqHt12i$t%>;zW+ceQbqlT2@_sToqFM%5n}VA#seXje!At zr#Lj8H~;EVNM}_&^^$eU$@jlE8&91YdUx;c`Lz{Q@BbAnT)jJdZPeG7uU=JUt-mVz zTR6H{d$nuV5x1%zJTp_bwJSR_FbOm;uqZGvayUSkQLYJ>mU#YJyt{q6NQM-PmWM*; z!R)KSJ+d5I<~Xp<pQWVtGQ59{zK6Q}9lfL_vR2aOc|GqhP7RM+IoZ{2{dK<Sr*4(( zj~BS8+hF!dci;Y6YvYs?0^jttFIoO>n;s<4;2_E|Au`Q<=cbRM+j7#M+}xagJ8!aR z-rV;-G9Qz2zeT>AZTxdx(bn@UCyZVf`!7>qQ3#mkaC73RTl&%4+J3#hws!N8EwVKY z3+`@xquM&j%qL(|@Z2kZ)+g8qZu)Y!tEE)=#Kzjz2Ws5<j_Tes>}q$NJ?RzuvBUVy zrZugfx!i0^Urotg%$K`jLsQ86U9Z;#sKn1ONObzw<v7u1Yrs*}=`o)k_uC(PSLnvV zq{^Avcw^HESolm)b(j`8qxyztvd#6Wvu>a9UNQBWNSAt3^v&Jh?^Vxrs#zhTRek-7 zEZg?qYv*n$x7dGXt>LO~e_j^O(H2)v-?`uP&V43fb-yhpY3Jrh3Kyq;dwV;*JA*G@ z^o0IqlUY+v>TI^<l|+vXg$r6t(__nSzPr17_Mgpj9|<%#%;$W;cqRG9Ds?Gqfegh) zyYH|5>8?oE;&wV5FL~?L&fl!*KR!IP|MS5)Iy-0Q$3O8AQE{>15+M(!*|q#D`DXw2 z^CPPzlYVW!I)9#3=_}A7v!c20%hhEg_!Jo$*C{xpMcPzM>pk9~yXAKeZ)%`<v7#7j zc6iD6$Nl#6KC@j}dRl+~owCQ>`ui;6<Mq$(%Uu?BA^plPw+0>K+r1MN85+$5HLM*X z%}-5RyKrCk{4F={SeL)sVxXG6P(gm;+*eDE9oh9L@|RxUm7No1tbWg`%dncb>ZPC7 zVQtIei>~6TPOn-(W9o&hr7OHZW687gc6siM`WQNQrcLFh?8SU{|7dMZxaOJqN7Kt} z+e+i5lTHi$KGhK1kiBZ_tod91oL;mcb)q6PF~5*z+;ql-dE;a^^XtCP)YbjwNSI_y zP+b#a@V%D#`{tEzWUNXw>Z^=%Z<%Bp`+07j{EhGV^rOCg!LM>&i|NPZ+*aC|Q#bSW zKOME4)!r$8`7*R)H>Gr5Ros8((u>VLX*1s@!_x*d?<g=dh6!5y|MPjee*C@X_BS*+ z7&*2~XpnQWowT-U*GA^XX#yFE{O^}&emBhRcKYa4{q4=mCC1zIej88N<HZ}g>6hq~ zllrd@`&w3iTl1IYR|6w6=(KTmYmrXQ8_T67nFLnYF&dqIRH$PaY$m6C+VA(d@*KX! zJlVG=Z|(K?E!Fz8OjzOcnX<GL4u=I#Sx)gKU2EKw`g&RYmluJqbJ&vfDn8xWS?t`- z#~ZGyA!&mYAL-}j{Cw1{KPC0s)$sV6x+kA3JlF26_|eO0&%+&;&TiTI_ut>&TQjF` zx^lnnckb<o+v_SWy4}oLb^6tdfat5y|3%;I%DHJI{%Cb6!}hz)T|0h;8fe!)J3oK@ zZUx!g>D$WR-&3Dgp%lY=XjSOyoV}fMW;K03V|-r5vdD$&)-}hqaXX8ao_;a??3|XZ zJEr}b!?{IuO72$OZXRfv<Y3H_H7_+yy*IM>rKon8#i3hQ&YX)gF_be->$xgvniX=+ z?8wJ8MZdqjy|y65I`e%&-OQ|V<CKXP?{l0x{KO!y+hWRD{mbWT-fb4`+pzlA-SYce zw>*}<UQ-u&Hr)55&SqI2tl5t1?d9o*?>e!!3p6<F7rt<O&6kR8uRM?QvCLAr@ZR4= zUZx=XlVM|BOwo3G=93$LJfC5=W&2^*6Z)^23$Cj_mY?)1VX_iu;}6E?JS++UzDz08 zp7!5PeQfw??bgSuW*<KC@Y>o{S3*VDtGBFDdQ;NF5SeyWX4*$CCR>LEZ!FSg$85{F z`z3Z)xs2t@Zy%&A3Kl%lE!McX(r@Daj_w!Hb1yD-Z=YlI`dAyU^qbo0e;#$~ADi`y zsb`y9@hqzzb(_93I|?6fYAV{wx4`${nzJ`%&Hkox>eOeize;DP=|-<HJ<0Vbbl;5J z^|Q=!ZWydyw#V#kXkuy8nkB}oH7hSK^L?o0<a9tu>-3Rnu5HlDVL>I+*0V;NCm&n0 zvt*8)+Jo8V`P+nNROGGcF|M^g_)6tdpRDyAchS5Z57}x{4`trstbG3YG@rbkO!=zs z_o~mI`*zjp`*d#&A$?1;KVOS4E^=L1q4a`Z)m%}0(dFg-{xgk^X72m<>vi9}-**kZ z9e?@yg6b(vXM?Z&?K=|s=PGVK^Hq-zmah@@)mo*3o2k=N|8BUEe45*Yo$0QJL;rHQ zOJTO}Z!|g>v+VlF8MQrcZtkZiCnwwgc)(okCTJJ=(f)1T`oEGMj&>{U?`*l<uJ+da zPwP_8-?ou={`yV%%AMf9ZSURQP5ov@&}b8t<UD;WS!CnQC|T?FK>u#$CDEaCSFi9W za9zFXm|ryKgw(LJic;$pE?i|f)fcsGW9sQ^Uh#}GmEC$a?0A&_IOF9dEst~arEkFF z?n=Qmixc1ORlh&GYiiIugG8spZfED&TEAGKc<Z0e=>_Mq<2Nsu({;kPdP(u~x#hPS zBGPMKURru>K}vb{ou(Pr=1$5zJ!fvgi&<+}w-j(HDkd~ePfa?l1gps}Xfc_d0Y%iD zom;*=FP-psy~7R7l7M~x|NXZA`9%2ahpqpw|9-!}{_of8?cSXQ_bQ)fy5FtPOIf?r z??mjxX|K=EGCjR>m9t_{_rG7)_rH=B`FOQJEv_i%$Lr;4uaw>Uc*KMpuV$*7GK%b7 z8@+wsmrLGOk4sq8|ApTAn<w%6@r#!qE-ZB3_;L06eNnr;vv+Ta*#G_9gve*R#M)sM zDRN;MP%?ktrOVaboLe}U_PRUtYe~=Cn)Twa-+a!J$CFJ9AGzF)JNo(0kH`IaCu?tS z%l&)F<oD9-qd%wo+B9cMzr20jqa&QPzt>ehKR?HEvBiq~y1(0tpZop&pz_%D%(MT8 zioU!EjJ$0A<x67j-x)y{(!%y;ecFD%PW%3otjWuqM1M_NFvq6gfkRT*{s%4IZ-wu? zcX`$OX<_YE(d{}?3#DINced3$dOFPIvfY~#0u2sVIVMDg)vP$vxqd_P)_b=>RczsA zzu?ZdRex3U>v@0Qum4{wbNfM8i!&&lWZw@tb?nTFMM?)n51!n{b-YjZ_U82d7plU` zAHBHsD)hRf`sp=U%%=Yw7Odu+BFmhce0tj2sr&AgObdObUL_Lsvgkrl&~}&eex+T1 zTw`4Bzgp6^IqO!k^di?8fA$|S4KBKEvSW$m)~IS0mf6m2JSXS#KUqJYqkHx@lRrEY zWiH4GA7tdbyxgCEZg6=1o{w(Tq4CjN;lZrepI9(iZVg%M7d0<cIu9w;L@{kW1xhu4 zc9!f3pB^1?`F!``c7FY8{V6t6tpu|y6w8<1T4-PV>`c>H&}A&^cD-7);LV8>SKBt1 zzkCsX8gxmAgr-tT?dOBgWDp=+w>`SBV1dWS8wuib6*ueL$!3AIG2zWkhtr%d(&PWW zyz9!%x`V56mhc7U*NaS}>~s<Yn0~VCdM6pOVS=x!cT)0}Cw6&vEN)+Fm#^EAcsb=2 zXh`MF^?H809}iw#UH!S+qW0-l)nBV>4>qwDKR<W1K2~9Z*q`U;=dbt9-}A98X;1K5 z?OX2loI54d|28d{tZ0;VeO;`4?U#$k<?Hv<{46@TvTV}iuG*-bMNj4bePH)iJ|P}k za<TZl?et%=hZ2mxii@SL)_fBan0_!sAaB>pWt$XVWHs4+e?Cj6xwD#`UykS860V>N zf4%bVOwkN>Vw-6*-y}1rK!?NpPC;|hx^r`_r)RBIRlob*<>!8eSKn8HdYzsBf33e2 zr1I9=p4;x%i^U74Na<M@#of(6IZ5?Z@~`i|UaxPjR`gn>>cG)tS32WsbfR~_mOCCF zWEhzQR){bfoj%1^uD8$0GIdkIj}H%z%h%uW%bB!$jd4}{>#T!OQ$qi~*?c~(=%nh( zxi0xxd)d#=vz3m%?Cs)sx@y18-!GS&+4;8}UBBZI*Ib`_!9T6bkEDG*e`AK^)fw`# z3um4OT`aQa-<M-CdnyX|eSES?t#sR!E>Z1CpMQUQdwI7}W#+lr=KhywKiTu+Nd1(T zm(Tj!{ao@a(>2TGxZs8RJ7-P(Xe#>KN70#qsaD~^v1x7X+q&9Lm4;oo|9IL|C9~kn z8*}$8S--*aY0~nnS4-x;dh*|OPK3sy{L-M$r(?=${w+~j`F*0h+{WDUpQ)E_?y1}? zR$vlc@%gNI_}ZwcQ%?O_zi-#%{IkB*%Y0`~OVyfleb3QbSC;W4nmSK*w$9I)@o(CV zE%!4neNn6T)!Y#%fAEst?W|}qSQXz`Ca}VD+RV8o&(1I1y084>QE}@lzcSDGC4Y&Y zWVCjU-?@jgOtW(ewQtME1*<;^i!7S_>txl+%_|RoeSQ7-e)U~qFO3C%RbKI{eY~G9 zsQz!y>dABW|9Pr^uI}2xO+Pm++Wf`zqGK~#Ytu&i!mC!o?=$8^XhhgtO*`t(^`Q3q z-R14J8=MgJ7raDV5XvI5eKE(kE`7cSax4lHyd3!T7nZM;;@KEH%^_?4nopkMc1un? zKN7wD$-4Veesis+-WSL{lv-%o^ZDeZ>-j9a^|u0CS9;pM-}ignSH)>lQ<sI^&=1kx zsIfZsl(E*M&a8|6y0_*jU+w$d>iW~`7Q@nok+mmnSTdK-^7Ye_dOIyTuXFaxa~fSb z+Oqy-Z+b7}=X#wBT6T5*zc1?PM`X2L*}V>*C)3Uyr!_VHSzXAa`MU~vwJ)_5ZgXAO zzWd$xE5ZIJr%Ym9Q>3FUxXB|Z+IhXz0s-suk{k{T>Nzv6t=cm2Tki^4iHKiIxug}= zS|qBLot<gC{NdUwHj4LeJGb-QJkTlA%%wihG<({st!#I_RaRHLk~wxuQ}s3^MLwMJ zHL>weuFI3oTQ5HS6;+*A@#9wZ`c|_nu7%IC?+Z_l5Ep6saIgCP)GUQljSXyEo6b17 zgF^Y2gF=rwD{HjtK_%0W;`+T=Z4<t7N^Q5E@!{E<X{pPtej0A%{H*jVOx<+O*Ll_N zHk#M|{`QtP|HZYn(YX^X_ODskx?sV9yV>jan%$o@_oT>~w?)={t^5CmzQ46KJGb=b z<P{H=e|0=s{HWb|Vic!X=FPU-h~DCseuwkvGj*f3Xk57bMgRF~zFF&XZfsE0P(Red zDf}q2XJ7lu%$=7@+GpiIuMatOZu{GE{ztDS8K-`IT3MiZf8RCcubdrM@)KTtznt<i zXnv}MRY`_{#QAA=uPd76-kNe%VD5Eu`_J_fqH$-p9Nw;w6#VP-X*K43KOS{&^m`>) zE26zciKDPM=ych2PovX^{<>nOxh>5HQm4ndHN=;%o%TSNMTXJ#P}PLnhIR?UOg~v- z!q@y*$kcZCozTPGHD1#Sz5nvso4gfTDW!KV{pIc#Yjhsy<#^^^G?R%u^=;3UoRH9I z^KWfBJ1t8?d&|q$>-YD)-;w=nZuz~NAKX_g(ffGblPlQum)Ex4?v{S5F3DP#9eMY% z=W77l)V#F%#V0pLet3Lu<<w{MOKKg?weNi%#J%hM(SCXRd#rzsFP-u~W472O#n`L* zdp<P%mfNkHnrgW+H|9~-s<LChdUzN)zUVU=ot`DB_;z*7O@ChD#>0F6z1e(z)2pin za#y&xPO)#lcE?-gbjR$&5!|&CVkZ<|JEFF+=E(^`bN-*7PV0ZxE_DsDdBc*v`kIK- z?`Dg~kt~O@&G%=mTPCD%T4!~9p&XMyhKE9F$Vtmg-e)VW{+V<-@KXF@ONTdXEQeNK zIJ?F^_HBs!`s;u8cZ4Pj)~*(QKK<n6iOTM6v)8@7+V#fj)xPgR1(O!f6-kMSe;K(w zZ|**!Wj9a1-F{#0yi!tj*}K3C&IdQ%(Dm8AcurYrXy5FpDWCl(@9nq$XAv-Ig8kQ1 zFM0M>ojjy@+YPw@6MpeiXY;1uiEY1T9noriH8Xvlq;=Vwsr&!!e$=Hs<=E2s6TbY; ztP_iNe*Aao0(+CPcXw8<PtuC?kw0>w#JoajC;#u()<+u^8fHE8pJx+U-=o3+TG@6x zZ?~_s!|Ub=mNQc~uH2MfQoirUBkrq<>a$jcS)YztvBPd=>RUO3jr`DF8MI%(z$8%d z=i_nheRd7i0u2t1OjUCvFDqO~WMZ{WcfImua^us*s<pcB+3)APn0V#W;w2%cmT7wK zPwerXwoj?DYl-j8z4jvPsryf-OHWm8pYIy<_s)*O<Sa+m`nx5UeGj+u`|q7KEC1=N znNbF>msrTy*V)_=)YjOk!?*9$rpa^8|JqS*EcdEh{&nc;6!H1_%m;#27x-qZ(EqL1 zuIF-n_o~kmcdcF(E`5JVRm9xM=h8t#9CeBgX_227C(T&eB3^YcdS!X`t7&UydB>FB zE!{XV@o?M9b=m87J_Aj^u7A~Yx6(y_qEfL$Ymm9WLd1r~YoF9hlZ2<JvXpohOTD_C zZ@0R`_Yq%ccHhJZ?SJ=I1}~3VKjE~H!s#^?>CVDT0vs%-_)HfrXxWtddhz?XHNRE| z{61tq?VJB|-Jp|}^-fWndH)|0eG4jq&gowc>X{psIsKcG;JkPGFD#UGzOeWn2wNAk zG9##Uk`-TM`^K#X-#uQK`t0`3+RnS(;O$Qxd8v8%7E`%cvXml{QfKENwdN$5Qf5w_ zyYY&9{Qk1cPcpw2?t2$He_MH=_emY@SP@3dQ6@De@wkeGk52B+*vSyC$k5ov@+AOt zjZ&_Zi2--x42Q#Zk(#aP^J}k}J?u5Vx8Yr;Fjw_ewucd06?V(aZ!<Kr{B?`NXLp9? z-?Mq1%PyqWszt?5yR7=xy82trid(fMQF-1!mrjoh5}Ia~^!s7EeAxOp+maUnx92Dv zuhTjdW4(}tm2=aw2e0PW|FgVO@$8Ib?TQO4J%iPo{gig3-I|}g<@L3L&FraRnYBel z@9ymUmi5RX>&w<h``Gy9a%`upIiXSLJ;$c<)01tvx7GaSyeJ70zBZ?Q+lk5kb}Nr) z8;11$YI_*}|5tc*=%)jX%x`-Oa^HVm$Q_t{<GaYWXYbbce(S$`V^`_w+zwx!lF;a_ zpypZi_jkTU2COa%3qQsNuq92D*mGlP-`tJ5PHhY<R{jlVHihw)M}9mI9$Pv!?$@bv z*SG`U>!&V`ulxD*otu92Hk~r(`1Pe(QkVE;ED}uj|9-c-;?%<PBDW{T=X0G6x+CK@ zO|*HT`AWT)$vey365oFJ-PU+*mBzdq7Mt^$%3m&>{_Kaaf7h2^+-$K|85d02v2@y# z6R-Db_J9@)?2uwP8``AVvQJRqv`&dS3x~r3j>b*Sy;~!<<@kQNt2cjIgkxlN+R{y% zg6Fo?3!Zj@luJAJw<foS*vGE4P}b30nkL4QbQM$rJ+zxR<<&gDEThG>s!fsHmzg-Z zQd`@C*Xtaw`nrcTVq5Pv9U~TKdws5o!?ehomEPvBvdjKHtpC3@a`Uo8;Vnn9tP}sd zPIu<k*fN!2X6m+jcwdwOURK<4dGPD?`s?=}<o=bGe+(K?5xB5;E&Co{XZAG32OM9# z)!#=i)#LIoG|PLvbbj5hlWz}hOgPvyXIIRupu-Zgm41OP@l~)%IKZ$|#CidLn6>@! zUg_m5t0RIJ-aQy4kYs;%Tb|Lsx7+U@yEe)A`@QOX169Rs&t}ckIQ`80evR<$D-}<J zrj^9=$=kg#nK~m)d+Hkb);WGfKQ6k<Tb`{rzEOuiHlQ}C;M^R`YYU9ti|EdeDm7Mr zeD3Cl%}?|m*w^pgn|XQJ&9FVcUadYD9bUR<+3pR=$NLrtv#_qZDRRQ4^7FH^jtiTb zaxIKl6fSr&rA*se=Hb)JUibZO`QxZ5Hc!puuI{!DEB3s3DyYA7lJTjy?Y76=G;b@F z@hSiPb~NFJLw2Z$zw4UtNq66=Xf2xAaGA4RFDFiTM)L8#*467?v7EO3ekWP@UDKv4 z!PPG6Ki~73-<hyVvP(fkWdY}tC7zQ_PDJbh4@M?2vAR!Pkfz%*nPZy6tJN2ZvNh6G zJ#Vh`yOwgeD#+#jt0OOy-{n7yI2b0L60UWQ<MN|3Td&96p3p2ZW&XQ;(!$Z355)G> z7o6nOi@bMei$hn%j8&HlUOoNu@~5-+%ADlf$P`!~&dR?*XY;1b)AcT0Z&!NT-~Vgx zRlSc#c`xczJvlLPp|IJNe%*p)wJckND(=^Qf7!@u&VgC%Ff^74R6Ly;e(O8C-84mp zMlFF0$@ls$GS3z$U|DtHHutX$WpATi?=gFM;XUiRHQig~OtV7#BsO>lXGtUnyWBs< zcT+>*^>S~WOJ*{b)>%8hXb5)vy>d@!n$JJK2t987ZO>+Do(A2QwP|sCuIq&F@9)1~ zwEph*GgC94ihSB{Vp0FE=JuS5*^_QKi`&Z8Ony)oGU=(sqtmax`<5wYMQ*<*C2oG( z=kKklQzw=E`jUBcEo<u16Pe;W6HbNBUGek_qphG`ZsMU9&Vx~`trrSF`7oK~giiMH z1c~F!&-d_7<;u-3m(gFlefFfw&3=E@mG}mHiwrnd<$2SxXUgr5yL|Q(i5?9We7=Wo zYPZOr=?hr?M5tRX{u{k^nfKY^P;X=Txxe3S{4#aT^ib31pgQHux6l+02ZgB)Hye*i zX-043`!&m+N80R6(5u;NdQT+Bl&zX<dUM0lt{2gBE3BUU6YCSrDRnGcdZ)#`W6QNE zU9K0`?ph-2cfabjZtW7+=v}9u?W_I0X47UhR_pH<4!NGY<n<w-DR)O}=K0lex_o!S zKHWFH9y9stR{7TsYg4M(Pn+FA8VuaeF(EaqjPJ7Uue@)&3mzVlIe#~Q<<Iz%GaC;t zy(XlvdCh({w^yx*CPD*<*|<wEV8i`mz0%RY%WbbIFf?WfMeM7wlrLR>TjBoCZ(*B1 zFRxmvBXL^YwE5W61)4X~-rw81@><EIrJANZ`Fe};liPDd0zNp-o}@A9rdi70Utb?) z=^S|(xN-jaz2Bk?R;V4n-5$AFZ-y2)+Ih<j3V&|UTYLWLW#4%=H-8DA&iYh(JvKf1 zNz%?_{_Xkq<!*DP-)YmabbPtcBl2LN@7}NHmSr!yHT%}m(5%<j);6}Wd_P+pzEwmd z?E7i`{X1U0c?cRgJ=j%$;^M9@9!8EWvl(WlmTk#d`$kDA=<*ZiUN4*NGmjSXZQAxF zsH5lwKkxmuywBBF-FkJRNJc^SPIgd%=+WSbH}+j~a7tF?ku-7<UKQc{{+eO(u?S!D z_QFtaWA)Si-;$d@Zd<icdXA<mXhJ0!G?(GN;7Wy3YV@9*n^rG&+b{iEzIxMAx$H0b zudb{tyQX+z<@-GAtC>H<H{RP|7HsEz|5nfC<9GO$=P4?^ZrjEC^lpo~pYHVhZgKr{ zzodGcU#&UGZvFj4R@$3YxfMT}V=u(KyS**<_M=U6G`$zhEIf=9$Mv9*%`&l&+FI-B zepT1^RDL$mE}NIl{7BL`ZO6Oi`c4+6eAYe<XN<0^Teg7W7hc$ds*5fC2U^ABc2s|V z$M^rOf2lx&gT2rN<@N0QYZr4(Q@qfBcX!CuJpMHT36Fbr{7|}ke~v+dIL8zzrPR0L z7q{;(UviA^<-%=y{R9Jku5>6$czSB;Hjg*Y7dp3ZNxg9={{PG8Q)`;JBIQjo0t_Ug zi_hlFSfj%K)WJaG;62&5(@aZVTqp?jS(3AI*(p8coP$lQVP`9EOjvlie|Apqci%G4 zxRu-Ow!Qfl5y%m_X0h?*Wxm`Dsuoh~vNThku4H}ui!tv=hv2oesfRDEnGYKH`^_;S zQjG1S8K;?F#P^L44`hE0j@Jh5#`*N>y3B)a{e36OcR&2&a&&E<O%L;u&#N`+u7-v@ z+51N5-IKUi=QQ2>WCT}#n871saUoam^{R8Hf;Z<zZqJJ~&``8DyddVH2afBr6BHR5 z9Tr^iP<k2=;B<3S>4oz8s9mvk#T+*O|9qa7`=>4RW?Qg$_I=&EOZ-aboVD2RbMjf) z)`bt=B}kj)Y{)GXp4Ta?erxru-_iAj(dXyB`8KEY+LAZV<l^goF5N63&(-(Mi#zW| z+ils*r5jRCPTFCSeoBaAg{n#LwOfwxQGQ6qwhK=E3#x?w&6-)F_4n<EPp9=?HwXSQ zIr8V{XV7l59h+_cd^jAM7k>V?TUz8DbxUTHxCagJX2>_bUcW!CzUTX&CT89i22cm{ zN7bL(=Gzi>K4XcgU;Sobo!W+SEp@)EOG`Y%f@ilbeOIt>+B9ElEl^Gma$XYSb#e9j zeYYm;taIKN&#f=iHaGe6%=CF1Ym&0p&D5K%d3DpLsdxI4jV5L6^2nE#oSLO&`SWUc ze5CsPx?h>A-`M2rke`Vf<1*>Kui~st#RKJ|-$h@|JH1n>{HEo#jn21)L1AAeps;z3 zG4m|$U485|&)Y7azh!!Os+aAZ?fLV0k9EYWdTN4(b-S6D1owV_xMcN;2h~4srqAE{ z*Z%9<_i2%N{}jSwuWod@BV*1R?DBVI@bV<nb6Z*%BGa}_R(57!QVJ-`*?8g9w6~SD z-={B**a?c*9XeW5d%q{@o0b;VFG=_HTXXixQI^#T>$_6&Z9kn*-ZuXRXaBXnH)Wr1 z$?kjjyfAD{#KctHhcBPW{jzZ2d;Vn7?SeaO$Ms@&T?w1M*(fdh;-)k0@^wExuKzzx zKmMH0u|pGcChqd)<wvTtS2;K6Y;L<eBQLNZzFp(e@h|Pp*ZL3Lz4Yqc*U4u#DaDG& z!m4*r9tOo@g9A6GM%2FQaG?(}OadA64y@gN@75tj)?fh+mRaxT$ZinG-#$gy^vloZ z^V_ef9{Tq7cJSO1L0{g(v%6p1zOnF%fadqR@0A#1v;OTUeC)JX>X)Qc^`|E%nc4Yr z?(PbWo}<C@``zyM+cpMu9=tItJ57*3^zj_a;-+>Xr=DrMWp90T-stm7ru?7%PTi`5 z3(7Pu+hr__J$E=DJfNWIa{uf%Uw#+7aQYgQU%M(&oNxKwS95Ol$yzh9b3Q)aU(U7e zRnz{tJL8|;I(X#g&F9XyYe4g&vMe1tUVLT<U9~{=L-(8YiC??-hk-Wc9p<;!;E0+3 zq4x7x^W}bXt;*g+T+iLK=B8y&mr2duX<7S1%S1(M*mvIfT=ClQ>~xc}8+xy@9Jr=^ zGjwm(RjuU$^1D=i=~NXup8L|s5U8<@85-#-&`3Yat26(K?TJkaFWwh!pCOQLwsWO- zUD`Bn>GM^4qh_!CnYuas{I=dpY`KxX9_O?Z@7L{hPkr0sep<v#)qY;ikz;r3(yv7= zdh<*!%k^L1XRW0zMz=MrV=uZhzfs*?Uh^i}qWF4j`OTo}Z*MrK3%DFOq{)pud6&f! z@ma@u`^shiZf(u}`rYZ^J=3%^5`R;|&bEEo7QW`C=$l0=93ksJ;1SQj66N7g?epbZ z6Z6_;29_>?g4<`e6ihf6GM7{2W%b{6kCnPg_rKfmn6K5xUhMB|qtq_FozhwRzvbKx zGJCtCV_&aqm-CXCC&g<L?rz@HyXqAG;d^^3H<xMbezj_~Ov{?Xpy-y7PnG4~l)K{< z*U~#bb<97V-|etzlbqGx9VZux){4bU3jb*RI_Zy^&x{8(6^}aAb!4QYre*9}_1M5Z z-N5n<!{jSfzY8vz$xAW`WXLlr>HRWrn5vZ&|8%i?|F+7@E6di@{mXWpcnLHr`ph2G z5S%DCDfR5$O@~+8T-}@Ix2ub5-*nfU7Z(;TY`hhea(!LwHQw#1Sy?_i)>>^#SR1+X z$KDM~CwL1gaH)RDW#Mo*Af#bB$z$itO{uS6S=Iiw5?;~t{{97@?P`+gW;ds=d7~e> zNo7iDQ+2AhWp+_gZP{t2PT%kCYu}vMvHG0cuD|a>x6b{r<IkqHoeA%Xt<FUStv{?Z z_s43ZYtB!ft`rUO{<pJVXvfP5CHJac>qgs5`~Lp^|M=wp|Noy7PBCY9Kl!O}x|G~4 z#0X=^WQOc{yvt3lhF@Ucdav@i?DwS{*YD@;d^)Wu{`8u<>fNWEuYHLLe<Fa{+m~cg znO=Hbi0huyg0(C$7Vhb8idipnnR4H5Tx;|$DCg8Y!M`sS*ltcrk5LIa{9%>SFS9ZY zQ<qc6+?Q${se9F<JN4=FS*F=<mT%(@>RNj<&8+7f*FC%McZ#<i6Ih(u7||NEiCbl} z+$p~m+7^#lmdl&peEI$11=UK?{hRd~&a%FoYg_&8QMW$dnk$q0Wv!pxDGtqEY_)ts z)sEED(-Oj*tY<8_cDsG@HGfccy$i~&hYdnEbkt7W{XJ?G>+1Pmqb|BF1#Q8+88;CW zo6`H@g74}TT?!5PBm3l=#!SoNWoz?3J~}FPboKguS?kp{t&Msgv-H_ft9Lzid<I2N zP9#`%&(l7dSjgnEu;pGW10%-~mM(s^&ShHzw&mo%KCT)2%XnwV<ns6TazA?gd(h0k zhV}QPt5?_9sBJgQNHTu?HEX%^%FF7J(uPSbr8z%7Jp847+e+-o&(F`J&$?_Amix>2 zZd)d3<)?F@x{OVQ0bfDv{<^)v#StMZ(-a~-3r_u+^#9t)3ioZU-C~if3vcf(U%%Q! zhO0F@@StdO!a}~Lr;*$CB6Yh%)eg)`zgg*L`jubCVnfo=uE@=4nNh1-4@w%R>BQ_P zINm4wYv!6+eBVJiIkfV^VRQ6C{6!)YXrZE6-klq_PxEczV-nEtPWbuhsgz7r#f!z6 zvT6a_*vsPXFFpUI_q_W28lmbqXb$$`ow(^^;7YEI^R1G-m$oHln{QW230Z8qRB5B> zZ68*<zh5r<uhiQ)S?`JUk&H+MR~w(Jh4Xp0%X!&fc^bpj?q{D@bm7hB2UVFLtyfEJ z-9ImP>)nNCYWZwS^Nqqw4_=!XpEeUzPWCYfir3c3J`vgS{{9t)%<yZkmhTJOQXMXH z^-W%CQN`b{*Q3vdWUsorca!wKxVeXq^2fTe-jCU|-XZU{Ln4oK!4BP|t>%$gYqqYn z>Tb^N(CL>l)w&YBVT$pgL@mZe0Z#itvjLkpmh{P4s;`|ZvsEf?Q@%rBQGJp)qtN>~ zpgq2?bR|#i+P^!rTg~`XD?gXely#+FuZG{gJ>^8?`fzL6Q?u-9|9m`tZoxIfZFzUI zUWZD&iY>qU^vWb>^M{h=d2>Q9^Srv9zklm8mF({<)33^P9jTsd`Kfc+t=F%n-aOpS zA7A};>%l23D_<^IeYdt%Eil+)ZSduX-`?JS%M&om%BJp5#hS>^#?vYzMUdkCsyZm% zZ}R;T@K8N4EADH%wGDbZyD?7Hp(yfI605o*1EXNTGfmC3y;eWU_r+eVUlz7L?yilP ztLjnR(ue*?^|7@4)Kvn%R~l~%d9&Q^+Vn1ugI5>3_k-34e3i9Ny&-E=;*ofxi%Z(3 zqToXR+MQ`yDw<bS%P*P59CKbX#d^JW`Mt{LxvBqpWv#!RRG+`)swKa3Y}oNre)f5r zLf_4PGiguP{m9VgL3`Ew=19~OSbxvGwM8?At7-MFgx6LFR4Q&P5%{IW!~z;3c8M{u ztl9bKTj)Gdh1~9lzdyDvdh>pbulM>LkGi7sc0OIXeBPz+)uy-91CN+-S#6tk<#pUm z-uU&`ZU=2zz2d=a?@*17+A}i@A39#JarZ3qyn3tC=PlQClm8c6)W4kyn|oAIZ)&}M zQtdet6$cTo7ppl08XW8z+a7lYZ@6}6sg?Y(m5J;3|ErR3*fEuTuV?PJ$zjrW!Xi(; zy^#H-RXpy3df}U^-Fmw`!oO<ymu!kV^-Xk+Y3-#i2UJ^C&Gh&G`Q$EN`vuf=`KmVk zP5s>#_uYy&R(G!PJz|!B@6S>3_!qC5`RydMTa0hj*WBEc3aW#OE(jeednb5B$WdTk z{lA~}e_zKJKRfgDu>8LV>s}eWHd`CJ+bk?>*Zn3|?k#&hTn&$Zc{ydJ&ztKxzb-IV zZS81{L>Y~{>(pR+ep9jB7exV%4a=_UGRxLEp;h4y{z3{nb=CwbI504+WbrV3ee&S` zc&Vwk4r-NNViVz<n3OiJ?$^uXMgM(g8a@4XJAb=P@ZzbbmfhHKc1h6Tg}HA6vX+{i zSpMK$0@w6i?{>X*DvsI9^&-giVV2UKKc7zDdaV4_Zk|QqqL8|qzrMZ>e!FAxwuhe_ z4~BO(-M*f4tVeQPf;`{d-r|o58y%OwXE^q&*5dJ`Jwf@k(;~nBEUXRub7Nz2P}y^K zKA9E98wEk-f##Dl-)6qNy!`ky?V@A9I(Zm5O6D;Lim#R8d0V5V?QrW_>et8DyB^Jn zO_#7Ndb0oj-~7EIYbGk(zFv}}8@SoZ=-!8~Qa#f}V?d>Yr><F`pWnV;uU4P@xzu}l zltR~fzps!~k@3D&E&o(%cd1421W;RTF=)V&ms3P0x@nfFgrCxm{T*M~t{hMQ)sXuA z-Q8&$o@~EYb^4a)+3F(KNzOkDKA$yj_m0$0{mpf5rk&<i-}_5BuYGE@ez)WByH`)u zZ1R4p-k-8gEB~C{29;miEX&?4T)pecg|tNr^go}F?7n`=D^WW`eZ}4%kGiih6)6Y^ zcyg$7b0KB>yRHqU=bMD(t|&|pNbp_1yUk(`#z@LNWrrfk)g}TB4uVWeW_-Q(<G#MG z)}@=j0-v9lsBHGfEq?nsuh~U@S@HbRMk?D1mu%$TlqGTR&7-EEuWS2yHM!n_`fuOd z#Ba*_B%ax(yY623y~^WKAxnRMd&_<GsMFyRm3GzF-8au|>ixZm_x^^&=F<1~s^6Eg z{w{c7Q-U0yE25ZO*SuW(blN1d*}*H7e)a?vho-;1@#s#(mW+vOH!3=Z@0r{Vsmb?q z2ozrYvm-rziY4Qvg-Wa6$7$z1311(OR;w{X>&$$6`x3cy-50k(gJa*b3Ph(?>F@TO z=<)B<Y5ly%lh&}UTDtDlm0m~Y2`&P;Z(W66sG3^I@^uS<+Ga|iu{VoGrNiA<H%@!| zbJpp8n@=68i~GMlQPF$4;gVg(;WpmQ%f3W~<W1N8bje#kvNa?!|JC~a|8D7}rtIDQ z_Ist&zNY8r=FX0qYy0!f=JT&M>zXO+%=?gGdUD^d+(Py2x~1E)FGrN$Gdq6H)+H`G zW?NafflSs@l~VPv?x=3vRT?5E#h;y>oqk#=nn`S~ZM@4iq*bVHOlvB|W`14}T+FoQ zW$EJwZRZ6VP=`w{B(r$vt^WCo=WM%!CMZ5{XfKGL6};+nY23}WM;-nL@60^nFFj*! z)U~CurgsjVl=R_k-^O=)#-fIEY!#<ho8PNYjyWY1wmvTRciZags%t=78zRdlef|}& zv)8fc+LFf`R$TqbR(dt{Gq0qP%8?nGH_uwtzg#-K&D%1~f4<$`q@!K^^?%hL?tZ^- z^Qm)(E#%H<d6)evoIJNqo-cMq{j0U-4PWnLo}cp2_UDtyVsn{31nKTrb@*HQ%2Ov# zTJY7szqi-&*Wc=sP7ZAhEWf5R2#TNWX)hC7$ndhw@Nn4uy<y+p-_NghnpnP?SEu}% z)8aQWZr`N$#W^3`)U<lVo9fC(M>-e&JUN|xN=e#tGs|G{@ULfP8cSQfzqB`clIHyl zm*j#$ksJYvWSz!Mj~8x@-<GrfRrV>vnjZz;%N{Or<m1}zSovz(JkZXl1&+-*y<v5a zI@SH=S}oQ3GQG}Xy?t`OyuIA@?D${icM6;jznr{`<(KuXb6k_OOcH09WCndQ-x@9C zIrl@x)khnT%W=Oudg$->`|{H?m(*PLHIJ0FzP>4Xy_$BEy8paAuh;Efvu|o>+0Rc; z4ZE%w-})6Z@5ZBzYbr0!v#k#5E;dq3SU5Emc{Sc%aL<d|X}=mv#O2rb5_!*~FJoMA zoI@jeiP~vF6JaKS3{FN@*)KN?Jc_M+7O4K+;Oi!0ZBp_gfLrBWv(EA?>9s1#TpC55 zCVFo(UR_yfdF@V}q|pp1zTC&ta(x0fyje6wx~?gDrGv72-xh(Gz2BPetqR;2v~XR> z!Q7aqYgTp~R+`<;FYjk6>ZcdI?MzjM=d0Tf-d(<bds{9y>t+_|Ce_ncTV|a*e5GQ8 z%-<a+!*=Fx^8Vzt_p9Z!(&_F!5`q$1JN*8hE&Dg8?$N4g6H|U~p7ZL?wuV)DoF7hW zUh1FDBnFBjB~Xj~_JoYjM`xYUFD~Xxo%MY8lY2)a^+Dq&>DfQ3&aO9kz6uocH=o|! z|M%N%`PwfNYpsgzHLrU$=X&;s`^%oKoVNX5m3E9%hDU>j$Zg|^iVTf*0vQ(PELfvk zcOOY?=hRs4+09>dT07AD|G$s@^)G7I)~q<UW8stabFItkKA$!J^?v*Py6pW$!8Nvy z+KTJ<e!F#JW3v0-U+<sI&JS}ATN^cX7T5BZ?PdYdI|?5De!u_!)$n-JoMk=dXBt0$ zxBGoq-mTp2cbD}TFWq~3dmC$V>yasc_I%p^e@o!3n5#~`|GxEqwS3HBVw{JxJ)p#z z@tVzDlg`6d!U?|XZ?l{HX-CcF42^M0A5Lknzfw7~X&Y#5l=6awi>JFe-MW;>RQtMg zuIAH2b(;<?+&rgnb{6NF+e;rE=@kC9`W7=g-xf#rb8og}UcR%|lec|a;pvrpyS-A2 z&(1Pkr&s;LXzh~suS$QW{@j_cs`kT!gWD9(&01A<W9c0E9qUXS-p)zN&AY$vuGztb z()M+G_DY@J#eFT|@R0*;j33sy7EVr<KQ*rqJRW*~*;~u3O*2k=ESM#H_T8#5!P>cY z%hgZwifi5f(D$VJ-n-R|OiU~a0h&xMF;is!-kKi2?0e2W<F2@EbJbs~rrvkCl#d*> zdw+nI2)<sw-_FFqKJ!-S+Mq6>^MzM)3zh!vW3780a&h(a4kyl9Ax0*Fj5ddxj+d^5 zZqxZ?s`y}^%a+W`%VwF(NlO#VNV|i)o}ZU#O=a5ISr+laOlw|#Jr>}mjWk#RW-dtQ z@R?<@QmtDEoS7^cc@=DpB`!_i6V9m2&spd=efp9EZ#ErM_nVVZ$tP)a<k{UFKT<OF zA~&gQ?c$X-i?HsT1I|pFA8nss@rX0qH!CuJdzti<CD*F&*M5)82DKNngiC^Q_kX*U zy>`=+mzS4Y*G})9`r^6DLEC>n9$!n_BYNW9-Q8=Oo`6<8hf48noqWBS-!9|p*QEtZ zH?XpDo;%#e_`%Qq>#@k+wG(3FPwo0@IZgCnUUY71<Y`aol2CQlSgoaNzk?R3A5(qa ze(m<Aze?8mpaFI**M^SnN6g9GpHF{#dpmu%W1ZX8<MQ=6Q&rRVE_oy4mi3l<dzt9h zhkMuPyjc=>>VzMQsg~dywN)SQ7KX0wc%hl4bnVK_$?E>MTFNzd&rHeE^b=~GRO0%N zn~`Hni^EOFt6@>wbbj6Sc<|-r<x}FnKkWbCwWRTO>oP`Wwvrt0t$9bHh3C(fG|!2I zPXShSGGxy)oym2{$GgFFZ=BST3~ty|F|3OF!p2xzaQolKKG0(R1v-qs@BX_dA(82t z&N1a}rtIbZ&1s<1ur_U7AGh~bVo7xN&4m0+Ew7uZL7GvXlF{cpiXesC=11G7YKusR zoSGW6+KGAV&!}tHTGquyCtqsWnth$k+VRJm&FAl&OYP+UcrQgyT6>38{ym%7bJb5b z8K<6_vS0#-cKAA;scZ*Te|ZK+`aR4Na8WzgP`use)Vag=PUv60D{q|E(>zlqtKRUo zInz3qj`>rTTsf`3zvkPU$kjT^h0D7>Gv-dzI<eBnf|HRWq>DjN+||w7`ssxmuY;B+ zbBEnOt6}o#HgCjL$t7#1Z!#|W^5P<BgX%l2P2cX8-?vPaJvYzxwwCrUtLJZp#r5ls z`NrNkvaDn7+UV_3;cNdqogV)zq99bARe$G`Npr2scLjlt?NImQT`qIZ<1SyP)5cgq z&;S=_<0j^nYq#V?e%U>-;rFbwFD@?roUT7hR&%S(m&ww3I~3#hOV4~z9LcoM-Xmk# znyt;CAP02_9P$Mc&TfA5hU2dus2`cn6S;*6eN3pT2Q*!CW2raq4qlKK8`vhxNy}yW zv2%p1;*U;`$%^=QPiEVKsZ*CeW!i9eotXD@y<Wxml8dhWw%=}W>+dNzE?eHRI<c82 z*4J-YoAd1*sp7nOva?OI!#2pUyaXMB1M2OF3XA$3Yg!%tJ8tEI;NUqsFMZsiJFDpI zyy|zB(hg5euIj1wY2JSQ`~7}@o06N+VezL<xkqnEX#5hq-S^C?mLkWP&a>V6`+jV_ z9v8j8ZttI%?Rj^d`E65Pd!>}`53<dXc=I;u3B#@5m(p*lRzAJ+YmQb>^<s-B@AaRp z+Qw75e@o;&clp{Syg#0unfZ8Lt4nY}QOv4Cs<)Lu<4mVmI(D3pH_qJ`G5KfesuvU8 z<qGFIu9xHe3ObT!Tkh>euHDCarJswuS$OaItrv&)#y^^S?u*<-y+yaSynelY|GE6w zm8;7(sjUC?AujCD?%R<%nX!le9*wy=t<&z>Ldm{ms*eiZ@BMzuyK|1|NzJR@;zHH9 zRNooQX=GrDa$4|aL#DQFwAkM~l?VT1u3bsJzAiSBH&AQlY=ymFuSG|mnzNq2G3^*H z(ju@p)dREAYt!0Hb2PK7_F5HO)WaC_DPwv*zkc7pob?ZrSbf_VSfczKnmgO3<jISE z+<%xQ>K=b|>V?+7M{ehct~v2`&eKm<MB+`7j&wAg`I?zMd&N|6Irw>UPujUTksI#4 zUbp+*s@3bbP8IIe-}@zK$E^T?2<b<1Uk-mO(393S)zqA_>Ck~jX8*ZXQ%mEgxQIPJ zc=ORlod^5>eDcn@P<g}nXR25G7Fiv}M^!mKhuN-(?vL#JxU=~AF}BrZYVRaK!LZ7w zp`&|E;FWzfv(M{$*QTbF@*It_|9r;yV|2vLh;O#lPfkpXP~Uj-L+I?QudaM9+obaQ z;}Ny3Q><rN{k%ADv)@_SwpB+}xWivn?(OTBw|}>$P=m>3;gT{5KPLvJwMqeHOSXQU zrrTXNU1&qFPAP+L+7w;6?XJ6*{(q`pztPr3|9kTBzN53|tdwTFt$k|SU8IT7?VKB) zMV2jVsXNNKVcGTD&SIe9aBy`4%3YvJzA;aIL(R`mUF&s0t9LKBvY0F>`Msj!zpPro z*>|$<PcA)c@$1>D+w8s-ck^U#MXmM->npo%Rr%@3gM-b7dA)es`3g@51;<S8dA?)q ziscsbHE#H`yp>+$Yn3xCCT9JnCwcq-mW3O94alr|er|5?l!_YDmcH9>bayV#D4zaW zeEQXy-g-Nq9G9;@letFk<dknZ-nw%0uUu0!dvP~vo7}2|4|iTg+<bYQVQta<6xGU` zaaTTEOTU_wUvg+kV%pNP`oR+olaKBB`E0h~`5$Ng{QSK6&WbBPZxo+%U|_nc?r_A_ zX2PxMD?gpybgyvXf~)?uYjbXHTI%5+5Sg2`Y~`U1iHGOxdnPeUv_(pFNuJ-TAl~?` z*F2nW`b|sOlmGtd-QDH8pRHIr%i-Deywzb{HxIRPuix{@D_z}A#;(Rfp0(?sP^(b6 zD9A2dbpd|6pXqCuf6j_|E6EhSJ#XuG+lgO0<=*;kOFJu->;3DPbbd_r+pQbVotmm$ z&Bnx=+1Bt@I`u75BkW2eL-xGX=iV>ECop7Jl}fD1P)4tjN=zH0^Y?CT^5)vX!pKo# z%E+q|YisbRrkyin^LA~P6Gc0|T=JfpeAPVMe~v|>aD7VIuP-mpP1zS&d%yPkO{ukO zrmRp|6J@7yz#_)$uJYr#<@Y$bT=%u<&c5aB#mlp_so-(1xmtCX=C|q>7ZyIO36uEN z#LC^|r<0*?FnjU$N8S2Xb2rrA+*kYi&{9Tbwv2WW)}`lX7%I={VSTH3$-vJpQ7`!a zpXc_;+~0Z{)<<tYcUQT3#o7yN{yjT8`|Z_;ZMs2@Z)L<^n^YcCtyI19D<PP7yYFOh z9df%cR6E^q!u55rvnTIbajxLOfySE6S9iW@DBxh^C=p~-(t8tOm3XM7;Jpdo?jw4u zXP)?er`Z3(`B{M)h0&Qu9nW%}nm@}l``S$7bfM-`dy9;fw%5<R@`bJPK_mMdS=nu7 z``^6Xet%nNhM$o6{)dt~t%{y_WT*f6@zH8#{Do)JSH4;1JKIEf_y2#t*UD;lFWi%x zVYdI$z1?0SU2j!Dv*^*BQ)Hdi8mFFKbbl{PP`T;Wxr)<32ZQZ>d-U@)p$&HzuSrEJ z;C_MYtTmi}yFh~=c85iDTR}MuX`Z?9ood0uR`FN<Ke}|(9<Z?}Trg%a*)XU6-_N_& zW{)b{IluUv&)=tbYo5<d+pZ&F3oa)2+nS}G5~+O_wbJKov|f^<_1w32b_UNbTygC0 z@9)}~8dE0aFdy3d>GYENS65aZ?H140H-77}sQy&I@7MAFSM4!AI-fn;@xr>e;%8?r zo|FCm>-zpFi%P$}xmlnYDlmVk_jJ1-51NyY_w9YV?e@Pf%k6Fd|M@(>_FLrPrj1*V zT#+rmv(VRhQvG80{;;n3L2t|6-V%L%{dv!(pE+?66M6F<{n<3(_43`uxwp2=&fBH= zl7IW1qV7pb-{0N69cyE4qY@;`qHv*z$t7k>^_8pKe>>IZ?RYjT`%uPu@h$h>6z2VV zd3pJC-DtD?dp3LjZk_x3U^9Dgt#!?h51>k*@UdGi$D)&-hyQv8_m(_Z!mV~)PL)@? z^k=GKzMt>4B`3};kgI$mxb)ul#7UPgw66<O;9B}rS%poJp|OT3^|(*=T2QNFR>Qw5 zTg&a^uPx#_`8c+Acl7H$Z*^03krusQ=>=y$zZc(?8LxeLW#(`(4x?I%W9qv8>bNP( zsx}6esu>M!)8ENTf82AJrRs;{i<!$Z4^O=R@7wl;$wz*#|LWtNd18@k_o3ctpalzU zK9BxvYO8)^vL#ZJm77J9N#I2slS@oUR>oV#^eI1=^7<bZHY|8>Kxt<}<j+)Fh9!4> z6}VJO%s_q8$t<V%@~&;)lzQ=f8Pl(f^TGbMsp9@Q^%K_QdQP>!R~jGl^4ssA+W)!s zny=R)?L4&w7yWFlb?uxRmW7{R*ck@fX2$?ci4N0+Ktl-a)A?5LF$t^?W#l!AwX%6s z*3Nn5)y@?j$y+0jwg3Mcp0d98>gw>@aT_x)FY7X4F^}?gh!2oA%Zb=={nm*$KR!O@ zU9GTRN5Hv(fn}9{Lq~VpVk<6I&K)-|+W-G~UWxUjzP8iJmjbOpe;11KD_%Iva;M|U zhYO1`R`fXe3tcF?7hnH(>%KdS^go}OVd(t7_UqN~`_=DlbH(KI-`<+ck`WTgbhbx& z8)7AADR@fBQsS4a!hu<FbJ<mI@j?9q&t!K!9vtG<e{-OVG1P&9$y9y8!e!F#9yRX_ z8fV$7&CTCuc3r}zqF~2qW;Py+vNsWZ(x)t?EQ?YK|H=f%tg>ia8@;_vTKD1m`v28} z?I-m&Uzh;dUVg-N;zQZFGEB2%dnJw4zLdQUS)}V-^yRSXr_)SbN=$(o3;Puv7?}RL zE;x~pTDoTbHyhCM(?%UM4+tcjHO@YE^e3Nif^Yvr4)o@%!i7?ny3e!k=iJ$`@o+Xr z2s<Okl?e@Pv(`x~7Vh}WlJz6wOZDXcKaShqlHLnizBc{YnVHE`kN3;ZUwmfiIyHm5 zJ39*2i)z*X`0!Batm1wh2T;W9>IOCZ*(ytdIBWj>e7<eF|7<heP+dFEy2vvsUwHyG zwl#zHJpJ`hDD63AnHhUF@Uak!0%%bW%EBrJCQim{Hiuof7k*}mxSXue1P^jpr>R7< z@wj~bp3mBxS2!3su1s!Vo1-VIRk%Bu<<-xOFZruub2h*Gx~KB<7UA~Kub!NoY@Bwc zz&7#ov$KA^hu^7!R;D(y^Z)zv`TVZyx7MDy_ZqZmE@Afx{mpm4k)Z5w#P#6Ceb2IP z&GXq^BWGV1qkmR^|DU1@3mg}&)>i&~VWBhY&mERGmd~$?+K^CtrNfCcmK(I~jHz+c z;q_m4=0tu`WN54sLhYS5G=Q3<w$G>iy^(e8%Nynn9`qC?@IsGidTd#w{W`4xQx=5) zXC|q#UD<Pv+~yNr@zD9=d*6RAm(S0MDJeQGD*N}-Y5nz)o729&y88L~`Td{ISwEf^ zVDo&%{o5VPyqt3^3LiCb>vg=}bZ!dQRQ3HjQx(+}85-XyIUI34yxr}rXk7K%t!wmR zv&vlRBK_QzxKvm7gSK+KaA&ey9QI1}b=E2-(2N;}1$wgT;N0-+<+3=LZOshXRUa20 zmqahW8XU?6Blgu)T8r^+;AG@*Q0Q)GoBK{m{o}U7ESswMp5OLLINZjYn*Rlq^55RP z7`EQvo+p!@{+Vy>nU|M|em`<E(B88AUChTvSFdkL0ma8XHHRavUynce_vymZ)>d{$ z$(!x`@_O&4Za(}kmD6fbfKxwc_Hvcmf*&07Got>Vp5`jgB(OpqwL`$jks_FIcJsW? zXZW_vGTpnTz3($DH95drsd`GF3bQOhvQZ1ve6;{|5bDHvr|!6w$h2;I!3{&E?Ca}7 z14<6wwoN-Du~e}1jJeh;2FB^)VpWGgCqKTrvhopMhP=sc*?FH%*Zq7t{n63Y>m^Ts zW|vGAL7s4bcCPxxr$dJ}Zzy<pDCnGp^^@s>twO(qK;uTfOiS4+HE)Ma(e1WlQ3&uy z5BU@72WF+)rq9mJGR>~~*)JWAK2FNO6zlR}YIt1cWhSOHkmM7A3lA>4I;*ZLo8jPh z{$bE=&N-IFplwGxA2e|n<^9s#erHqW<z;2nO@Ge`2h`0x%N;Cl@qW+ec{QI-US94$ zy~ypCmnU~@#-AS_|NlH+?-jXXM^T0p$gSF-dZnh|-G*vCeV_A(u7=02y_;})*T#yE zNxx-sZ*N<>rgh#$b*`h|SU_FJO)RJSc5PEkJ-vt@lv^E)AGaZ@5YWOIP{b6U6Wcb+ zbgvS>loe*g<S8!r+Z?qcuR#-(+?H}|XpP*yN5|@Y`pUkRqS+iW76l1MyF@pqot<S@ z`|He1<McB#7XGy;dvoL9ywqH#IKj<c27kWY&j0@A=I68K_iO(D{Vw`(RaRa}UC0tQ z4u=I+EFC*m+?sKx|DTL)l}TmtyZig&tINMFR=*o(8mMtq^3ewt&^D(9Zzg2(PQwvB z8h#C?=c~@y%+4{*t~x4jXab4>c+vuA^}9|DXHU<HF<5B90=gk~o5Aa8(_Nqc%~=*7 zD8?kv;INw$=AbN=jvX1_J-YwS5>Vh;n$;}*&w+u7mvf5j{Iv%+rCw}jV0q=a0IkqW z1y#l8f2PYvot+hTvz@yZ6jUfd=@2fE@OhKnn#lnm@8~jaGkD$g-Szq0oLuw6QlNtP zn$U|sD?EAy8XQbH1qv_Tx+t2xRmnlb%e38ePZI-+l#qsXSadV4c>LuC4gn`_P(1Fl z4V!|c;AUks)7ReN)Fj2CaKVl#C-Iu-`|fkrH}~nar-Gb&Rv6}hsUQdZ+0oS+C8)r) z^c1tyK1WChY+Q>o1kQq*#Pf<T&I#MR?D`pI*GQ0&s3Gu`b3<k1xkDV&L8lS;&8UyP zD6q|7^*`;!pXJJ2uOIc~a9FU7#mZhQNSQ?;pq9xc=E}FF4u`vi6}XoEa+Z{H0=Yp% z{)>=r_68iKyu)Xfh|g=D_gvXJ%XIHEc~u?MGyrnWD*p!`kIR>5Gktvc|L^_(ymB@c zTb?#?>si$OsaP|u^x5k5`+mL6ub1vpZ|ae;F4I}<vG&~idwXvmy1A#ac<n6z<l8O@ z|Ni`382^&drs_+^Y^|(?H$5k-vCbD%m>`gm$bMJ^6q(b66V`y1txf<9i%#R;De;Dv z$z@>*uhg7&29{lY4mT5Tn&I@sYK{%hBF|T@1f`|ba!PNoc_QKQv0mQm4pZXIGA=B* zFfC}OmX{tkYcuG?gts>~E>7HQ8u;V>|G)Pg+zx?i%E@h)&ukO=G5`P1`4`rE*>2AL zs&#)y+u{etOe{i7KWp1ogM#MQbcSS8kn3xhTw=bw*YJHi6_fz~6&wuZa9Hq~V~T8Y zE;FtYe#<n5?0H*f&E2%@`mN*a*&y>k#W>vUja|Z^vuC<>YIpoS-SvFc61C|ocbpSn zxn0dl_l&-E(UTL-{I*|itp6`p^WmV<$!62Wn8Rsh$#paHCbKQ=;-9_adLol)O+_YX z4~r{{6|~E-6f~W)s8Kfjwqt|F6g}D91=36cC)5MV4s5x03P)YErI{gno~^xms_%MP zem*nIqC!-?;P2P#;*nooMAt=z72RAHySpnSN`9``v+1><rqyZR*=B3)Br;bjUs(Dx zRccC(yjxqt>l-ql1r94j7~L{KN&hIPKw;oYMwxUg=LU@_kDOU%2{brd7u2wxaElFB zF_t0Ec+IA|XxXV*alhpxb<kV$3@loHptR>Y&HC4b_-RvPw&ma7r(}A~YkBL>)N@zv z|Nr+rYT}ZO(;TKho1Pi4>c@u8YFV{}YEy6<b(P?Y4--5<OWpYe6do<gQnviJrIR60 z!`2|~A`6Fu!hDCDA1_B~M~l^RI4qdQG7DuaUEx9=)0)a}XKJRJ?k%&|xq&`;#K;jc zr$LOpOQ&SYS$%I`J!yl40}GwoyF$XvWv7dLd%1l6x0wybu62>~J-;~|)H|zxc|pj> zMB(pNJ`338+-5N_a(ppp<m2xIHHE+MFe>R){kZCIxx?w@%!yrX4h&2`Sx)i&xE6JD z(+g(?rmrd&&g@7;>?dSsJO?U!R;RCB^Ro1r;X*M`@S~(ZhpC(~Wj9k<ubX>4oxW6U zdThZ#R`)&`&4}2$S7L%Bex{bbX2{LTpZ;umXItAct^PSbt|c<%Ryi1OGjcdAP=%+q zWKhj;GN5PTD^SgF{FufpW=4)D!W!0pqOx%n%vPQarsvnq-o0tr^^@!^yHN53xMB)b z`|#s&zj(||jd`Fr{r30!eepG`+p?ZazxrWW`GS*oXU8vFxbl>;`o7W`4(xJbt3dPf z7t)zz<%Cx9F$uiz1ZCDrfn^D$90IMECNCE5ZDL^g#5qN_W$jj6)zw^3b0+*uLgeMw ze-=CTq68MG!QZGQd}Bvp@<G$yrk|;iCsU)QXhcj5wXXg3#r%GavbuTBjSXpMrT%`u zu+TYdVg9F?#_9Y1e!bss|1aW*lV+`E{r9`&zrVi^=Vg6+x?Swq^tbo+-Y(nu^73-= z%;f0OK3VIs2L~7#1NF1AT@U`axY&LFk4N045`Uw2m#zIEXJ2O%^LF!x!~FIy&b|5v z>L~nl^ZWBX-uY~e^~tM~)&02^%wzp~duMTa;iR8GQ?okcZk)IOU-SCf+D&(sthWFA zWwMO-50m=EU$5NG>xn65a+MP<0fqV(@y1#F7fs}u1Tqvst8uecmfut36llG4sE{F8 z0Mv5Uu&%pxZ7Pl?#tVI>HI-pya;Im-)!T|(0i_IB(-j<z0xNVHKcBbX|0Bq4;-5`d zo^0~g+qr~)rR^y-Y4f}otzDpjgY|npomv^Z{L@@e0D%wqsQdf<T6DhZsZ*CPo=hk^ zF+p+vpHJRJE7$B>9n0yvIsLqxT}_3-JdWpc%kTaDet&=M@3Q6Z`MjS_-~0dHZ_pys zOD2E6zuW!(-lo)Uzg3z3wqLK@*qFSQ|IpIOLDe4)vO8NntpE3U{`2|ub`cYvpOY_N zaYlLd|8KYRpKGj8N-b68`u*+g@5l20CH~AbN<FoD{XVI8-6rAd<KFr#mD6I>GKpL& zrXM$F)w10S_7xsv6>pJRTX5OeJoolC-K_~0n%w-hUjm%mL^Tt&b}r$wEO~Ju;q7F9 zJ5JX%8_M6``~7aW|C#1xErE;OPCne6eqL?X>+9?P|F~YS9kwQ*blZ-}Q>QOy*(j*& z7Ln~JXIZpl-Lq(qv--h;cYU9yBz*&I!@V@KSo!~l&FAfQe?DiOoL%I9e(tOZ@ixy_ zv8}ie(K1W;#7p%UP&4PkdzLIam&-LApmW7KcD(rBD9hdjYBfAnW&n*6y;BOPIpAZG z`x;k`@I{~TnvJ&U>{Q?N_44dlSW35PpyLR_Y6KT2)<tF&&HS`hO0CIKo=?uE;^))p z<}J(itOd=ePTksWey<|gV3EzH;^*fw=c`R;U3^4-uD{pRtNf*!;jdf8<2XuFIm2TL zUHyuJKmOVD^YioFT6%lG1m#Xi`&-WSu;A8~%+A}lVos|i{{8oTKYwM}!q~70{}wnl zH_6VPF3uCxx@1u+w|JXU=ZEk6|KD9U`{k1t7Z)Ga-C$}3TBveu%A^x>n)u@D|CX+v ztjaxQn__pjdioX5oP(vWuf6=Ib@9x+DSuurpKrzObuc(=R`BNbSJkJqgwwt4wEcap zzyEzK|9`{L;uKW_t-?z`C(GRWvx$+J&BM2{!*baq@BDo~(^i?52lfAXaIjfAs`}Z? z^k3VIXR)nlI~KTtlkxg@3()${08J)S$*xQ_=n~41tQE&+&R_`Ckd+e#4?(FlR#cp^ zPmZ3r{$wbqoaRLDDTaUs$^Y7&PW4^S#m{61Z$CgXSpx%$miK~IaG`X{OM9!+qS_r^ z4`&%9I)%OJI-4Bib+J#@I_dPO)m$fiQ@>6w(@a#qw^?VM#+;ev`EgnkntrBw{o!0D z<hWIR!rK3S>M~k;wO8Iv<&NT8`OdO-_Vnpl1;=_MZ}ID0k!G=6u=ebsg)FJDvUW8V zTQ3!ST0XySlVzk<(TfWU3qqTM4qOplbF(J$WM^W#X}0^O-GaA1=3ZLjxzTibyc$0! zr$^}88Q1<QnLYXG8<le_ytUH}^kx^k{aV>M$85jP+I_Fr?JnxM;r(dl{GtdIe_e?y zYHePPB`c)mCdG>}D4D#`)d2bZg*#KvB~bZ%%e|qayH4ibN~>;$K#jN6Pd0)UAj&qb zS!ncnPj13AzUQEZOaywzbp;>eHJi6J>ywSLtFBhEfcjFP`U5sV$iSiy5XrRtURCzT zqg>Mym&nXt?B1_-G<fpqDNR$R{+t@R()%svohkjw*^xi3BSl3|Zr}8~Z0gl;?ITNa z<R(aMO*uJfMniUW)~&!fF=@BsQvPq!3|^)Zx_ft|*?ygC<!p!d7B_u5y`=KvQSsZK zxy5uk8gCeDhppN0D{H0DsU|1CqM4K4w|LZE72_{@buaOq8%wJC4e2FMjIJv!m*JcG zaOw&1*pfh{2<wHex8~}Ka5hC1g8GmpmwiuN<x*d3Q2FUef+C06{xe$Q6OZ@H=UcMR z7V=V^u3Gxi^Wxg=Zc?YD7IgjS^poX43eHlA_Dp3Kg$w&ZO~>Po^H%9HE(-WnuCbtu z!(l-a%NvDAmu<cpi~9LMEn$>-O-7Co&=9ih?AM!?g>OCAZx4zWP}Ks8C~&AYo)Wrn z%;)HIofxLT6QG9B?uTvCr_`of{^s2Bd|vgt6BCsWf_nGsV|HH3`#)txrvHis!Yvc@ zr#<=9az##bV$EsY?LD&A-_F<nD?YJ6bM^YB$H#h$&A)ePuM0R9Fv-36*_oNP)!%G> zKAG(2-hO*~K7XBBlXrI4<-WADv!1@W@x(~-qF%!M`hP#q&9#1hZf>?|seakpTT8uv zmA|>Mafy|?^*Qn4ccxdib9vfL-|M@J^_J!9S=sA6x8+xVyP3YWT`&Gj=-R^t*^`1+ zhppXY_4)bv?blS)%MX4#z|78P^YMtVU+#ehMn!ic2_AE$k{J`YmpxK;@0(*$xTql0 zde4%MU5;~ZE-x`wJ^S|l{`lEtpqpay_x~*m>x-^gd^at3RY>*rOzEu;7Pbhh`{_h) z%ek<?ahq$F-;Vu`mfHJ${&hrOs%gBnyFCAl`!U&9N7h(PT5CRWe&w^7PXe#5OV8Rm z?=t9o&y`PA*08p(ov^ET&gPSez8p9D8bPCZ3$j?Uj6^Q`a5yZu4{CdF{kT8upFr!S z_sR@>pvgj&fN!x0(Sh4^ehD-<*m9z-k8)TrizVW7&TF0NrhBu>szDuYl!#^I2$|+E z`Dd!S|GYbUtIM-q|NHyCetIlhVYQj&?)1;k&aQNObVN_}^bM0OOQv{xdHtF4?9x(i zXTO<S<HPFT-rBnE?X5Z5S3m8m{XIn~WvY9>T<yC%meJK7*<M#-Zh>|ZW_5d?JNcm4 zT-EgFxn<2Kqq0ArUbFgEPWJ6>x!aabn%llh)2px8>S2Ioz_fW!f|vWXt}Zm2HfhF` zM<OC?HY6Tqdp-Nf^7(bQv^>hpm0p})V{~-RCcfm^`ulz)-QoSRA>;MN1YM4IZl@nu zzuzOg&MSa#vG0`4d@s~?z5Se&z4B*jR`;Kc%Y-UVPt)C&b@G)2-!k~wi+3;Fm~~F$ z<(Vw6ds{MtSEar3{B&Aoua*3=ZvvpXYk?IUjaL2Vx5zRHys%+Z($g~fas4>&q5!M^ zGlD_6%$4QTKE9mGxN6>znGD(UbmxOI)Kk9xd~6vCG@kh}m23LMB_{JhvlK_<Z~M&c z-yU>orT1^coo8o=>BY=gte?Kcb;?@9bBnq@AD#00%ir(!(`V`~U9U4+P}%K?b%J)$ z?me1|UxAvd2bY@ObWwb&eX~nN`}v8~zfWcaU7Njk)`@p{+cfv*9BScQS$FKqG@VEx z>zQ)`?H1(zyRtHP?XuJJr7Q{_+}xbLwrR4sZdA(JqtP>VN>9`PU2b>IuV_VEkEHQ2 zsXgECRR^1v2AyI`nyPwRdaelQYS9aU_MX03+@TqugA=pPew=u2Zuvb;|0Y&-i(8k< ztKY7T-hS?yMnhrN@~tmt*;IZ?sWy$j#*q5jX`ON7pLK`8wd7y#1?L_c=e9Gj`~nU0 z|F!;feM#A(fM2f}m&b89Ea>K#QmcGp8Lp=53OmMYHql0pQ+?O}ik0OD)f4a%3tX*E zRlV^1k5R7PwGDx{lr`0RkLvcUiP(5Zs;Aty=$BPVrQWR*Cv!hP`E>Nr6utD#Q~o`l zU!N!2mtB6W^v5M{{hLbMVmceF^ww%Fkv)1c)$(_-D%;$Z|4!*k8>MvYR^GN3RE(J9 z?fH1@%DqLCccqx_|MTf|g8Mh=ya%FFgdN#plNNaA7Jmu(dYIq-O;5|=zrVjn-+z>| zb-_%Ik9pY--PE~?@~^B2JeX$ZELwQaDm$p)XX>W_JC)L<|HAop^jOZ`DS5w--|mOP zRX>ZDv+fu$8i-7BsEd5T$+0b20n~?HAqDM|{{@Z4tlBGBbxa-<cng<-0uMB<@e}vB zMhQ3LHJjfy?^Au(M_XCef%^F1q8=P@p!BNc?J!$jG=5frb)0DCl{-6&xo^$4C|qQ^ zBj@I(HrB1aQ|}(q@slt9nRI!X@9FK4Uh&t~9Om7e6Y}-l-QBr@xyq@3J$*&0p3O|p z5j?3?3Mv*1rh$X+_mj!~N%s#)=2k6@7K>81ES1(-zU+we?9I<6h@Jd2nYmkBpYN+z z!OP^nc{0{DKMD$NbH3m6xzBWJ*DcY?CllRsCR!-xe13NJmY(nVbF=gJ?aaEW6@Eu{ zSMA57Y`y(!9tJD?*1K8!<;BH?r#V~qX7gUYFO>iG^4cp`Vt1GA3`>#Sb@!%@`IB9O zCtj(5My(VASeZ(tCui!jC<K^-hM*tDUNE*3XbsxRE>o|-(AXucVg2v+Gh8F+FZ7t! zR8E`qchj=#v3I5Ou_eNQELSD_{XR2IZ%sJ8bxVSt=N!$lFE1`C?YmokzjmA3^qAz& zN2iDszqqilX7<sqcjY3C=IvJx30lwm;#)>>rf>B2ywcxuS1uJ+^Wm6jXPH~LENJq) zr1Vd^=2yzOT#fp53bvkmt31u5;Nl|JZ(`aXPnq3`_03&*)jwtX%Ncnsxw{uX-*kS? z*6MdVkMG(J>S+nczdCnIY2D>xzbw=J=G)c2-Fp35^yZ(btn=NsKfb{#9#in@%E}|X zTeGj<dd0=G-EPH?S*F=VQcv}6zMAmb=RheB_)yr8E{D0t(?L_1A?*x;;!~?kOBNfu zEDU*GcuW|QcV$21;w&Iblo_wtNS|wry!`rDUoXbue1^tTLK!>65=CQ}Cgz5C7zZ*< zvDM${F>j*L{x{1!%J!?gcF@_qM|Apvl*`jo_9vc;D*P*~?#Cl#qOm1})8bZ|xBBP* zvi5Z~H#Q_LoKk#psVS?ecE;ni5>7S8W^$Du&)T*7Wzm{7X-ei-`b9x=DmVIUH&=bl zy1nb;<Kx<e=e1rGoS9+h=zio*SW=$;2H)9cHy=fADh}N}PxG*$hWNti8mIS8RCZ_k z&c-7VpmH`~?vb*2O+QncG#}ru`FwU)>1)t2%+*!D-)_IXT&+-fTiX1IO>(PBA0O-G ze!EE)w0hy;o|fzJ^|6+DKkvqEvH$lYIa+J0GuuDE4XhKf25~Pqh#gD1K|%c1@t8a` zh+p9eVo>idIQ`I?m!<jBj}?P@C7^r_um2rVIp5sdYh9|S^mWPUQ=GlC>}snngmd+r zo$Fb$%x|ugNKor}`~Nl(lM{HCy=tHAJzZ}rYwW$Qv*Oy5o`uESU#bu(-*wt7*IidD z>9Q!N%$x^4mO7oAcF)#5uYdafH|>uHQ=^Wq4SuxnsigXX)TNG=3hzM6BEtM4H@taO z`o-?Y1LklW8LR*9y;7;)9l5jo3Z6Xf*|1=J?BTF=F_x8|o`6m_t(dKU<XTSM%<Rk+ z8e(rYCwSld{Bz!u7~i)OHu76-E_{4U#yVz|XyX;RL!Kc2i7E!HW}JD<iGeBBv7w{8 zYmdUJ_iTY0u^(L?tFR~pq%x(pSKXe5YxL+YXtu>bKFxRiZENFypb{3nL<DW$Oypd& z@WH2~Np6|U%HaXOwU54y-JI4Nyt!R(@$!maou3}(#I9R#wpDY|@8FpGmN~T=dbhX8 zUew44wmuSBvT~F0(+w)Fckbp?)<qsvaoo;0)BD+`oq<fhPpZ$~@$FXhvkEKU@)^Mw zE`rutYD@E-HuB-x6;$XJv1pn4>WX--SsP7H2bAx8xU6VZ?C(vWtC9{bW6j>l+PcXp ztDPrg?E=PCYYM+qPi=TB0X~{&mD_^w<8ilG897R<8I|-_ecQKUioMIilHbgI{{<Qx zTsfx5-d=kf*C1b2v%}fzHj$TK_vZOvEc<3)nyPvsrS9gQ%FjXd7mGcev;H+OGWW^Z z&RVr*GB_|!w(&~qM2BB^cF5$+{7KSBzs@~;t^Ls^-`kyvPi{nR%?cGe`D9P=`9#l> zm}$YzcD!HbI%O^0csuX4)!P8Ek||G3ik_S}@UV$n??PSN!z`s6;LxeoIDI{~Ja)qy zE~~1-V_^nQXWf~Q7<6H3*W39vm7i{9ujhUDltVne=HrEh&TE}=&OV#oD`&gw1Yh<e z<Fqp~60UvPc%a!Sa$&-K0liPBPi=ae`1ivd(BcPy6$*`Va&?)YStMqbEV;tKgWKKq z?{*RK;<veO0-A~EYuvPW*VjF`=4kW<S3I1ho?W%~N@FI*l5B?sn^@F*XNCMxx127% zc*@4)<9$oT>}!8*F^Z2_4LU3M>Dnc)cK6JC^imykCc)M-b1X04+P>4kwWz-9wRQW` z!(Xq**GK=XcaoCn%RTj`TYsNM2I#Qsvmwi_etdk~`CvrBvY^UcyKheLcdlJNAu99D zs!MbA_I|l^!D@E<j{5)q3gQlJ$-MmN(YI+gO;$u)o@ZJ3=m=>1rSRhx+nX1=jkh&v zUVqZYGr4Kql+EjJuT@w5k=A;!nf>*p#r<}_u0`kP-rMuDUA}I@!P?*7B4yKkxy<&j zNj%T#dzvZx{OWt3&snd}S-=0;tZchK9}Wiu?pwfkY8&6qb1a{BbAjiSzv#o8(_&1f zJv(094|g`rR_9t8Ef?{pg@I*Phr><A`(~gePuP|@IJ_5JaS|N3*Gn@6(N`CO0(aI) z{nP%>3x5ZxvOGICclIyt1*c!kw5zRJ6;*TT*|`;5(_@m06T6=L6S-c#_VTuXjrpnP zEjY6LZpfVrUG6<u-T&Oi_dZLPRqfPS-c}Ri7q;d-&$6&tuQq!N#q2CfUG(hS>cGN} zg^!P^#(Mt`&Aa7q|5xPok@PvM*Xj1ndmVCZR<cpnl@&_6n=_T|pH{MNpZoXf>hN~& z&IRnbA0Hi!y#3$w%QZXYpXb-)&Z-r2Qp=q4dt2^pv*=Y%jee%CGrsb3!_&Ro&7jgb z$^+IS-qr2ktE3lYap-%G=AwXIuLF-pL(2TxVBAgO7okkHd!C(~6}P@D3Y6(l+rt7Y zbQ+`c_ip{+U!<qKJaOHrHIbWR4sX4Eab4{0M^d1z_okrLI9o5z)YX=q9jC&5dwc$N zE;ILIPX!{kDu`b%*L1qo`1;Mw%?JJNvrN}`QuJ|4^>kMi(BbuwqL#rcSH``|Gkfwl z=h&}v30X^5^2ys&Trl%3cg)(gv+TNADCkJ1BS+Q!=471S#V7DuJw0aMyw~~bmg@aK zed`bCC=)(eDH)9&);HRCrJV#h&+W^;_~GGU)@xy}p3Jo_e-<%$(^>t=&!)%Mz0^6< zeropRxXgoV_Ff0AjJD8EJUL0V@T1tgiwvo&o!1#Riha}e0iCUpVF^!nZcMf^g%>{w z?qlZ>YQ5CUuW9EDTHUbV&Fn+C(_Oysi;brK*S=Kk-hIgmRK<WI3AqXdO~4$jpH$50 z!u$DjOjiJt<I0FrrwXT9oxY{7nY~>tI$(C_&DsTr^t>IHSL}-jTC!u`rju7D6hu!o zU#_w;Air-z+SytC|9|Hn?~@I?ywr5(7sKtL(^kn@6eNTN%{HDo>($d4=69-3FV(y` zXYmqIP{3~6>lkJ)X`JTMu=01srza<Ce}8K=7P?pUdhLRI*5{!I=f01bbfsH=Uq-G~ zmEQl;Szg;}-Ri_n-m3yNo-ePdwUt^IFKbnD;_3^&aPa9i7fU)~?k(CpO(yT=rlYrN zemrb%zIAD-_uHk_@AsO=oD%GlvHbL~U0zML{^zHs%l+n_3fwl`!~xP8EaL(1ObJyE zc>ZxFXouBZ?*+#}6;0NPCQwE5{&DAXfd&V0K@IB%w{dsnm>cCHKBxGu=aZdk=7c%{ z0T~-z`!n^|M*o|Jg}0ac&3#qJ-czomy-9!4=`}k)9+OTz9<^<!eWBfyt3FSHe&x+y zIny}(7~5UR>Bgpshgeo$Fj#wXYk0!uq8)QqhL}$0GfO!!!Q#FC4)Nt&$86>vyyDgD zsJ>&3>e85-Ycx`gv>Z>0dh*@%OF6akbf#<2lRG<$&Dy;s?ygJkn|JnqSM3bj>TPcy z-b&NEwlV$AxpJ-Sx4U%?{h2*!M(N)RQQjgto}tU7r|%M;QyRpXx-D>Z*jldeSoyxm zR?W*q-|c#>mtAmvp6$1+KA*aoPs55Wm(MTY1g+E9FTCQXfbVC}dOfuZ%!1;7|B0<w z!0fWH<ZE!}X94gu&Tp{|YjI6v2FNqT?gC}}+FcqLi*`YyJO|#_ec%1a{^U-UMQy*Q zt4<TwjS?}Bzg@AjYHrlwGg7IXy%L6pqWXd_c|GkuIX~#v>hSg3wq~nuZQE_+JImyx zSRtRePj=Vl4=K8(hjr4mw6A90*-?0K{vX{NG0CB;w*E}b(*`x3<4doG9yGrzem(lo z!e387m&lu_)_gd~{xECRgIhw&msnO69-C(RdP;H7!%0Ew_)jEe-+wyY^bBk9%hGdE zL5ol8PX?_s&lR4tW=_CXr>v9qrEeY|?`M~_Eq89``}_Xr|NsBjtbOV<5!9KkRsC*y zhLI<A>xb;qO4nyPyb$F8<xVYl5n9#kFx@RC<U{X;_j-b@m!$hu);2(@nu&O-n!6k& z7eQ4`>FYUL#F;=Q!t*<5SUHtR+B{F^$Lg5-pH2sDUbN-yM6;qzUw82+3!XmJ<>hsD zrt$G0U*GpyQ}xw0Fa2_Up6zR+*;`&u&Yd{<e(m?z*9CLtJ~x`0b1TrG^uq(kY?q=e zrFq7twZFb39OT-z*QgY<UuCu9wYgFz8534--}*Ckm9|Qp=H;_jMbnkp?yKzibV@rc zK4Ge2s_2?EEb9(7vq%5E9$$Y~%cJZ|P`-<X(EB%LH9rcj3W=;SsQ*_JU8)rQ`&CF@ z{?;ph4jx%%)x2x3@s7H`Rnd!|SnT)lkH1z2IT$5vkMeA9R?!c8tH1B^I=nDohgj;@ zV*x50QnS{mpD<Myuwr8Z4I6U_!4l~_#S5;2;-WR;Uv_)DEc|k2vWK$*Xf0qs*`MvW z6RAIwXgnyF&$~MbV@)pu%PJqx5*B?((5A$2dKD_2={3K%V()~UtLN?i?_pjlV!V9v zi`_B0Q)gKgFEgEb!mM8FTzgjBebrkhc$dxqEnhtM>E-3+%Y9}(nsx2@mSvHf(=3Av zZ{OV(w%D!Ls`As4&tC0?&p_jnuNwaUzW=}P{al%j%3bd!&X<$0-kf-t?fSYW2ByUq z#QLkJe_CGl?oMW@P~<GVO0QYR`(%q}E&X&l<lEzZ`?7hb-&|W8z4j(EJKvqs>#=^i zmRo+NY9*OZo!m6*|J&{Nqk<=$pJTbX;^U)`?2q?SKE{SQs<!T|O8xfX;o<9X)oV?) zP3M+uJw9`4(Cv-M?T|xBVxM1Jc$ZgKFX?<n#-?)$*XK06m4-FppE;YHZD(Mq>Tx)# ztheeL7r1Esa>Ll87!v5;Toa<hag6|<W6|0HDjDWltAIw@kP|ZlBS*+g@D$*OaLefq zOO^<!z7f&cUG?>qMAPYwUEik#310nlr}#Xm@i#kv-_32gv$yFM-&XW=PoMHxsQS{o zKSpn3O^cp*T-USwb41v`=F>^__}Z^iC-uZty;PlBXytY8l3U=phfSHjS}!;<4zIVZ z{uYsa>wxyUFRxawm$NEa5%jq!ZIAS<KU21XP9$p;kE?jl$i8Nx3*YSetv360&P91G z5Iq^}eOEl^&ySC%r|Djf4OlmG*Zi{d;&R7!?`b-mCQSh!+*tlzk^PnO=hJEZ`Y#vV z-|zdKSH6FawBGsbqg|qYj_tQxeEJWF$JZ=e&2RT3VU57K41e3LQRR`A8J+Dbf2MZ+ za}|$WvgBO--`DX~Ye08DvM4(i_-AB%y0taC*-v1K;jV;(O}f$BI(~k7dOCJd%%W{s zS63x0S-4=Kri6Qg!(qN=aPFv6IiSG{T3PX(BgEj*BKhM#Plfr4c)ho++QPvk@WP5I z^}gV?MqGU@g@B2mhQ^C7^b!XYNpl*e>397xxb9Oo^G$ZX{&B~ZKA_d-Ypd?>t2JAG z^5t?lulScC*E}ZNo*TccYm5Gkso`-mUqxK=%*`u(a$@3x6oIbgrkbtCC9m_Pmfbf= zwc(XEJM&VdT`%_a&Gh-cq22yk(OE}21RvI%{(Sm~;=KcYwxE-_7z6tRzOQ?bHSIwF z%j2W@E*guL?BAGtJT3Iex%-93Wy`|#r^hd=F27rPeW#LTd+>5UUe9_*Uw+pUe@lL* z9-Y75`u(2Zb1i08iuariuFO;2^W#zXIgfJ-*_P^9&sneDIOpCWRZyGiuit`s%EoKk z7+798EKm{@|7&+H`~u^mfL9+FE`gR(YI97fb-&?;YaF=2!D)d!sGGW27_;f1a6y!1 z%irLM^3R}a%9Lgw4%)E8ES&48uw%6K$u+v`M2w@mFPFEUx_r`0Z?f<1=Ab$JsoK6z zHvRI{d@A<$seXN7U#cvhyq%5q?DZj0mzQ`>ju9<>er~I7)UJ}1!5)0EK~se~j`c`R zUX|&8>h0s>{r8Jb>pomkajVBHbnV;cZ+eSGBkyl|a(8z*`|nPH>ytvmp3kp*CK+z? zyx`ZDmyyf7?s8<iY*$!*?8zjdUt5A_pXDh2nQHXovcLUNf3H<fpPa0HwQ~8L(BC<? z{ut#NF1zCvy<1y?Z|mLLJBy#^yiTe-+{Sx!^VMf(XNyOlu$;V0J+^><VH-<P758*d zUjJg<D8+Z$1ayy?Xk%T^ju+nr_cieev<9tS-VYinxvC!U%{MVR1V{0~z%<RF9Td2m zKTO0N+!R=0(fE4({(UF-i@jJjXX>AN8+0ykVv}R~@jh9@E>><amR1*w+FxIi`)$Rt zcNw3z{eEYrae7Q-b;Wtx?=4D;-TU)q=m&@0zxMT_yZlYxl}>vd1JwGAYKv+LZia$x zyZSbF&E1tbM$@w-Eeam23|_uwmQj_{TgQ&e`=%tBB_Hcq@PK9KTA%qT^4h!IZ~XZ9 z`0lf?b=6aDt<frsX1jYWmRnqJi*A<2`uP2IFD@)x$NBC<m-f0FTQY<DG|QDgO`R)y zce?ug8l!W&F1h7+ar%_K4t84-+VS~xO0Z}5&;A2{zu*6VxBR~9R_~w7X6J1>JLT_& z`kRlAb{}5)MDqeT;fGtiWSJVfuV!a<__c={laD{?-28xVYwv@3w$+<-Qs!P?@Z?QF zL@`rjY%6$a_$r45(6T(sX~AJZ@lc6-tDi9kYM54D%K)t{h-EpoPbcR!u4yF)1+@!} zpi&~~4QTf!D0-25cncn})P3K5KlDSpW$M8-5gU^}Jvn(jrugjC|9_YB&X`yKuX5?1 z4B-{4ey;huXNtB;`_|WCkKSJmkFUL*yZ!7O%i`11bS-D5zRm8qR1dy}U|l_^F#oph z)GF_D`S<tLo||LoZ~u3T(d;k&dEJ|frf=#B`L^fMj<mD0mfn3aY4?I99(OxHTW3zC z*i?K-NWT;I>H4|3*86`xlm7c1bWoQ>_xt{`A0HlGkE_mob7SM;y1(V0&zis9w<c<< zmg)M>ll|>3vSpn*QT_k#_tN#!X2HiwcZ16Er^{AO*Lv(z9<$F>M?za=*^}q>@|U&0 z&N+28_4Kr-B|C5Q*)Dcm`RK6PyV4mAZ{=W>=3!^0tDr963wI`2&{AxLc-Hz3r<cd= z{I7zF*iW2OYJDScu5VMA;JUy!d)}Itsf^EUFa{hzn>05RK0a3U&&++b;)O(}Q?s@( zJFWbC(dtcBedzLsCzPDp8aTd$=Pv>8#d75^2mp;Iu8?jtbBz&^EPB1nS;XtEoZc;N zMvfBM#!dQaw-4YNmJ~Rle&G-((mw?ji(<4#85&;+gZ4t%*3Vvi^?(1~-@kje?BZwp zC$8{2YyE^{x4PpBHh$v`Qf<lk%I3;Zxwz|U+?GvK?<t79+8gPiENUIJSfe)jSg!fh zsHS5r3v^qy$9YWCuut%iKC;b3R!G4`z=%`DS9pr7!huO|`1js74|D6ExAC~~w=<tV zZx(;@@rTWG%jcixyuW_y>(6Hb7Ci^r<?AHACi(yWcV6RpJ!pdCZ%e`7uh)-D7Pm_} zsJ`zlxuRa=nBcx(lK0&u90DtP8e)7K7#gd%d<u@crq(I>6eyJ~ykflO%q)h+OPoEk ze@+&b`5yO{Q((pN1Bsv9KE+*!UIxy{w3tKY(|w!2v+rq~xFw+A(7*t_=^Dg1Dn4WO z?A6cTKRYw)KqAYoyLm>t{O8$JzP+_oQ8sQ*#m5&H7ypg6`?j&4H{X8AYOZ?ie`mM( zKWRG9=g=y?XQiM*03+khSqzL!rD7IO`ntLPh|KsQ^2TXpvBOMjMy93065p3Q6g54* zx7wDG>8pr^&pnTOuR+SeZc8X>Wd1XIdHrSSx#8YSU?Gr`z>EbVOl!kd&)YxGIGc%G zY)8q<OB<7q|6;7WTYCNP3wQfltG8>Y?*4qv`giYR(5X1LR~P2m_q$9{De_HlU$9Lu z@evEh6eovuY7Pwyjm&R$Xt=hWub5D_kVBP;g=30e!kzgdOJ^@&6jlh(V6<Ewu>NoY z2RLLJPjUDB$e;Jmcl{^rgDjk2F<59h*s{tbn!S7fY>T=86X-T&qhuM&q9@k(f1X=# zM!){&Y5%%UlTS`7oN#mZ`+e3oHa(l~qU5EuQ*DECz~>zXwM;BrdJ5sf3Jwhi`VMqh z>v7GyS}Zv)R->tdfssj7RO0(`H_zpnH&{4CTpZ46p6E8<fdt8dFec}JXD{!6c{NLQ zh7QazkT_hiutE9EvA<vEd}E2L`FQkT%*TuUbtdQ3K!=`h-~ab*{m<$3KPTJ&oP5v> zbUXBmr7SXWW;^_9HYrbt(%Pru(BQC;<w+LE9uF>_n}vZZ-o#Egc%yYvjLkYu0fhjo z#=`npQ}UYFe839lIPK+YR)nOVEY%6W%>Dl_3tzoGe-k*y5K*^{sn0<A`}N{m!W@n4 zauo@8mVDe^|9krjHddK9vv*Fb{C^+3`be0Gg+s)Bf!)m;KAZvy2D==xj=L64Dl2qL z5<m6gv?nM%h=e8Fk=JgW+tDbf5WvM~xm;xZNd-upG;(pj`7`_Zv14vAAr-Thxxp=m zGG1_79Ll+K|3ap}0t@JP3;sp5`se0Y7Qek^ny1OwKK<?PqE~kmwno)>HZU|gabB^s zpKZ;^#L~vS!szx__Gza!Jv@D^925jfjj^Bi@Pk+ajY3O<omC;;holzN$k15OpnQhw zQ@8zLjkyPoc8mZ2_x}IC6BCuIkA5w^9{c^~`MPht=Jz!2UfCqM;qd8iQI>Z6jX7cq zmkTI3JV;;?G6k8&BOZ`??f=h3n{s{xeT)UC)dlk(#tJAnENEa_>b;812kJqzYz&Hl z0F%bD-LVJaTO@@VgE(S#7CrrXJ>I_l-yhJz(XCrW|NlKCzVE}<^|fnnzm3~hvr{Da zMCyczWnI%adzS|=?bPw+S9NGO(81K|HG|E$fuZpb*Ofh|d{QG5!<RJ*DmXkaU{d}! z)zO%Vh2x1*!Hhr8;y~#Ji#xy}q_|<rmMN##@3NV~(0Gf><<`VHP9DJ(xfwGo7@3v| zNKD#S(+x_(K}@D=jDjPlMKOa@<5U)}kK$s@Dh>;_F@>Jm{>%xtZzoK5*nD%%+x$B| za~K+XSd|_=nflshyAG4&de44khlT?YOsOZA9s@=1BaSOeK>jG4HfN%Mf<uBAQ}W-V zj>$|c94R^mORp@C#_f;BU7RIWb9?HqJ}qS7xDucc<a>A1>Ys8B3)&VYo?_vc;_-kX z^Q<l?@CBGe*BJ#zrnL$yI4n?OQvH?Py--LYz`1eOlBCNj;2;4h!(hzVcHqz<C*JzI zX{SK$5m=da>!#0tQGpW`kySE`Of1KQRyfQuWd#MgM!-fb<Eg2Z>s0&I92y+HA$em$ zZP*tVJl<HvwPyYL^gp-t`js6PgfUG_SvAZ4Z1yImtzF!cRUH<TFik#NQKjtA;9$$D z6_C1Y)0%nS*Vk|gtk~)B^53VV11ua@ycRsuy!8c=`9KL3rDO!fq?-1HmnB(WUz<%< zbx<&F^w6JtHoR)}28XoMmzp^Q6bcv`xt7NVgX}oQq`DRq=O3*;T7V0I2MqPK1>B5G zEJnf_e%nlh@OXraLq|vFh}+6Db+?~7vT$5+Q4l(P=S~dkq$Qdu$^nyi82B==cxg@W zRr?~s#KLjKeSu48n%3!8n|01kVPIt1%{ArAdV@CK1_xi3GT#_GJn^DXkkGhw>(*I+ z)}1xs6gc6dAauHM@+9eOjR`kTeNkXy;gE4y(3W{~3a5a=ghq#htIvc?OWnX`)5O5Y zbX45pK)n1Nrv`?`Gb~;6U3({h!UtQ4p#Tc{w`JCw<0~o!7@4MucT5S|Ws-5=Cs&A_ zhR+0s#vtw|vlVUUGB7e-71KzVI`h<~EPcz(kmSAeUw6+zVTFLo#*IR=j$ut)(9G#3 zIAiwgZr+fo|6^x!3W40KGTB3Oaf)0n#}`(kh?#PZph}Ya%jButprD^I$-!~enUHC| zFaN%p#=yw*RMg@_ywV+y28Ko+mQ%B1d*|Ts&j}`OZf?mx+fFNU2&~xSpfXwMxmB|E zGKZ&+53z6xXl!*bG+rJksNk@miper;=1QH__lk^^nOHb{TozoZpJ-UY#G<8dFwtc> zsCvLiW3Vu6W?H>^_0<2RAm12-HhL&G?>wr`@=bKct4&ud8JSr4G&kf6T?UsOY8n#? zLE*-^&pH-jZTp|qEw@2cPH5w+)L3IBj4TNaH4Xudz5~C0{R*kSy|kE#MN3D3bBV>x zGajc@10L=$FlA!VQV3YrleL9~LtsUl0~;uvt=brJ29yGVMOPe%PxonLXyoGdF=c#( zC%_sUR$pE9Vf}5NUWP_ZPM22`>^Ws361+|aZD-*Sn9*^daq?_wP_BD0fhl;EQE+70 ziSLifK(PdOB~HdGg$plB)HaEStAjF1LUr|SzMU6kma7L$_Amrz6N9~PmZyWvl5kCE z0=eIf@p>EXxCMtNED96_s<%&>F}39X=0xEWaSE4QRd`QMK9I<=DSrDrP)fPT$~XD` z9dD4H$wC$>peXR%%kdXyl%k~H0C`5$w8i<B*Csj4Wfhrz_4)HdA?Z=i6^zQ6Si1BL zuClBs20PpP0Rza{$AqrUAkx{MjH+oz@4wAyVfiE)5Hsz}%ys<A6W)7$D`8^c;1Rd* zsVmk8m2N)H2}eL>?d1d4)j@p1&Mp-WNHVM0yz#xzip>p=HtqWBGUHXvYZ<R+ehm&E zS(nXXDD?w{1-qC;Q0lTxZw{==!&mqqrO5*e9Nt{d+J5`!{qNZ=EF3AC0-1`F4ksM@ zz}eW$nX<FW7F3Tu=91Cbyc5J?*(B%@I&-DY>9)JUu((1ATO^|)VYXtS!|JP2<;v^6 zv2cWhDhN68US6Q-AG%=G!K64Aju7XBRh$9OK}Hw|HqO=B+}q3h-(Eua;}uTg0*0kb zG$1Lgm-kYd<AVuIU8l>=PQY94Vz>{MzC+?3Tv-|1zQ(5z)Uy!lPzm_ylHLSz7)~wN zqRl{K!;jzg+S=N$JMGV=ZMOa5zx}rCzKM2HJZ~4s_IubA*s^{2y-|m+@3J}zhfj1u zY3bJMuX+2k@2i5!EWsaw|1O_1_@z#gouE#L4r^LkT3OcCNukMqv)0#oAMV;*X&1TV zn!elX@I^;WHivxGVVWu)5fPygSf}B)%t(mosc6T9{sZf4ii{mWsT~#$*gS>qnvl>1 z7c*RBZ~6&FuD;sEwaIUJ@V(e~?9!D!mTGdB`<b@Py|g)D<tu4(eWuG|Gv>}+n<!-& z@u^U}aTE6u|MMI_Gt))?f_f^D6hfrU2OhGP@hL|~M|TUYdi(b64S{>Fzn<E+w)WOz z{zVO3>m0au$sRtupW9YoMYDrQj-R#DSN{fweN3}w&n`WY_RIs6JxGYnMkB5>=g;fw z>$``BOmQ#WeYfWO{P6cL9i=uLls@4YdrUOx42zLKL~Ly6@u<Bl8E!023QpEcHq9oF z1WB+3lEw|X9QM!B@w@e^#A@5VbbWz0*2m|#9*talQR3;^Oy>oBOvS~;lY+iUo)qTv z2~}vaa@x%&c}50QY?I=t0G~#U_^6nep2M4?)`rblWO~*1iIx2Zhdr|@96!!_l)BPF zJ556}Gz}DD?0l-`LJ9#IjlI3SXM)<<1&NF!c!WB{D`ZW%cJ11umNjwf!&lTkV>4dl zuxCd_?MI=<q2J<Hb2EJvjEIVww9m~)e3qcbGKZD|mZI8C(`E{hXp=&G<II^epFVw> zw)thtrlh>h_D@zk+IsACZ@7%U)%~f@Ua}Yo&zL*6SL?L%vA)}!0w-J*n#`RnHkUkf zBsHE^EI;t)PtBbCt65uj-Obb6ecaYWys_f$$4if|9%owd{FM3YC{7vsx;u_(JC{iD zs}>kEa@^p!9ko<*GM-)?R_{8bF%_0wee~$juU}Pj(w07Wl<@nWc3HSia|F*um83+A zTRNLPzAWfreI&AE?b@|ntm|J2tXOj3*|TNIr;W}{kaH&`SvWK}$g(_|u_|rz&6g!w zJH_uVQPU9UR>?X$Cp)ZtOTb}EJzZVP)rCzjox)kvv;`hYIz}D7l5&dFz?(72VUFw8 zO`9%dZJiTrc9Zvm=}X;dzB=<FocK&<2erI16K}K-&rD8UtQMFvi^WStpz-C6O);Am zwUd}20&E*CDzkEP*WS&Wo)Nxtp;(N<v|t^r_F19&u~*96KshPp;N`xDSKSqw44pP@ zdwJprsTs*Yv+?QErxv-ZZoj>j?!Iegn!W({nwvStl4f7ob(OzShIQJsX;03)x!j>H z^n%-k!A;`X3>F*ss1&hrlPaEJB2~ER%C~Q2^{cmWGtJ~Ya;W>Mc=v`kg(-hb#c$lW z@#1UMOx8YjK?MOO!4knLQ-8Z<{=}LNjlM=^?l)7WmRiYHU*QySRG7BNX)|;CX6bGP z18eKuTepU`WEinAl?rqebT80$dLzvYDX$!ew&j$nfwA%CO`9&|ZGXMt=N*~T8Uo$M z(=v3f6uC~jD0BnVaR^QgJ9Z}djH*zFK)1u>V&WPVNVz5<1{51%t3wy@K52_8Zj4yB zG2?jb^IO6iO%5XabMo`A+qC%3KX8OqX-&v9QN^Q@q<Z41(2V)>^UY@8%`1O&drzr{ z0&`=;u8j@JlGC-{^-Oc%(9zYk)G=z-c_>&a&=JtpFe!p`Ka@1OE#A0o+qIV^uQt5B zBlB88pxbg<iO!pgiygd~Tm?E7%_x3;?y924*@*{CShj832J*>Nl6|5o6cHJD^WMFA z$K>*Bg*2KRblyiiQRVV<RuuqMF@b8AUw`cqa5?6%;0KeSj-ZjCg%Ag+G0xGWA@JPF zbhhtN?xXjO^IL=kJC@3E-z!X0e#U;5O9_;&Hf~f5^jG10v1ApKpn{;9pbjf%^kJkJ zB`S3}d}I|97mr>W7W#eWZ1Kj2OdEeFvvkQXck@ut+^}oct+!?E>vQj`2ADT;baC{i zEZG4XswK%YjSrblpFaJzY<J%8^Jk|YSm40o)N=Sk#m87CS7D2~KRaaXB+l8bTnG|& zzNmDig49?KNNJopRW$wnl>+vCn*8D&3py@n6g`oWZggyHZEan<cJ0IL+vS`gp$cO4 zEe8@}ezd?VS7I4uqBCaBjEs+e|FtUgZhBrE3!lCKqfnyI!A;o$KPNaCvOatE%*@<; z>G#9w47O986sA?_{D}B=w8woho?a`~h;m?LmFjg{eKn{mpey$?TO>;($25+a9CMi3 zHY*BBC~eratLojIok}bd4FzVjfs>uH(}C@zhM0qb>V_RVcI@42+iQF8mr4M8BgcG> zMIjMCCpjEsO-oPrpKEpXWyvdnCC?(*8zataT#}q9Zu5nwpV;t%xu;dAW6_MV-LdVt z&!2fD++q^+T6KnN>V2Lx7f{TcJ$p89yY*X%i}sC~97itovdWyUIKsMKlBC21Qv8O) zM2dH6>g5|R)}5cleIznXFy<3aqY;;keO*m<_Uh}euiA9^?iXR&7?8a4*dpEJHIl|4 zZ30+h0J|SQiFQ1i9=1BP>+WMV&jm}E1d~>s`Q%$NuP&kS=FOW|uZFUoQ1!Jdl_=9W z7qMt#0RNs7cS&w2-{LxR=FAG6)rap@7wdF5v_!MS<_h<9PLEB<%X@caW$;|T<qC|c z5~kuEOC`9CrlsCgKK+B#DtE&41HXP%t-rqd=ev^2>Jv6Pu*9~+#Rb0K$)cvTAvmM# z-JP91hmSwzXmQZlW3kpJ@}^5tq&l>YBR0&gge4RfZoK{W)-t~ahd3s|2En$izK&{f zs*R72_vh#3{hB!`+-T*=;^fAoM%_olmfkQFC$-=7MCn3?$*s3#zS|bhR%>kHb}?}C zcs7a4X3BvhtYTtfesit9o-sZzV)Kq?y$jREIZ1&>FU|T<bXAd9FTj#UmWF|`@#P#d z?=7qE1aMw)NvN&0J+!&a^W>D(TA&hm*REY#w_bhyHB0E|GE2wC2(yh9k5+7o@CfY{ z{7iDz|Hjna-F-K&yy^D-QrCt9EUZd4${w4~^UMQfox)F7jvaGbetBlXo)@boF>Uln zT4}K==a%BidJ@AfOGDtf($=W8UhiDZHJL<(I|524MDlJfsa>{b%N7w<m-9BCdy3C$ zP20_9HaCK8qePPDkwYu|MP_J{8g@ov5pi+bdjBW<zIWGEK^)wM?-6c2E_fnNp>JhW zZ0y}zw~Dr<>8(^--+t_M-*mb4_bgLyvd>i~wV`U>Xu+CUU2VOd_sKl(h69N#N)@sx zVcVC)KL2^{+&MY>x|-r*W53N-J`Z+mpTT6^KIN!(pLp!^(!6&hCTxKdK?#M07dNIJ zy_1$7!r~^<A<*Y=&M3b^tg#8ydYNlg`s&Wk;<^dFGxWNy>BPnC*;mo|QHy)i3Z7={ z#R{yT#B|73p$xOxuD7%DY*;vCd=w7t410Mxg>wnZvuDp1xn(9NCue7$ewoJZtt@#* zbiG<!z@B9lksnV5>0g|VX%+#I2{S?6vE`RfCaCXp7f_fm(}AUQ@x>E5y%hqWto8HK z$H&JPPto){@kv>Kv&)p4fDP<*dzvZ)SDoaN({CfSkF=I0EG(>QZ(I@kj%+5DRf+-& zWf|jEx1?=iaRZI2ya=CDy8CXHOKoAA;F7;tn-<9Z-J9V_R7(aqh$FeSM6G@F#?@Si ziDj9hK;pdAu#Y;Rks6~FOP4MUUhel+ruf?#<MS)5Z<}kf20FZ*GKn>oVU?P8K8FNo zWEywGU<T$^p&2u0zAUl&{Z9IN14APh$Cle~IetbhwV14G;Mllx=T42;QL(YTyEd;~ zyH;cQs)zg+W)%6@ER*MO6jV59<d^~)?<UQI4%3)EfBt+fWu?Q#37P^Du?kLhO!lX3 z9!G)(<*luyQ^P){FaM&$wf>R6NaEW+nitRCoNIidtZlDx_mB5}f{|zRmPP&y&m?(J zZpG9Cr%rjTzb?I3$JHAgd5!W9<5!oYZ(`w6`mkGT%m4rLA0O}k&b^~duP(lC+wcGH zssnDF+nBWb{-53c!TsHgU)X~MWJqqKGBoP2Ub}vMb)aUl7$`d=<mT$0p7S^oGcJe` zVHM2S8pW>dQ7F#H6e`pa5-?#&iUctlG1c7U(9l~QR6Aj(fW?vqq0Ko$>p`=`q(vqu z*%paIl2H2^H_)i5sBp&i+Y@Dq`~%pC?;;{6Sp!?fqp6~+IgMnQghe_|1*@iA_TFDb za?2f5<Ui3~up_5ws>Lp)0MMZP&$LW`k_S~m=J<Fz6h^A9ZuIFoaD;Wr3|~#o*Pux& z%rGS&GGThdqfMRHAH100(8@Yx#?z^*ZKs2R5ZU|01eyVF;|j5r1-d;e1r-bm8_Rav z_QovnC$TbxSlZab8nyP?k!=4Gj|PXQtV*RRbJp1Ok>e<bgiTDZU%#HZzRA#$iDj9J z0B6c3NzZ%&L4w1(Gdb6+S>v<vmCJU}ypqBtk2KBGpebG)%JEsErfOhsA3yn*_+=G` zgjGxveblB-|Kdz~I_Ch-!Y;n};%il~uH{8bMkZ6ijuatH)#f8lNgwV7dqh|;WBYB> zl{KKLG9!VGDMk~oEWtY|iPN8rncQpEu1yWd2aP;m@lp^vy`^~iKT=!RU`Mg=X&Ttu z-+%ozEA(5^CKiqq1%b|`7c*px9Cv~yiE%mslu=-9Pe|H=iX^OJn(L?D>?Pc<;IN>L zX=2>6S^G-BGgTy;RUpy$_3KxuYkOuGF*42MbeUx7(^mwZO~Yz4zDPbWh2`1v=f<lI zKPoV>WN8bmO!M;e0ZoXK(6fShlU*261a8%>Ff0TuG3W>>-eB@nkGveI$!RkC?3q>G zHXRI&v$$Oj%?#4ItP2fGd_Ka=v<G&8n&qbJ%M5FoSd7FvwixFvyEG3|9T6f4QcQ2l ztRG(z0<G?N#x${P*~GJ7NN?MKV%%UFsLgivb&St^hQ=5csorA|C%r&RWk`-ghQ?0r zEm3P@yu3k6fM#*Ke41I|beZIy5;z(UykIJ<3plF{c9jfh6<*b@Ym<lw8H^|~C}eD( z{xl-;@kJI6i$gh&B4gV@-iBl@uw6u%+9=2>6Sr(vJ453gkZY2TUF#uAA6iN=hy=MN zE;5+`?3zuTv1Ap=je#sOam&`VGc-1VJT+y>THeN3R<Zj3>8YuywjY<@%-Pod?`7HU z!^RFK61N<!<tA1<sN#9>Jvs7D=?c;(V;h|~k8Jz!Q2KPOc{1oEc$=+G@AmzEmwkO* zuW65d?Mv^IesNVVmu}3vKEpweDR9xGnC<I01!l~gd2{7eudv>)tM`7><vp!Bp}aO@ zlgHZlo@?t}x-+W~%T<YukO|WrmS4VEs=b5%vyjKswzoPx^}n~*OK01x^aI^r3$=e@ z-=|Y8^Sl+}8!h(ezdBLYbs}nQSjdE{AC?y*CPR(WrJn890WY*6)^^aGt`*0Tb8ll- zdDxV6IIJ?sNtczgt@;AGSGOqqRrE@~E7O<O)I>%wK2<6GaWVM0<vSU-ZQHhqsfOIX zeLK+a>g%su(*3NG5dy3s1*}mQ-b!4n6a}rCCBX%ZOe|^|0?(U8Qoip<{K6WvH1Y3s z&_ys`Z@;OY_{ydB=Ds8;5f_C?LG@>MD+H7^{`~p#>C>kxy1G8C$lD%0L1Xn9gC>)N zX7dTnyWXrmO8Tfzx5FH^pqaJLrq1+OWumjwAg=c7Rl(&mK{j{f&3dXQ;HkOuS*)<e zM9}={w8G_=PukAPvS>))|1-DCxLt9YMj6jk(lSn?3~SZiINtB`#cNKjytLuTryXy% z-PViWXLIUD@Z1&p(yYF-l{j32yw+7-XW`Noc<SBV-5q%9O4im#B5Rde`VD!wj;!t! z7g?_vH?3>)A-Bn(m5mss1fJqx!gPl>TjlO_zMXsr6x=JHe!P*~-)nRzME%uiH^<A% z6qqK?3OapnIt!PQKzDI&uCCvSpt-RVN(|o_JUV*xb@z0Q^CBwCNbR>b*09bx`)r5w z=B?))6hfuMx}UU3=e^LMs_fqP=hO84cgiI|sqL-yGRHy|CDX6sd$^f?f=2yx^!1O= zDshS|3_8N%F0|e>E^p7Hii<zjnULJpcF<#*>zCd%drPUQW@Ad`4bY0#pXclCvQACX zezI=&yIbEQPx?K&ck%V<y05F_|2|Q-|M{`M{?B3ge+K`4f4iOk{`Z<dshB+#AJgrB z-}JBlbvgdeBk}3_@p46{t>5qYy#N32{nonrvAax`JpGXW_nG<r&U9D%i?^4g8UE?q zXRX=j;d_$x{Va!Lpbl!`zR=ZIUzP2i9Ch`V=01l#?<!t?e3i_YvgZlut>c{>CQ`kR z^1rQn&JnycQGf53ONaUG=R~Q9>%~a)O@5Vf|JSDJ@pYB8wYH%rwtc>^qVV^X<#t~W zaqGwIF3UaPEMNQO;{JcH_y4os|GW6xo11f|z2EmcFXy^_)t8K-KNl0{hzpCRpS-td zjZW0Rhw}dtH>JkhulxP>{-0;&>*My$%CUK3wTpLMbpBq`tLM+@B+YVu_jT<f4wojc zy^irhGv+zWiQT$mhlHhp-{x0etB!KAD4+CJnC7U{79q6JKql90?}f{x4mtniIx_9$ zo^83+?+O|ZUfQr?-L8+vq$hK$X>GIn@t|4pFHhN~@W-Gn(DHv@xKEz@zEn23;@i#i z@2{Sp|M%wnFY|jfpU(#Ni1q%S|EB8V`bocUUEjAYyZK+c`Q4Js)$jLizrMKKu3!D% zXZ!!f|EKNM%iH;Mn#N7(dsE*((-Yv#T5tZMm}#<5NAjvg*RBT6+j+eDBRh05+ic~9 z%lv2+B%X{2mSPnQh!4BL`*!!Vw%YgA_r2H7ssGVlFJaUgYb}}c|I20n<-6{FKMh)& z-~9K8I%v)Q|9hb1_UGs4zxv;Ibr>J5`?h&L=xWSrQ;)j3Pft!NE}yaY|G(eO>C;s6 z{bT>X-v96Qy3HRF9a*kSUmCVXUtLuoJ#g)sHAgZ#&uMCVY?z)cu`ws<;}M~v6*reS z1=*8Uc5^(@*syI|*gD_4UnSqhElr&N>&o&V?q^rS<L`E-uJ@bt_I~B_xfblYSJP`i zr@LCe+oAjqbkW?w_s7~n+lMCqeG~Kj_36AF58DpzR{L}^eE+Yj2cI8PpRO0%#eD8q z?UA^>Z+~&fr|AfAX5A5AW!tF8RQM@GXI0tmxgWj0?cm}*Qq<-8G+?u0;qzz`T`m%n zP+PnA(C&TSwp;gl9bP1(6S}MPcJB7rokgkFPrkeAxv5a*(4?rP^MBuY{z&tr+4}we zex=)eo*A;4UB1TPX4>;z@$u8LWYTBu{c_2B|G%&6LD?dGe(kp#8<SVE{ndYLv01<F zV|V_(pJ`kEJmjyp_;F{(`v-z)*Vn~%yMM91xpT+UY0;o+euZ`SMo@Y2^Q3>>r}Fym z<txoTK0U3!-^N04zKElO(3J<jKXEn|vQC>mUHM|^?z>8BvXWP<a?sh3wpp?}_s-Xq zwj`!G(8|I1up7PaoV^aut9&-|%BIRko$6(CPfYMDyXF2ibkh~>tlfGsJ2qs8e|-4! z^Yh8)?`~a}d;Qm@<@4*TuBKmEuR8zs`)`ls|Nr>?e*gTeKXc#LEWfXy_vpozZgKr( zxBeWj|Kq;NH)g(Nv0B%;ptFxouZZ!Ud%f(_lamLVwjPwOowT>%*QP70zCC@x)a$0~ zH}%%Nd*|xzRw*?`RBZf{B-pnvX)BRS3*j}dLmboFvfFkalDK#@d8KVuYkRE&9g=ad zljmj1@{iT;_fEIreS3NSzb^^ufBhfrtpByV{#N{Ib-y_hI;W-9=>J~-|JV9D{*&FH zYk}@xJ?C1o<GN$c_dCV@n+oT6O?#uoHqFZD*}vcK{mndL_kX*Uee#~u`{(xmD_8aE zcPj{RYW-XmBYYz~VfmUhmtTq`GD<TyMs#tV{l**3OMH_Y9E&Hy9cm*J%lGr^^LAIQ zSkdLBH}CRtfBti+73vrNO%0FpEc>)Jzczcr<R|JUKW((wpL74$CX0TZ%IZ(Qu7=0^ z+F7lOulxBlrTIze9M;J>b5`klpMA7!cHXX<pGBX(9em9$SD|q8VI2Db-g_@5>#$y# zt{T4bwIY+Tv9Y$ccHN>>$$9fkr#V2T>e_XZ?~^=LqsPQoDVbegF|GHzE^qahi|)bM z&knV6uM~WD`((R(-H#i|{eSP@{|h?Y4^+)At@5a~%&WcWt-p85tA+nlS83?1y86v( zk4~PX-NfJTcI$h7yb|pHb^fO7uG??>-YfckxBUIpOV2I2T$;T0sa<DbV}11IP}u6J zkF~yLFeP&yDe{%wVYy>fEuL)`;9?iOtZ39>J$6fEZQ(Sg!`iEoR0_)?vig6?|2ZfR zI?&>z<Gb6Qn?CNlzVh&rZ?^k&{33Q&e0&slci-o8)}RZ|>$lFgC`|fbvgO}iXSJfY zx3(^EwlS%CcYnwAqf5P~_sLpctN-=k)waD>A1m3I{+2&!atKPOtJ`-o$8BK-TlWQJ z4xbo>X?Z#iB95I5eM|Bxo}C;%HK(`msjC_+S+weZ$Mv{s-K{z2=2%|-pBK|}$#YZf zf2(t*zmMwIeQcKhqmXq<uIk0Y{l8Z4x2pV<@+$K8wduUqc7Ofd-yPB#p7rG9v_jhy zrT2Tk$8GX^`{Lr_{JmepYApVoUtj<Cwf(Qf_OH%oRA|Oz8SFa~wBUbVi~t8@Rmrm_ zXLXV<Y+j}XSyYn4Na_Gg;~o~7e@0hpAGg1(@o){@bi4k~@p>P<d7x`izg~}jZ!WQM z^4xFvdp;f$-~Zz%s2b^7JE`_v>E8U>n;(=<s)fdXd$oG~JJUlK?Ze}*#T&Qo>NwSX zF@Djst74D^DSB6anMi<!e4om8@3|G2Q-+=bz_}0i=!{6Pg5UC458h?O`UWH%xwIi< zYM9Pujo-V9o}N1A;r8aqS@ZicHuG}si|)>^y}6F}m&?kD@<09<eNC;s^eWb+=~lUH zRzPl}#r2gpbG}vWeWjaktYn}e;B70m=kb|UbFZBtZBW$VBFmNOyzk!WolsYv)^;@G z|7ZLE##`6Tt9aBoH?rr_$?N<7eZBIwy0-FqY`N<Gt=T^#Hl1C^`)kju)4xRYz6k}y zPwUySD^_1mZ(G#bz1P~#bB08N)_^$NU39O8#9_S?uApl4mi3m?*1H3}4*%M``}w@; zNw1%un5ZnSAJ_B#-R+az`uk?=F|4fp{dRl(BjNc!me>DUzI<NQtK;_nK7#g;%Bsn4 z$^IE3`08|6SeRe$fAv>)f6de5QWD_Q+Nl<M-6f&2GV*P)W6}kKPof<T9R({qAIw%G z5MSt{J(Zj*^iP++{xM<s`)H|Yd(2mz1f5<N<GS2`ejnRm>z!3!UtPKs^l9CWec$g@ z*MDf1kJ(pad9(h1)%{N!Yo)*Jo^|DCD(GU>A})3Rd2j3wx!wd7p4ZD{*Dbc#a{KMH z+PhNrjVHNW0$eh#C^FAbCee92Io7OQ>suzi<(`_V!5)*G51RgVKU1<ekKRmK$qzaV z`$_M{RNK<im;LSM<``7$&Hs60AMdYPzg7EmLZizs`<nm#wtfFw`=hQaS(O}@PFta` zt!ZFvEWEX4Z`}GTr>{N$t?Fe`Ii%9Gbdu+RC8X9#feD3$g{y8aEUimuEPQ=>UF_~{ zyLQcr@!o!~>h*K`|39Coul%(szvi*@$@j-jrXF^mZT0@mw%d8#{z2PQ;^W1xrUV9G zn|}h-;j;h#*?wi<+h0#xxyASW{cR7r@TENW@!=X)CC9J#*K~VvnMn19tzNoG=f1<| zFG8Fy8(dDfJP0vToFPJTh_2ArezWdV;p@{$O7?$W`nRuN6jB@cN)U9zL_zPB%5>J1 z`rU^2i_hDh?6m*!p!u-6(EZxaXU!*XpJP{BbwAqVM4UryWYN^HH&$`)zI`kE)_qEt zGsIcpkbB#jh%ggb(uQ9vInSIu8=Abh^lREgt$$uq+uoYqZ<njeI1%MlI;rYN@p;?r z;oCn}&gmC(jW~I(J2?K^o6YCd*g=QKf(|k{5%Vbe_3PIsqxb!~x}Gop{qCI{XU?5d zi=X^Di^C<*XZPK6sjih8ja{5B8Y_)fyCs=`_d($<&d{^RPp%THxm~&2*BvVfIvT(7 z(uTdyDt>-?Iy-My=6cboubxQX|KYajDJa8gDBWKD{Cw@Z;*-Y;YaboyTphlC*{%Df z*JJ;t?G{_`^>+NOl9x9&CjUK_es0do`s@!$JC5bo|Gq7qzh~q9(3qNM#`7iLEct&j zeBY<3DUX%i`(pM~Z2TW9&MMe(WlD|jI&Fmu873jqL{;|jEcRk5oEFIv&KlIBiSAwk zr8i`2<t4q>r_Q8SxL%!*x$n~{?dr8lLuzlXUcYZv*3VY`n#2vy&F@t_KL7vE`C#40 zr)THyvpjV(=xs45Rm`!kw=+GYVYs{KsaIBoeBF<S_y3%|za(m&ZME6eGt*rKI<8Eq z3f`x)-a%ylmZ-H#YqXOU0zw-(3`5hN`c85qt@cxhZ#;VR=&E;H^}g=mi-{N8{O?V= z{qEO`ysl1nExmE+QqZcWy4&vvJ)gDr+pX-vsw>L<Hk<bBnUgi)j}f2j?_byV|NC@W z|NF|%tMt1kU;p=`|G$OhwjF)VC(X>w=U2bmIpZAYO7{cI{72MRniZb7l`u7?-b$}X z1muOteL9N|oH^5TYLm?46N_J~2|N^Y3_li=c!oguqPL-*XkU2!_0=}U-9J9t`qbX6 ze!mxVSpPxSsjKw4TR^*r<#M)NR|f_6gNN}KE$rS@KMRc)W3KrB_q+Y4iT!U(f5h7F z|M%<l{i@e%|2>EmaaWjhY2ErW?N5aw;^V)6UTTq;s$weGv7q~ccKAAjDAKYXOOg1E zd-v9zT=rVX_p`y*RKv6B^J~irVtKDkcRlScUt6-_=>zrc_v@;2BI|#@-Ok?6&>ei{ z*M{<YmFfTQSxCJ(HC6j>{!%@?*j*)udCk8_t6O_+?a_C?(lPmj-OrQ$-+s%~6~11( zeN~O*61@}Z6Q{K8x4W;q!$HRW`r9(@O>=mf9e7!l80IoXez3``AT40IR5xte6m)p) zb=LWx9{1bNi&4?v^Wo4A=6%24?VfCV<g2&--Ywbc_kZ8}K51#(%H5A{Y|5|uJp1~( z*xNh5gIe8eCqJL|n{Rjb|GVRM-!`reU;pmcksk)HPETrIWBcPlbM@Aq^XKQ=-+ynW z*OvX~_x}ICFD`bU{5JS{pprOiw(~Kw6qS8bdmU7kUWxvk8p$Hn>$dyuxwN?zT#QVI zS(PM|RZdT`?U@Ykgb~GPlmV>?ZF}$k?XDGv&G$RSpdJ2|kIL))=Gpx0^sjmJ=H_Pm zUl;q?p8vZRoj=#Q{9UK|ydS5+_X#~sW3^$`Ip^Db_?F$@m;T2kv*dr?oo`Y9_R7lO zz@uVEOSDe2-Os#e*STa$ve%av&75b>oH3bwcF|hZ$BGW%^=Y3I3g41CZT3p}!poAJ z1EBrNf-Fk1SJl6Vr7Z(5N88Tv`nUv#fP_fLhaQEsK8FkiNlcf^6a~_wdEU8w18qdx zB;HYC(yO!lye8+7ogQn$w11aA>SW>Q(H2<vN@25Rs?%N4R)4K%IB@6AogKTUY*lw? zIAFq(mY%LXAtc+V_36{6aqG={Qy2Jy7XUFzCq_?ZNu5Pn!sO`De!ws*Gv~=Qbw;LS zP8TI9^YYC3-41h_w(Q+&d+qeq8K9{gmk(Aabf%wqxsWu&x%3`zY;Jn<%Z!JqRII}# z<U>eih2n-CJ6_z_WOaPy&Tt0>Ckv)XCuQ_fh(IOb;B`PSP4tFg9v90g?FSz=h4|?` zn|?NJ^PcQ8CpZN>xLhp6jn7MnlGx6u<g_@Xv-9OGQ${99Zi_uS>z~*^Dt`X_x%FJX zW2+B6<`9^%3cPAe!jLlq<B$jZ6|{pai%g=~)z~{$>JAC|jP27!|G1w4FEhIR`s>d* z42_?-Tr%7n#BEq5<w$h(OiqhKYxev;+&jl%C96!_w8(k(2b!nIO}E;?Gw*-~Q&$cD z1nIk^b)pxnVtQLvJ*5_WLQ6sr)5Nk>vjR`st)Dq_rr&bomEvpVnOM4X1Xfx&?Ryh> zn$(#Zi#-P}T?(3LZZ9p($aGb>V@vUmJ4@R;xzC(GU%vb9tF`9FN)8G7jT}EY{&cDf z%aWE?K<9*{ZQgnPSn_;f1&4%9OcM*drmMU*crbP9)VTHLH_O+WgSPDofYx-i>!kOQ zmYg|w#9x$H9lg(#+rq*zB~~Hm?1z{qyLWP|S-*aIZKk9>BU8IzM0E6N)t?m_Bu3*= z!H9?mi!<9&z6&WhB#1P6m>xY@?Y2qzLe^Hd%JN$R3IVx|9;};`NHo?|yr9l^>-XN- zvW<6Gl}=u<IV)E1tLt=8KR2^NfDEH*8ta)$Z7!rtIyopLH~K9Pp5uGY&8fj*DvQ$I zlsOk{@^*k4A9LcD3K)wsftRaHlxa)nzfa<3wgrbkTlV+H<tzQ3T<X-o(74Y*W!lc2 zJGs=)U-I=WjI1x*rQo2TDlm1q*BP(rS9yuuY7L3z11zl9u3Zbd-BSxXio==9C23~D ztV>rFSw*JH7TNBe>+qCy$_!bfv%5%Jzv6I{_14?6r{;dM6~K#4yfmxB)?E4_Iz4sU zC)*B(m8?@{glc}C4LVeU`0iR`A*gb#+8ejh+*R6!k%<+&hA8!p&XT`VSVX3as_5}F zJ7}_i7MY2XxX8>wlSNES%xmN4n+lu)8ao_RCI_kPoyB9c%9U$h0#85a3>u4uO=|YC zKBP4W4y*$mh0uEIVU7XlTqA``C)T|@+P;%xOVrv+x{Azd4hrRs9<n=^=zz|4A*zJ| zP3#LeKnuopzRxma0G+5Iz`2B@@{B|o%ahNOj!jGy)@W*|dFKwQc}WOfD{hPT%Q$}T z>TPs*$ug%rc!j)-wzl@tXeY?|LQ1_NT5BbFpbj85e?)@%UQTZd%p{mtxb!yc-8(n6 z@6(!xpm{>pc!M_g1_w<RrI|eE&Gvy0BY>nzVnV_p6trb!>WryLkGDI5He)U6_K*ra z+rD&mIC!C%YlOrxhX#k6tV%OoyfkB_OcF?Jz^ExLII`wV^`YMR4rWYUr`0AEso(J2 zefQk6tJPeLpiO;Kj1ICa)h5x@Q>qJ&tl|58?Cit?iJ(NQyL$cFwX)AzcY#(jHZx6( z=$iJrr=6GpK&WXv!!l(C@4HQ)rj|8R*J&f~qsn#}b#?o$zmA*_I;UcdgUU3w#fC{r zmq=U()A)+hr89E(-Fa`^Quhif1e7&;a8Hz3HT|QP?cx<bw14k1s$*j5(iC{P^vcVN z4>$?5Q4lT$CnAeI4y&(fJ!?x}tmL3j-RQy5eqO6;#v0I0m2cVyg*gRQ^gF1`Jej7u zm&EPU0alEvX<u(T=PhGt<IvF4PWU!&{(SjQr@&_#2@7_F1Rr3@@E|^^f!&>=3A#<D z^Ns&CPSAN^9V!!2&wX4I$dZ<pW;NH(Gki*-utI=Rqlf8Y71dnga~(J&R%|=)>Q&bI z>)IFNGMrT%5|o%g2N_&Fm#;cEcJs|SC$vF!vV0TmXbHX)0y=|?q=5DbNJvavc>C?U z-OQ29Oe|W;0*dmD_6JQCt@h;9(bEe{n>mvMbm~*b7UPvX%j8K-(Aoyp*0*1lcx~jq zrNAj*vBY8b-M$I>`TJIVJMs9f%%{KLsw0`x<<`owI8$p9O?MN|*cz3b>v3%c=or16 zyu7}7!duQnfMys<v`;l~3an^wSbXt>#obEKX-uR9d#h+fZ0y^wRiZaEbGcYJmar&o zQ9i&uyM{-HMdar)v9<b~0w>%QCiSb}InoPj8@+Mgfjf6%mR~-ZX1{s4fWm}c2bR*7 zGW#>JA^{5L_)n!7f_j)NY^*YgVF%`OliJdVZ#;YU?7_Xq?Gzmr^e{<FOaFW(>@V+n z;9+Vik6yA`fFz^)jNVBrwnEQ=BQit+%o~?3T^hGOd}i-uHKzq_OoE35Pn4dHO`Ws; z@aZgxdCPnjWH9v^Xg}`fPbO_Sxj`;yr`+4OZx_9-H<M#xaTDx#&?_*nY}$qYE}+xy zPEESj#?ZKu%i>Uu($5$Y_nc{I7X0~9$Uf7z)P4IoPM<IZCbL7^CcRuSX>w7;&6Ml= z?{NrNY-mtEqxCcR7>VP;J}wG=j<;^zvieY#YA&QOVJ75w0JTZqjb1OgnUl87#%9F> zrswD9`|Iub{eFLa!GY;|u~uboA~xOJcYXVvqSNtzj>d!Tfz03g^;$x^o#F-Yi1_&X z<(8RP6Aic+z}jJQm<!quzw2&Zz3?V(CKfJL@DT#fWkN6QEVr8Lq^r_=GVp<S{I8%Q z$@!MWX$1y>@nwg3%~fXimhRoP>(?P}eV(${!c2++FEiFWU1EsaB5)~(Ua**obQDiC zGc$X0P|aaM29w~7K3(l(zdREu*J$r!lNTT8_?r57Uc8xv)c1SU@1LHYUOZ=|yLgzw zq)QK)K9bh_U}Rzm0_~!HTef>c^kUu~hqWxAL6~62SEn~|tXZ?>O4iO<ZweaEygIGq zkhk~iH4CoX9~Cv*+n6R!IW@_?m$Y^nXkqBIY14My&Ewr3H`}POi35Djz&tLV2L?>H zZ{KE(^lJ-bX>7haeXeEkvx)9<mb-7y|8Y&W{LaSfLVMqCyFDi<tmS*$3PYEmTiFMH z;5$GHYq0L-%E`(3QnlA9x7SPpbg<Zh?hCg~Rca&j7=Ld5bkXV>3x7a-+260%_y7O* z`|$jtr>CaAulv4x_3G8l7Yl!Vd6|8E9q<0T<=LtNo|y%6N#ELh7}R#!zHM99*59{M zIG<>MhDOb8v}(7DfL1+Q>Z$bWEjYmV>U5usWzok+M+KjMda7SvX<#z1`rS^!{OfDf zm?q9*yWZ(fWbpz|@*CD4xN~QY*5+AnY|PK@VNp7wbm1GX8}BKl3pr+=qrB%u`!r@= zpMG@B{F+ZELmKYXd_Fr}KVDC*Bk-w`z)H=n9-#9eNlL+u7g-nmNUg56p8ocNoY#Uw zOoCxrr``NrQZqrPb?nLTeapZkd1d<174LSx-xt!e=ffdxc8RsotF%DYIgxH%At<xn zdRrFyJ$ANuqYkUm6r}~ndL7?(>tDz)*%ae3FO;h>=hf+ZmCxsbF7i!&^5x~_r5_AW zoMBONR1NRQCb4=1?GfxsIycvP`pviuex(4z#<gp8r>3%d+b!LZU0Ap=N&8v}pZ)~j z+Q=T`(w3WFugCv?xBI<Z-JhxzJq{`>f>eT<NnDJwKm?RY!ABivZGL&ng#&b=j;fOy z({d5Uyb0`L0r6&6EwnP9&%8Q)@26ARE0_L0#H~L?<m`s!iVODXh$?{2k;IxMa5Tpr zd|=wVd9$>%^r|z<Hgd+ypDNhF&}q<_U|DnI<-#9K+1c4sBX_A8X@Uxdb#Z%l?b$Pj zXY%Is^L|-kzg9LlsH}MMslb=m&I;5GjhtL-)~zeseU~d|uNf<7UVTBwg&7G8UatB9 z>U9anIPF^1=8*O^^<e4qx#enypX~enZgtzjNFNskp^&0Vl8;I_aD=r_-u_<RcJ)oH zQR*ySx&n;?4-GyFTu%JRdS&`ltD@y5KXhK7maF^mFlEM_vfH`g>tbeJ+EWs3#rQS# z<O@>$ci;=Cv%78EHm~h3Z#8iGxPWHI4}5v#eV$c3AlZ7N#i|JP$ZOM=&MSq?fQ6m8 zT*9X#z`5#y=9Ld5=J*wpKm)bUo~5n7Zv8<o!(2#XqJz%Yhz}dztQI-?tcZc}YpN>O z?K5q&R{gXpes<=;V*S`%C2wwQ{5Q$E=*fwr-Qw)C-~RS|6<Js}^Vg=@i?1#_)JEDL zi9xTXpb>|wXqd3{z^hlUb{0Q>wYl=P&ucY-)7D~@(+r<Rx{AFhu`1<e{CqcDA@sB9 z)nA+1<?AdY6<(eGR%^XA3p7V>6GQ4rTMFKwCQtBkzm<DdT($d_<!>fdtn)JBM&z-H z>7wxqZk@jOhEHumYHj4J$iVorr>CYi^WKh~Dxy&*X6i&@{@2pquwlc7ojY&7Ez{na zdwYqNzJRy6Sb@&tQ|+rb<$M-=QcP%K7x1`R<NNi`rYoD@?frg_ndgSCsF+1WTCq5; z;DQ&|XpCiw1%G~gT)TE{-1_i`v3Hh*Nj65T*cg+1(N9_IOQb5}(alpke{uS$Ktocl zN<%W>`~CX=Eb5C^Z{j|3a`wrm50O>?HU2+-@9y6lkypE!|8sjh?^>-kx8R|xeund< zBP|nV&X928$@KSAIU;k3^Q_?wh1@>J4=yw3MX0zh4Q63sHEMoebVQ6bByLXC73LKN z3mhyz8F9E<1f(tq&<Qy4zWRp!{55O#roXo}{{6Ia-rt$sWp8a?N9xZ{U;F;fntU;0 zyxwTU(bL=O>+5^={Q2;|XSRL39;zUgu5&SBMd}UxV*z!H7uT#?n4tSvDxwZNDR{5) z`O@1<QuS^}J$rQ1i`%8aYkIp8F%}`K@lrLgv)fnw{oRhp#h28#^X@Za+9;Cjcx;o- zRWrjGpSVxxul5yq@z8~BTKu<L+3V*Pozi@1_VaCi{q4h@8LM6~eL8*V?m`l~EDo8h zQk`k+{Bmo4Y34m%zsNyn&yKY|QIVOCoqw{M+1kb)otl59R#YOQ?j|$8&4hOozrMci zek?M6`Ld5$oGuMs;T<G<^OXLE+}qp!{{F77rx*76&$f$U-U?z7I-4VMp57O9i>PD# znR@lszh=p|2R@zN^k$)~b=jWp_o|y`E{@YuoUnGnC-)F#5-Y9-2gMDQpP${`T`q4` zvO?(jcHT`w&@&>mrp;t(+{*pt*4EWRukS0cYZ}b>vk7!>dd;VkFQxv0&g?#s`D*na zCcy=lL>G}5xD1V2T+n26_N=b1?$rMZ+XbijDu52}+ObMUEJ*bFe#7bU2}wzda!%i? zXwx%j__Jxp@|@@A=DuX>jM*F>SDE^v*t{VK6w>0IB!~1WJppt7w>LMZCnhcoY2VJf ztOb0E#Ew;KUPbQ{dOSTo>=1{+7e!u${cl#s|IOOwxNhgOSquH|Fq~3T*spV2&5qRB z2KC01Cr^4PSe3k(P<{4P*{oWP$DOGH-HOv(bb74T78h&oKk(znkAQ1?{7&m!c>iaU zbp9U0+fvKt6rH-b*!^@)QjW7=L3#SN;2IJmc)>cRLf@-bu3Wiu=gy-?j{?r+zb?^W z`nc=y(&MYk{Uc+ymxVri8gz7_OM_AQuC70uzP`RLZ(X+L@sfFUzg}`wosE8culoJl zA8WW4s|hSzS-J8Dv1hHqE1#|69jmRj<=);_|Nq~PvsqXCCiNexc?>>G?~UKITkoH8 z`4*(5rHPcyw=C1&(Di3i#E0u~)o&Y_+4FM079Zv{uXz<b-|FX+$<gn+PwVYo^Lyh; zODiV9Sy6ft@g&BAL&6dkHFfp!_xEZ)JUF;?>C%gqL2=7x9_#MDF0OAF_tZl-cJkT@ z2aX(ZnQJz8=bG4r(x0iTqdz~NU;oeg{hrO=46_&3F$vBJ+rGlamDJYLF0P*be)qmh z^K7f1J$rU1FYH$HmycPGSdV6RO&49iX5H$Gd$QCNnzwFIOx0kPj;Oo2ulBd!91FuK zman!vVG^8@C6?w(;s_`s(_ev(FH3W8Z*$cOzB6I#h7AFqHb2@b69+xBV$;cA8&7Pt zlxSpT=ettWKI_UWmR)D`Z|^94yz2UM)#)*yyP?+RRm_uOZRGG;9TzJ{V%lpspuwGU zZ_myX7SS;=GOfxln&%`>5WAV;XnRWg?44}24Yj|&Ip(R>PK|lcXZ_A2{70|(y&E<U z_WymGzkFU*R@B<$pJ$BE|2dOxSA5>~yNqqsmYt6G1w2@lG)iLvwMcC3I5aqzGfiYO zwY1z>{r%lB)AV*e*-7Qo<|X7u@-1q}S^_%q;*{F!w2do+V;gtWu74W$K^1hkzS0A) z3$Ok;8Wxe*2w9~hpuSx>H!CYk>(jYs&z>pG%}Pv6)JQ+kej^jShmXHy0fzwlt<{?v zdN)63QkGzBlc*{2ZE%oo<Z!p;FO(uRuo)WlSdSe$rgT=TPHJWP#0pXSi7i)uth{hH zz1RAL)Zx4{O8;_ICLVp0G%L1gg<FCP%d+LmZ!f9-0h;}0QxkZY;li{&lhh2g;1bjO z^o4)#+uz=nt1Yxcs&)VJ#asXFe{Aa6n|(CO{?EVdk>!RBNd{BZOe>h2MLJIZW}9ZS z2y}M#7QqS3c1QNJ?jmjE4AS^=3ri>~+va<$J^pI+f}GR)?%hhe?xw&Lcr$GAN0QS8 zsN?14ctA8Qw<s>_|LRR^Kiq1b{h)|Ru;bJ=sa}%v9H`(kP-0qV5Uuxo>9_mSb6c;= z-C>F5+OcO%j`c;74|D@<*_<d;&>DGq&h)?^n{r;)h@3gQG4jCE)YRLZ$H+N$pl4Qt z_L*75aW&2j2N+ml;>@z@^Ui=KT0ky`gfDUZ8I6Sv+Gp4%xG&~rVwuGn6Bl-9KL?2; zw~$h_XTgC#e`<<fwdZpPC|s~_<giwj$nl*CiWuTtf*2zVZ~|4d|57JrfV7`w5-jtQ z;Nk5g$0&nYpiL5IITiLPIy5-gvnW02Nn2t{@?ZogJvwB9PU8AC(PNP>6AQ-@Cc!K( zX*OOGr=1`TVuMXgv(5AUiXA|w_+Q{}<S<p1PV*&stPK>`0cnjdU%sqcGC2b@PRQHH zVU*g}c#OmqE0B<tC~RzPW$iRz;ShMy?$9z_kbeWo$A*Iar?K<Ev$M0OPn-5@ViYK_ z+#(g2PXG8(aguq#LqS9|laNf`+}fHwWpl!rxeSeU94-lhu_R8&K`qr%1RY}0&mx>F z1WFl#L0W>pc*xq$@1VeP?D+BN)26u@3m#j;Dez*g1IuI%O($(|06?uHI^8?8vY6%H zyK`Gcc&#AVVLn<SzewGn47GWIqJgQY>8zIqX}%2(>sgd~I#z(v2?>D>O6&}bOroMQ z=FNK-I;*pcLqNi`kwZb0x3-Pc0Vjx~E(pw+J6Cq=5{b{M4he6W1g%^GNvw$>LD?w9 zp`)X-#`dNQHw#Bk-+@ME_AG&4K8*|zYe@5>0?V;u$Ck|K^-G&DQz&AwLrXV@R1=Yh z?xTgMLoUmb8EXw6AA8K==HgHknR{qoCo~k%R1$D$5Tj<A@+A3`SuA0?3OjXrXA*sy za)4`NsQjYO3XDuFYzhHKcVvOr0tXl~YNj#&=w8pwBq}-~CTw#<z7>%!lJITpn)k>! zhl$0_CBZ~_b0lc6$l)f7($So{x;mGCKW3>hGR1PaM07j|*jABhL!_|^4hc({V&&!p z_cAatISWQ)`UKAh2g(=!gtD?Sje6cvuLcKBRwacm`nSO4KXC^01TAQJ{)GorNwgkN zc)V~QIK?=)Gis(Cy`RC#v{*-B=bGd#Aw;JYEfs@P=}c$mGBkeT4$+t+r3Ff3Jsk($ z-Q9iqKl>F9PJtKm9atI#Im?$3ed39-(uMub<xy%54F_(qx~Ygjw!?&YCuC)1WoBl+ zt$((~p}}D*OVZ=x-`0oiF(Q7&^o76$QOAGwOk-#a6n-IbBt!w67n}ue?5X_x=+UDU ze`C$!nHK8^MBADD3t;N=Bf9)_h-Y>CS+iiLutGpx<32WrUQjY%Xxs`KK+@IGnexAX zrJ#_)2Ji_FH$G)|O3WjE71&bIh~JLZx}ZCz>Y0}E&SQgATT-BL@xQ;VSEMqroKo0O z|G!R<_=8%nL@eN0{<Q}b&8Io9Sp1n470asj@89Oy-``$7Nl!~tTW6Q~dGn4PJMOq; z)X0n8vXR^0r8kLhc``%2{Ariit!KL(JXw}4TQ+Ulv|IU!`&AtlbTMt*n%q2H<%$Fw zC<zdiuU|}d5Iz3`bSmp&<qOL%ERST;7LC}R7pokueO5|)(_X7(ZBx_FFZ0ZDHHw<p zDRwz#WzR1b4iiwFA}%I&YV*zB7KX;H+((x6t<^n6bd}k7i+j!A3v<OF4X|76iNZRw z547=0EA_9L=wfDVEiIX%Ji|aJxUcj07iGq^6RX5@QmccHIWL&Q^!xk!_xJC+=n5+s zcr@Bpf16@_j)Wz(FLoYK@PF~Ln}Lx@Tl7Wch06+!Z4Qr(HpT8PbLG0)$jq)Z7nHu2 zzAnD<iapSQHGBbU?BNStN)8IbGv>?@@psd;nU#N*C5ijE+qrGq`iaZ&pk#B5$<&%F z!-|FDiqC>$53gTg)7+4GdD+_N?QUTqOWbw!^seR1=Bc%U-pycp!hE$p(^C-%Y3XjC zGYjAQGAlSFh%#-gOy-_$yp0t9PClUJcc&6`?lQCRi{KZRbM~@!<!rK0+P7hY!G@=+ z7CR~2VBSBma9iTxwyO2!o0T`rIj}AFc1%iG3o9$rQ}GU7>Dy&HW#3j4T?+;zH-3`; zZ0y9u;uZ<^X_czLOK)Le;fbeAtgWTDXY_um)BJqr@zo>TUDrkQy^lq%7u#QUN?%~R z!r8NDr&i`mNi#C>HvawnefPFCe;luJ5L*B&@Mk(FETrJD;0#kOSM98|yBwZqyuGzm zJMTo1dBDu?`Lj13g^s+WUJYOTQTT<1fu-fn9XoEMxr2J8&LSOeC1-DW>=p*fk;Fyp zm5786_Mau7ODFr7O!@XN+osf5`ubY#-Cd<=X~%d|Wy^g<wU1=?PM2P95%;A_tnC!b zDkXvMN^fs&Ufy;4@(j)^(F$hEvQMuP@*sZl{Fi#b`^Qab?hOuCS$~QD-4avR=sVl& z=-;r-n>WAvyYiP?+{GV{OOJc^hs$#>__O*72j?1(gqoU|NpHHCnohC&QWuzQxa~>T zwhctr*bWQUG5xjPusoHCg=0<Zf^{3O?}_3%ayL|1Soreg%Y{#>K{di_ckWQ}4(K2w zPx$PucTD%KS#;pZlO<bju5wp@ync&A&Vd_kp*?cPh#$TEr4sORawD66gTq_aUn0Lu zqO}@#EXztuOG`{#`0e#gmg}Hv9*WN1$qrlfH``#f*p1EU{VummkFoR%N33+n*>$68 z^}TH*3?!9`M!cM8^A&XUl}F>QV{xCmcCXl$f8Wm9T6=HO1nE^~wMRE~9u@XJu{5p8 zb17&5<k_=lS(^=gTO3ZZChb1DY<0;6g9@Va$_4etN%Bl4HcTvTF$??``folg)G>Q` z+1p#D_V)IVxNm={)(|+YDK^#nY}?kAUw4-^e*9P%nP%I=IZNq+jzF}I*{xgUt3ib* zxDF+lW*uT#XZhd%2^v#<D!3y1jqKLS+`GF>^JYiI#OR#AWHjj)=MkpaGiP=lHOu;a zy5_Z_z)5{}KA9EwkC`Yl9Tx4#Ro%Qs&he5CxWNK$3gNF}7OZDFZ2NwBITH)V7V#I^ z3|A`RS<P~82yFNAoSw1&(BEzTOdCHW{XDAl=C#swi^h4}K7M|?9&YqcblkjHO(0s+ zEabfTN;YEie}jWAtJ~W-3x5hJ1n4$KvE8fkUo|mo+lCDRYp14dDHZKls&R46J;UYG zHg_+X(ag?&tu%a=cw-&+nX_k4>a0%9G0`M8-d@ai*zf;66Vw{a7JL!^<#JIz>$SDf z+iQQ9U4OSGb!+vu^-LQrk~@z%y?uM?x>VyoPS9ZNtTUG`1;uY~JH~m%O~K4NXXXuy zzqhA?npi{xC1~WLRCLAJN+)4OhXvD^N_+Q~&boeWZFG8idiKsgKC7lNfhGa3W%AGR z-U~{X-`?C*KD}nz!xKxYR0X6}wt41Et8!-s-HS)0ZGVMdTwQ4Q7F2i1GyUzZi;7!( zV43giw6ruaaq-_D?``#5aGz;oNiyScqqxUzA1oRhIemP6Id}f;<GHndjzdn@4Jqc^ zZC1pe?@%hb;*O*fvl?jF{FPMoYU}m9(q^FUbYf!Sl4}c3UW-tG%;8?WJJroDi0SsW z+}ZQzum3pB#FQzP>xf&&TZ5q6_fv>ZF8^6}+3a5~1s-<2u>ZyKr&GCd?(h41ppn@* zlFdrhfT1zs-o_K*yY#Q98;CTXoo#;p>{;G~_!mtMoUBP7kBdp1x^|iPqq$eCcHs2q zkrHBLV&Q7sb?hG3S?zbFvu4hWjEd5V>tbq@;yx18&-&hKGuP1-fpV{Y{P^+j@9(3} zrQB75y;+l19&hSTwLi7{-W}roH=pH_aW$xr*O=`v-)Vl@ZowHdX3Us7SNHZL139K< z!H%Qy(F<nJUBuV8klV-CSJtMYz#!ULpM^~yG&leAg83{){P`P{D4~T;qZBvKznTSd zoB|3L_B!+)&Y!t_Tj}d-KY#vw7e9Fx%PTDbX~k{MGs{<R6x0CqX3O5++q+>y!1ccw zaf{U;XF9w|ny5{*eT+=CLK0h(yPkQ2dLf{yVfUN^-`?I97Z+c>)uU&c!+zGJ;3L-} z@~;1w=Wvt7EdSn~`u}wY_uQZ8_`6o9W2rQ^#k9hkWz&cszipJ_{_-+nK^n-1!i`ex z_k(;v_59__m%Y8cZ7Z{-6a%~)Zzyc^P1-yq>$4P3qZv4b&YmrNJ6m$%EAy3*Y5HxE zm+DBE&H3WFpw3<RYzIT573UYtFPYl}Zfr<A{N~M?H_cXWrHWs!cF37_!)Rk+m+umX z1y7iglaqskgFk=%TzgkaN_|6CW5k?|F3Ah0)o7EjfosLa1FOz6R)MbMWENOa_(S&B z6*V<AJ{b#xhUqJ~nYM~_ycM3E@k07014oHIbf&zuwKXcwbMmS=4mw98CT!H%9e+5B zgwg$4p%r%=T_Ab?m&h--JvTkN3MZcRc&j}5?R<wE)yOnuxxm#Hf87?{JlM?sd%Nit zp9IUsh>F7KnOin#web<XAhuD8Tc`ZP`R^<o0vgQ@y@%fiEZdfNm~CciYQ&9W0mh9x zPV1Om4=~&6$GIjj;r6!N-{0TI$Hc6;xz1#65a$u5?o_ev+}_hyA48Kp5#20@`7B<g zpDutd&z=B^!rp|<6aN@lThIRZ%cH@8pEarbq>=Q&7g4h{^Y87c{QmB4JD=>Uhs!Qp z>EH$(JtgYB+U)ib7h<d228UQyw?7vazZ6yoC;}BTj_0!P?kY7p?X~Y5?|MI`jdznS z^A`2L?smur)e_5=EqnIt*|cfXUTrZyn`*!WKBy}+b>oDp-9}p>eO#h!{^Flt@SNu> zXlv9}&M*4EdOc2GzI<7TC2adQ8`p%ZOdDS&z3%mxV0gBQ`^eeg>Tho%BO)TcmVJ28 z!Er>XbLpd1o2uAZh_0L(rMP=ebh=+waagbj)a?E{@79qcM;<*&a=pJhQFuioxS{#? z-pgC+1_q$<dB{ZgmZwrIE4KP8!p??c+s08!!WOeHo(XT$xwnEQNdAH1@#^lIywYZ8 z&Y%DOerd)`hQ@cSNyf*fttmfaxLZ)9BYPDjXjP2L<$1FLjN{7pe5v^QPE-0|Y(A(+ zhKza;NJRnpjZ!itCag>>SvmplIqrPExi)%xURv6+W3LZh;Rp#ysH(EsmVSQw9yZP? zjtMzAIgkX~e|wGAE@$4|y$+8jZK^o>anb1w_rSvp1gwKKB44yS%s$)#Dy141a(_{N zcXjL8&Q8wnCwOX)N-;D(Wl5?&rnWZwkD)$O>wzavp1ixen_tdm$CfQy?v#C~oyiJ0 z!%<@Wri!&(MB1p}(BQC_^;FG{i#Ip~6hK~Gee>vEkIkDmhjBB4dZBAyDQ%8xwR<}y zKB1<@rfAByH#d#V&7YTTzQneo!t`U)Bh#a&yTZf%m8Q0kVC8vMuj&gI4{!)52r$|5 zSAESccztc{yN->K93dVGW;r>xe;rjaR=UvZutY!i_BP$1nUC7mw6?Z#y}fgb$MgoX zeVpSSj+-fWb)rg%$|Ru5?SKZym1irKbP6a0csB-i99}&y`A$>Gg9D9G`^qOP1yncQ z*rR6@UHav7!dy_L6_YXtG&E56p1-2WF)C#;Yw6suzMUY0h-}5#ib#AAbiXU8;E>?T zWXn@-nw^!DbZBd;c9gf4u*PhMoQF3~m~#6rb53}RIbD6tu!c3z!8GV(lO99r<h8Y$ zS;TjZd-@!XAMVluT_)bav{<+|+~o4inKKpliNp#kTySo@aZdZzKP_R2$i|N!KYGlb zHEUMap3OUV?(|q56%p~`VcHs(V8f>~Dtzn(nv@)xQd6e4bb^QTh$wIw7@778tvKT7 z)vV%>kiuFe`a0|Kxn;hy-9A|SJ+ZD{SYEL4#uaI^oE5$^j0BmO#Xw^$CaZsBE}7^0 zDD;nuP}t+;PUZ7W-zjAC>^AKFv3;V8*yip`K8dh$;*-{a7aTn&PUb>NsKvs)yJx=q z_V)JlY16cRY4OfxXf$KmxHY-CT$ufeqC>(}tdrWwY2_gqf1ljne|A?lqeye)*Ag32 zt~Giw)nWGHbFfUTb?xecxi@d#T)3Z)S;1k!dZvwMvjx_WIvvrN#rfsyj4j7F1r#>8 zHD<Y9vFk0nyQ@?--!F3U=Hr|K8l9kt)tsMptior7h$`V=MUH~Qg2)9b%UAL?GcYpg zvd&t3ZAI<o%*)G;9z8nEVxJ1A$FuQi^5g!fHOBG8_R^pZXj2V1-F#EcwZS2mrA<`Y z`_g+zOk{mF^KAjGVgL<c>w78~@sMcnE8PoEEz_@Z2q+kcG*-Dk__lfWym@k6JN>`` zu`YJ^EqBiS#1An;64!xStX@S;w+ui7qd^I81J^CmJ#+5dHkOa7j7-X^0t*)`ay+wv z=q>=HkXX@mz(e+uStJvSmU_U{h+DS{z4TV!aWYL{`YSvk>Dq0E)utqR-Kg=OZ2L7M zMkbbPdJ|gL+^Ub+o_F`qp+mRsf@THgf=;Gawzy))Fbg!vLv-250Gei5artF-v7*C* zIwoh%p2M#~iX#7tZIBdvG1Vbuo|mC?Siv>Y&dYDC;{NjL#^y3mfbxT)sibVu>0cY` zws<b^V+uNRX~s(8N29<#aahmts^s0R7!H9I^BvYF#h$!9F(z#P(rh=DUy2Gx*E~6R zhs5>SA%P3z+vjfu?fs793^81{uH?+5(^Xrewm2t<fF|oqj;$i`N=%39#z2eC+&&hL zknjbyEUS;_D@QNcrGMfCr+~yBP!_daG(VDrN(7WN1K1i5%6DA@9Xqy5T*G<Jo7WO) z>FK+#2S6wDWovnTrAWM;B%y?5&SlWKCo@@J$@VT^zWj7gehv%Alt=|8kG;xEZW2A6 z0I3xWBpQw6=a`v+?kQIj;#)fX?d|Q=`&l>yBDx(~CN6BzpG#t)6rkR?bxzhd9Y!XW zU%COyD`uZdy}Zo#@3PBwj7*Ca1P-e7>Jr_SgOzj<D-USM>@{;|Vp*lV;nIw-&R^1I zIT2A&tKNBo7JZ#k7C5Nl<fZB~-;q?u`Za!%nP4Ww#KK|1J;k_aU17-Q&!5j4f8}Ll zVhK|hP)zN0JV`>o1zdLYY&!7DbKfsv_Ma7BF0y{*~T6JC6AYB=zM!zE#5{1y|? z;wn;-5}UGtmHYa$Q$R~{dDMjX)=c-EZKkWM8~V{z!kCdMRjlK{ro_W-jjcwqBu0OL zdZUs2G;s7^(Y$voModg>PcRb;#}{XXL*8eZmc1m!nV?c#qOopH!8Oo1fK{pnGdwJ2 z#4TICy!z-O(7|jb+%6L&eM~Nsc6tIMQ>jpf-JCblOe`Ez+!vUAEW5nS_i3Q15EE#G zWZ^Qi#LL9@^uQ4$AkpIxdp>-&I3v?n0SO<KH|6@TudR)ah*)u4+K`)x<&=)V!e#dv zeSd@UFf0u!5N2HQS#TzONw2Q(jm_!)=cnIq6_5LIuljwe>`#vcHcYnhpPe%c($bdM zEOB!JHQkjS@TgvRIR)Y*B8&$|MPnD&mERquXVbP9KR-85fAi+^cE68w3Y#_?&9&nE zQgfDn-@(q#POH6wp!(nslVBN}{Od2Iw1E^H8XR0%Pu08K;^1!dulqFFHa_k7oZ@r4 z-|veqxw!h!L}mAVA6oTmUjCiGxB9!Dj?R}=sc(B`Ih?=#=YjN``SazsZcp3C!od@+ zaOm8F<hh{1Ey5uO_8PcATCw6l!Fl`FwXRIoWp7^mG_ro&WBjYI{^rBO?Uxt6yS+W% z)i`vfgW?3eC0f(Wb8m&5aRoK6nT2m`NOTrWUS>!_gBKLL1{IBsbBnKCyv6!%*XwmV z1m3)QTK{O-h8#{`e}Db>zpu2{@A<Utc3$-F1GA!kJeL1IqwmSA>~)#z9!oRb<ygYK zvg_&1n>X{8t>j~5VyV&=IJmsa@bU~2n;H^(9P;^%vvYSa<?sLdZRPTLQEL`K)_CV= zI8TZ<6ZsZZ7PaQNme`|z3!?UkOjdGOAjGuJVD%$;;)ig+VXI(J(dZ>J!R&+{>%VW? z_b>gKsy@HwllJ;Om!59kyH;)gn(gxz-?{Z*aT0%ZN##uq{n%o4gA&H@8D9<NWp|O3 zOdWbz+v<MYWT?_m*uSQI#w@K)htk9APoMVM)WXwzK!bb7p*6eeU3y4c5_jMLi`&l& zrGKBr&HJ<I=+UDky!Q(Z^WM#tx3BwiGktz+L`21lh3)V5|Nr;n`%&@uH~&69&D!_% zTJ-<l|IV*ozi(HJ?EUEh3b7tnwRZ1W({lRc1P<^r%T-_74`+}TWjwA4SNNi?SMOVW zPJj2`Z@2gVII3Uw^6z}@^?QtNW%5tGw*S|w)u1!h-Tv-=w@drh&r{+1iVm`hFM0j* z$z=aN{l!1`R)2SUbfc)(-R$PMxz?B2yNk96v_H9D^ZD%4dAT+7`QEVG|8RVKI{A3t z(G^|G&RIO}5mxuxl7Bq^v~s|n9a*9=abfdRQ&d>oVh)I=UH$braSJFl6Q9x8^bH=h zugf<38~S|u+Z!7fM^sNd`Sq0c`YqEV*VX;1y_gVoV|#vl@ng`zcJ20m9<E9Ie0;K> z)ys7I-;tjmA2ol;pw$27Zux!NnjZycG;&|fDL&WvzS~{IOK-xy-CR@C)6&{FcBh}8 zH#I8v=BCu|@9u8DTNdrVj$7u@ol@Th2Q>p*+r5_>7T7`3CDHCyR-GX0^ljrMrq$>4 ze?L*TkJR~{_v!Ss)${A(O=gI$+xcu3&(H7s|JQ~s|9iY!f8UNBhPv5WvJOvXfsW!o z>pQph+s#j>jkX)r=hQV%{juz<Z7uVKxOZ{~^j@B`|Nm!tTvaB+<14I;Ow0lu1y`Ql z3kR)YA|YTKFN#PUIG7g8<CE~>XX?wZiKlZ{fG!EpJR$%8$MI>VphHe~WV~6k`CQh| z+do22i)=R8zvgN4$J8g&=UNmh$u<|wWSv&spZc%va2xMo)wgNNTiAPSF00S4DcZ4F z!~eZ|pUlrg;`=@<{a*j=-CgTDPY!<CAmQ1{qNK6){--(;&!IV>!5#9VWXr-b5s9k0 zo2T{n*ZlbK5Oe_Wwdj1`?V&O4U(OhxKeGPO^A{HvA9dNpXfC(&-LBV4vlp)@{`2D_ z=$eg*dDF}!o=WHKShylsq-)Ep%YN3nujZ6o@;n+GxbMZHZoM53n$FieGX@=8{jtO8 zBx{#>#KJ@0-rjCs9hK9vb%ASF<SyZM>%|Yh$u(+Ey|X?4e!=m@<xJY59Sf$cO9V}v zBkBbr>c=Ha+O~_<)XikwRI=8Czw+tS@LiGxvwAO`4VHbaucx={^qN$?2%em>GPAW} znhE_jpFB=8y1U%~<-b$9ljAQnicVep>~8se-Q{akbAImExtH9^#m*-qp_j8wP)YvP zzu)iwhpwLg^XJd^_5Xi^u2e{xZNeR2@vzm*Z_lYWvyNu3+nKiGefWEpFf9Scm6grE zL373=q#n=;j;V5iVf)W8Jw2)aT21ybXtTwR!sK1T^?x4AZ-3Z(Gxz2u)wTEMY@4?9 zs>@UUx)06uKTpTsGI<@YD(-Q=BJ`BExA)=Dvu1}5^V{D!TLIcN>0=RO2Rd&wZ{FJS zxp_=cds)w{d&ML;Wz*fapl%7ccSdZ{&ega|ex}*KkOfgcQ``AuwXP+KoU{A=Mp)f% z$>mJF|If_#d&*n>{c;&p@@<Kl7A72SwD-rO?o8IFr#P47?-6?1+1a^JIbHhU_Wgfz zr#p9PpEG(gJAdEK)9KkUzIBnk@$X*v=sE>&+g(fQ#tH}Lgc857{zE>ir^c6^RGq%$ z_J?`Z?_U1syI1%7?H8`i&%SKbS(|o$U#;xzkcCf}UMj70sZ2{td$HuE+Y7t>Z}xt_ zH+$ABues~NJIK;sFi(g#`x2hOkS*SEVM<;u$th8UDcgSIn$}MoAsYMFSO&kD8Xou3 zt?2wb+oP{~ou*k#UUt<aeSYcXeO9T$9`WU>r?|Pfoy~pBoj#jo+VA=QqyN9h-0&&! zWp8e5{Qvj<|G)G9|C~QPuIlC2>+$*b1E=q=eZ6-3zhBq)yUqUidHVi8s=GIBIPG>V zBDb*6&~)d+HtB0O9=wv{?`q&}cc}Y%H9Y*f$G0mN7rX!e^W5IO`Qvlt-&c#|<E!6p zJr><pfBn<6$6Nos^sle_b~Al`)vJ|1wznH=wOy|Z+8D!qeyfj4-o2ikEXjLjY4D_W z>V4mI>AkYa($f*3mHQ+m?N*1XZxK6RF^Qhiul{&cT>1a%i1z36szIk0-0rQP_UF^& z`F~VuwR~51e%pN}(mOgpZ??lm53N8@yH1kfa<4#Mq*U5(!L;Z#v;S;LpI4do|KH!` zbBesa_4!%9-2yt0zEwOf<No7je!Cw(&)5I+e*eGb_wD<A)>ovyzTf?RpMT9G;mFw^ zKVI_Iul;h-eR{UB9O!6U>9t4qUwlwxDt+JGEFkLtgM-bkpep-ycl@76pu>>4^>!%8 zx*eJJ!$|7>?(+PJem@Q{^NVcOsCvIlpw}fU=wfEE;-iQ&kCf$qdRVn-%rCj*`Ttw~ z|8F;v`%Ud9)lK#@_*L~{VY}4++J8TvUoHimMzQl_?Unp9dTjE>U2|3*`>wzLPmzP^ z{-^x)KMrrdQ{??*<<hy^G><ndU%veEkN7jI4Hvh|*X@X4*1hd1er9TTT;-o1A6JO= z|M{}qe(sz(I#Jmodb?gM0^I?UtFHEA^ZdU#udl6*JR7m@{?Bvepi6bO6wNML^80S> z_q(^Z=byjT+5i8~`Tu{q<Nqu=ZJ(99>&4IYN)D#|*UU+ZPS7TTpD$B+`2rU>{Y-7= zm-j1=|NfovXyv~z2X%g``cAia++(cNpU|=1`MRy3M|}Cu)55~Swllv<Nqd?*Em*6u z|IO_Cf6`vf$=#TfFfml*r*-DvX-_5mV{E6{M%VN_S@~$?jcpUB3V&~%TlH$?(doL} z^Z$KW{`lUCMH3f&I3}IH#4;d#er?(5tjxc?(&l2ZM;N+(S(m-h*cZQUL;n4JZow~g zrmfy{=lev@@E&ztmvdJ@XYW6qr?t=i^BLpYDtA~ttPUP)02Qm^{pMUpyU)Ec7xQm< zv8L{uVbEc@$|n;`KAe5J;sgKx5BxWqb?x(RZhCrs|G&~=?%w>MS0{qI8Ql*R{bmjR z(^>iHq<V1gvwMpVuGk!N{pk1a_p0+hZ@y`M@ygutdyzIlZB8sJawd?v7u7+5<y66g zn-W#30So_Zvj6w7|0SDFkhE2h%OlU(?3cI9Dn4hqyyg1wk~s^wW;*=Zbvk}sRb8Zt ziLbBk(sMUO8(-e;%szd|XWf^T&x)ShvibMp@yo}qmU|6zpP!pscrfhqW8M9oyH|I) zbvcQ#DeqrXD|6!2@<QcabzOFWc(IMzbB`8Ho&I}YD$|3F$;W5C*NI-&`r}`_{h!3f z31XW#&z(Jcx9<1bvu{O&Prh=0cl)S#{GFKnKWA4Qo%noe+1zRM|31$*x4-mnwnvk9 zw8kmT(lrN8xV%o2y;pqRc4N}*?>BzD{q^<r?fbQo<$Fsn`z<~Py1MI|_J$eP8Mr>3 z-c?^n$|N`ohk%4;BjcR(Yex^TY}(Uc@%H||2{ncrOnMj1UT$^m{S3Qn8=VZdt(ow2 zo`|JjZ`R8LR?nuU=>CrIYs_MO61%%>YNO#@4#pcswJV=m@XOiEXmVfVdne%9rnDum zT-JDKm+KrC4gVNYoSnHV;JDi+uCw3EQWG~M%VY%apZ)u^($y7)i@yY|&6yx;f3N=k zUrFztS6?pszyFaCwlLKw!R+9hiI0*6y?3vPx0xa4v?f*WYWDiQ*Nj+oHvI%Oj(%)^ z8r7vAt+qy#TP-Z)RyF_W>9J*z-`u+Tr^na*^s>&n9Ch(c0+--|Fsq8Mq;*jQBv=~{ z%4A+Uod6D%Ir01dY|`m`{A_l<U+(2Cv-&DkUpAjwD!L*}X5PGcdd(@j1ercOY?ps$ zvFh>h{`A?}a%aAUUpyh5zo+ok%H?V6)vRiNy<85e*jI>^=es_;t~xzt($!9t#n<EO z_hu{))VS2T>6G9>(5+nQ^J~rII$4&^IO=Zy>*5-}n6*>4PHR2bSGd6UFUVUT9v%j@ zgV%1qH|tyVzn{<D7sdS1s_Xi*n_a%<1E}1+np?l`+t&4<wob0rDZ{hkaTSVlUGFG~ zf8UXM^_<P;Gbe<5F1nrFey{2^=)$+q@YtzWJNx@>zeU^%nR1!aEk01awtV^AvRg~1 z$Nk#aU%O_<Kb^Jnx60o#Y}^0mss2WWe}A6a*T0Uwe@e^cP&ki{v_s9DxpU8E#Z|xE z`qA(5tc?}xc0B4@6Lng2$DJn5+s^HLN8|TO#972tJZz23etEq9|M&WSljq^_wWey9 z_I#TD`?VyuQLf6VK;w7K**eV;e>SEiRh&IpV*leH|D}_Bt7RCqr1ulQ>KVE~h@&x4 zw&+^EJt+E~`kgQ@pPRP0q(<v>ZARq&$6r$-TS4va$`IZCCylr_b<e!iS#m}@^X5MN z(`o^09b(V@*;M=c+fm-g{ZY@JSKt4APu=cgXWDa*^Ol8=Tuy)8Q2+nmnt$i(|9zfj z3Ti^8na(zD+vIz9g?zPT(7jD&%0K>`-v7t@)&q9C4~^#cYmC=IVsQ4a?(Xi)<#&&- zE=dTi`~7zNd8^lJwyf0n|E_%h=~cEL4lqZ~-4UbnY+h)0|9SiWHPcR&yxaLa&AcO3 zSSRY=19tlxHNT^`+}u>B(sy*lEcOpS9`}p$nsI?n7T=T=*?ckNb8YTX<?=g)?za;5 z?0e>Vqv)WCu<80~Zl@=<iFtOr_V<FupUm>^%qW}tx3DuSQ2pP%rKQW3EmNAVo2_Mc z?2_&KJ)bYl%3a5lQ@5x7{t12W_%0(7`<Sf`|N9KHD?c#ZH2gPhX1uQZ)McrqHCla_ zmp}gyeeL|E<By)yU(27iUT~(4?q>B(%NO~Tt@SU9^tYPWSE(BL*lt?z0*<h$8fVU* zpAIToRu}(%X1;&tooPM47jDv-ZT8Y>Vc~-VjU_zG=hsy|?%T|?$};xF<@x_grm2L6 z^xeDMv+CK8$>8iV`<E<pl;Iw;)(>Zj`kGYp+)m4NW<_t$^F4ZN`DWXnPbOzRWvKjk zRQ$5pW==D$<Gv|pE2Ddt&wB0d79o~-`5WkFv=WB17wvveF8uj)`ttttr#>&|6ranC z<2=j#?3i@^nOm7PJ-eS@+URQeY0tFX*NnY$v*(=v-SxI*tHkZ1wu{wgtoEww$$<{A zh~_Jr5bxIDwR{1IGd~QCZ3h(i&0ep*&lDNwQ2gv@5wpkUKr6ecOQW`|nSV9YZpD1w zt!HQcFFCV*@3*K~QI~3zeZV1^dHNKncv`d0x9;ZK?f37^xqdl9<^I2K+b>VQWEZO; zchaa$De~pa^m(4wqo?VKRR4K#adBqr8kwDeFB#-&J{;WQBo=LTtTFFZIZwt*hH2XI zg-1nSZdkmh{QbRWr$7ys)uziIo7xv$_BCJHp8`suJ+sp16uM1&G=1C6nE#-wHKG)? z(@!2cE17t+r|x5Se2Q+0ymi~hXRMR&CWf2rShO?cWX8?;YjwQWS@y4gu|-2iM`y|V zr<1((H0w;)H2vB1rB{Q*(Z~P}p4SsL*Zo$UFn4MG%%4{`-Tz`!e?0l~O<6tN>X$S6 z1U1!f`li_bJn0|Rr~CKQg@w*XFZCYkleJzncZ(A^)WC(h$Nh?*rzZvmv7IbYUL&RZ z$y~nv&&M3Ai6v&1mXTX-8pfE&?SH%Nc9;92391gMFP$Re{LLDE%((jhZGQdiYbOsS z9JjdO`?rr#SJvV5r-RMx!HpX3a$%=c*4O_2w$ya@&M#W0KXl!`f5|XKxaSzCalOSU z?A)vEJs(~wNB&Lw@c4ND{|D^$9kXvedj9+V|9|oSe_j9b@mbNXs@c)qziu-9cvrsv z_8pJMv!5;5@KjH~``6q1pFlTRec9`>?LpC8vHR_3rs+m^Ew}s7$bZEAXnuRpiJ*I3 z8%e!w#NZK=v*p7zm+d%Hp8v6a#wv37MBnS}o?oqso_Ltdem85{-Yxbk?!WjBI@jQK zX8lq>8=+2JQ1+6~luJK;q$TMTSEwL3C{+V}&7Bq;otl`g`~UMn{<;mkZ|eU&uU|I# zl#;{gFY~w5E&lUlvj4K!nA)#bGw163v-$Jk@XP$!rz8J<dOqFu%LV6`Ul#AVBbz(X zV7A-Nj&+5Z$(tR%`HKB~ymXF5;i46j|87fOa`u(^efO{}cQjJI?v4?PR6ctAP1D+G zYq!QTxCRGuoL{+eCDZ<=@v9fr{kD$|k1Y+o=qIu%G~8s8=%u+g_I-bI@L#P@I;qF! zFf_I~{6A*^F6%7+zw_Ume*CMy{ogOs#9tqY{QLQwwf=2u-RhHkuR!ChXQd{Z3wnxW zX1{%}yX)z+=u4+QzL}lBZ>H&Nxo7z^XH2;Ied8adm)`pIJ5}brbmQ34x6@!^-<M0? z`gbdz&wY6}h4<}^2NQ$C&b<Ec@bJs%4r`WV>0`QqZ|gyovAgxr=Eze)QuR^CCNKK# zrnvUL&2Al@vL5EUSI#p<{q~sJ`|YTByw7tv=Dw2s>GLYpR$u!e(Iai1r?Wum6l-1e z?H_MnuiyV~A%E?P3N7QDc?q*>ui5mhsXKl$?W=W@xb3mMX&YaGuHibN2`-Gw--Fts z+h@2gzOZR)2_s9|p1F(8K6Bb7zG$miasKCNkMrYozLw-nWUYL2W8=5=YX5rDwqGp0 z(|Pvs`=917bwJy?i5{{9b*nB2y!d$$)LBxnem*}{a*Jd{**d#xZgWodAO8GO8QjOe z*k8A$^6{28s@_hWC6m@{bvu1MzP|Qa!V{w-wyBx>dq2J1et+K8JwKn#p1nGCC5!It zth!U?sbVMYRiCui)6<*AXndDLaoeIb)3Vp^HFE}Ctkdnebfs<N)_3-4p3a%Gbsu|P ztX@3fTK>FPF}BV7HZ6OUZ2omK$4$eht6r!|-QSezt@e3!{NGh8CWvn8+r+;6&kV^l z;XRMKv^V)}?vMQ2H~H+V?d<jMc0S+tb!~oZ!9iBT6M4%ngF<gj{QiA^Me|?Aoe+}V z+?oF4<&n*nWyYVTm4<B*-u&?ElgEb+Ih}6&N#Z{2MnUlxCp%Mnr?@CsGlRn{C1$fw z`83n_trj!?e_da1yUF{~{dr}#G6RkCdNZ%&-}L@G)i%)b(&a~GOHPPry9rI-Kd0)| z%E<i}AAqj7I-%Te^ZU)_e!E{8G11e$-CH4Zf6w1<w_UAW6@67RX3hw>60)MpVVjND zKf}BvE#{nEf=)S0BXvP{^uC(&?xV?8^|hN96>T%WY<79yw8=iN&Cly`H%G>w%`FSw z@B1vUxcR7g;mfP%=2{!i+_7TyiVHC(tWM2)`zbkXhVO=_xszUcZ2FZsD>Q1YM*7$3 z%=Q0%KA*i_{k6s7X=|5qE6mO@T(xMzyVhxIMNN(WlsvjAW6f8+lS}(<=g}Kgp&blc z@7$;%aW%sM4el?mE^I10r7&S`<NJyacCw$D`E4#db?Zn2^(MuqMt>9P6qWyVp}os0 zQ_*&dJafmA<_yKP7dFa#Rj${StqFW*H+4aU%fcs2ve%tgYF$y@|K`L*<(KPx%425T z+MM;%<1?rwx$(m#v&HMf<0_Z_2tDl-Wq)kK(>E!J8*04*x7_#rYc|te*ZsziO+VFk zfEwz#ua2+Z)EA~cM>0+Lj8ehpifa-3Re!{m-@W=Y=8}Y5|CSuxScaP^vzJdcyRm8O zqlrBBt*3l;&G9bYnzL3cmVb@H{xv_B{vdHswNXIg#>zBVUI&G92lDUi*cfp`mj7P5 z^RAc6W_P7e*LIl=D)4f*-wg|iST}w5`+d7tOcuN3{JWRYr7P0v&6c9#pHqVUBK3Ca zM0w|PXU+GTaQ5!;OI#-F8;$CXZEa)OPMR!N+YvVFs?g7c!NI{Ri!VCOx^;PlfMxLR z@K41DS;b>YuZFG+y7jE+W6I87XE&b?Y6Le*wx6`|VxKl`wlU~h%ixr#<vZt;ifq2U zulBcB$^ZJhGeRy_m>qn^5pyL+<XXgj$v^z{Kb&_>yHpgDRrzx1^t!j%@w>m@tA2dw z)Z^p*$0hW3KAE)0uQ)p}(Un{6F1K#9_Okg8mj}%B<jFrhO;@{C|M}eVdygI^UA!B> zCAfeqnw7+*OB^Ebsx<w<_4V=pZ)LAvyJG$P|9_t62JQX!{{H`Gv-91WL1V(x0#s`D z{`>V>xBBNp{`!azZLXIK|2|sjq5b31^nD>$BG(n%Exo??>$T{k!Dm}R7nU8}3>yZF zIc|PcNFy#omFw#X{ch1oX-`{fCdPkzn_q8TD_C4yoE`6{?Iqsz?$WQ9H>8wL9!mH< zWl_bGUh{h%&2guH<r?)z`ThTRT;6}`BAJUj9`DV$cm*_R%&y$AHK*P+K21Sax!~3V zsn_WZf-UOm>X$uTe{MRhSN*6{ecI`5-q+)<MJ3O9$@F5zgc}>TCcVqOSG3LJQLdbI z*_w(CPOLvuZw7stNbEp4WK_Me&7t+2tMsb_EdRbNx4&C>Ty|ocfMxtg;pwMAm#f=U zeR-k9CgATXckuoF|DbWCei_S4%O+ZEl%JUm>L`OQhuZw_-{$1weW2RyVY@u2$93E0 zb$F@him)~Jwq}P*#<|Q27H)7Yi<q9={rmKzbxT9`WjtKiF6Xts-({iR?VR9T*OyKg z{i60)mPJ;DoMu^CVh|Y?c=}i5+;5suf=`uRn}u4vTrzo4>z2z;Pfcu|W>@{|<?{8m z?@|@svdc3^C;#O!$a~|Zxkx7R%xT~KA8U72ZN4TYdWjWu&|HqY%kuNK-(!A9PWilD zaKWbQ4@sU;a9S|OeL-&*18C|ai}h7!XQ$Dg9VX7|4Bc-w=p7f64AQJ#;%@u-jB#%| z=(@!(;S(9Q-q8)oj4yOdT+;XN)!+FVd%j%qewiOWMNfo(+1J_W)0eu>Ek0-Y_Pybm zsO*^+uGH2=E@^J{^b&bm{eG|c-2B-^-zrY*|8R&q_m%kmUH||6mfrI*|IWOy8u?b9 zlmkCg%kS5guexZcXt?|Rny0Tl;%_E=I^ATr`{(O<)$cqfPS-x(S~79&-3n8Fn-308 zR_cZq8{Btq@QNq>yhJIcX3I-!#6i15{T4)R+$Hxj71XXfC8ucv>Ipsm>dJIwnr`%^ z`*y!xESA0hW^VbtnRY_*m)*l4UR``sr&`Z@xz*zy<69{QT=$*7wl@0m#;raXuZ;HV zMD70ZsQdD@MKzCm&6iDn8?o=nB=1XNdHa4o>+4VPtT$}?G7;?Co2OsR$eMn){Mx6| zCAoY$`*orZ7j8^Dp0Y7#bIk*0`HuWc;l@8U{n=DftVw!T=3m8T(CUv1dmRMVXa!2h z%fGM7`n!7PwBM(nJ%4We>dm>8p#FrY-kuMKz6p1JS@*?j{f^16cRruzEgu=UE5K&P zwf>1IKT`t}pP!q1l;d_h<G0uG|97ppsj&s@$v4Yp=beh;p3@iUq3Jqhvm)q3Nzk?4 zVd}qU#IF4cnon38u<FmI-|u$o%SMOg`CZ8VX?2O!V8fqHJFe*e^17eDrYq;q&Er$= z-JNE8ufIPzIr*gsIZeCcjA^-`E!5#mQ@gKnb93*V^?TLrlb=q5j=jyB)#ZI^-@mWx z&71B2e!2Ye@lD>~!2h6G^e9DL_hT3C?XA9ScHZ*&obvm%=4&@EDp^=zuvT8z{Q30M z%jZ8m?phaL`E+WpwE42+?xNEz%XId?X_L;=kkaI8=aW4(>(>c)yGzerZFzKX&4k!0 z(cHMgqoR>>zdQ!D6~En{lW%(G&nBJYt7;G3-FiK4_Bqv4XIHB}o2S?C?B_CzKtFNk z)6=7`oWED}*){*>)uNAex9_-%txf%z0lM1q;`IP7!C6Le@+1yBDqIkdIHi~lS~a-9 zyYbY~S2JhM)LVXSe^#cSFGJn8>&w9voPE`cKXO-}n1NW`S<lRQ)<NJnp8=Ih~7Y zay>fBpJnOq|MSWI?`8Ycvv%KZBuAbVUCMoQbLQWSJ(l}*RtuEw``DYG;+gyZYy5xF z@aELy?tb0i34HQ)bFTF)S)P2nZ|UX}L6fDXzTfe<Z~43`t$DfsKfhSqZ}<Pt=gjPn z3AbXWC?9=uq*FL^t_Eo3$m#fhMPZ+J-~XEzmb>F;>RF?YdYc4~9p7>3-J)*2Q_qCt z&s#k1c_y>>%U?dD{c9{Ye_Aa6_XVg+`|KrX4(9B$OLiOA?QE^95niY%J(c8Pz6_2p zk9jtmfi}o#gMzEGvor2&?bWv_KT}tm^(>j8qr2L0$&R0^EiJQ8Pt(2s>)Q55la_&& z?U?WXc~*Siht_9x(P^vKYQ$==O}N&tH|z81xQd6Z&(`@{y<B2j{p|>AE~u8i+`Uxl zX|TWT){h>i|7;SEuQ9A$5@=l1t){Ln-C1f~_9o-q#^3o$-CDl#-QM^AeU$%iSZ%`w z8YKkfo{Ik;+U@U@T=qTd+;z}AJ(<^hzs@mXubVNT!Pp(wb<~8+vs|klUt1f!nd{|o zkGegt*X_Qv<wyx5i_@B8X4a~Axpm|7KITm0x?WQsdF9Wm@cpy;)&|a-HxG2HFKBE+ zeO|?*2M3$ae(rU2TbFwA;s!3kS+m&RgI4^Jv;v^zz=m^{uR-Ue-Q@@|4A9rrEj8Zy z@2Y2URv2%^&D7~zee|+<tS2?k`aJvA_tJkqpD&LLIr;@ucla;;y7>6BKbuxuHsW9L z^n=}>hy2Tb`sxNxP<r^<S^ihR>EqIo9@#AY+!u{r?T~*9TETJiaZ&ub`2GJ*OjK^o z3Y5sJi{yE{uw5=H@66fz?$eS!FU<+m-KUc_MX!PJ`Shb+H+Gljf8KDr9+cG9N&MNs zB{=04|D}8qvzJ6_W1?*7HPCYIU4ko;YU~OgIG6{&j-NZ%x_sSH-J+VhudCxrW#Uqd zUC-)ScjauIb~5$i>8?wyn|@uaKK*CY3FcX|X1%i5)?f2PdHw!>zg)#*L$37v*);8O z&+lzrR+$SY#&2``Fm3L!v+@6bt^Ysk+tp<<!jXEbKSGxxe9SqWz4KDJ?9UACRr9yr zFVX`|SsFH&weAqoOZ)h0^?I}Addm*SU2O7<_dUH)wD|qAf1BK%zOQ{>otrlCpO%`? z_gSK`JR1cZHDzazIxx!;)TlVG?3yVf6N?qsl8>vjp1!@ky?jo1y!M-$o70zurO&H; zraC>Q==Iv|cHi$5-|g4Ev}51rx$n2U*DktH_j&gHEt$q=Yb>8m3GS1#y|t|9&#QCR z?|rIko=kL)y4Jt(?AfzRO)nRz{BzkKs6KD+qb}{P_}Gevt-boQZ~uX|WqbE52e(<x zS8Hr}`DOb4KdCdeWE!gp{S3SLHT~rS<#-)m<~<*eNngHiHhuH&bD#?Mnbk}4<NflW z(!X2q-HnZlpC;7(|9yXXX142JH$}IK^S0kbK7GGmUmvEpcYls6_p?Xc`g*gvq`yS< ztu>r`^ytw=X(G3rL2aOkywk7c>%G6f-~Qb~@3n0aeG9JGINc{HgMc=sD;gZRd=7M^ zql0^+*0EO~KYr}{yehcWV^Qbpy>?$$`p^CPeSYzITl1njO3}KP3finM@9256@wi;~ z@6GG>{d%Rp_rEY_Fu(nuf;)WMx*A>I-4^z@5nLJc@$-|({>OOpR%fIv?LQ*&sBhb8 z{rxuU?q@N$r(J$`cXzUqVUHPSu=d*w2JnRZiKEuf|IUw40WEAO-~apWv~HCgemR>T zpyKu0?fm|d%}?{vr4P)wT_PAhFSh({sr>I7$EDt@=1u(l<G6j@->=t?n>>!&W5&<- zFI;fSDhcmi64xX&9^~NpHv!s2Igp@~c)mI^BH~3|A87h<K|PaTUzOY=6H=GX&Sm*k zJ}>e#XaW6h2iM1MzkK;}>-joXP%|%9;ZUF}^U6dLTT%uRja%nOUt<C-s8=_b;c?@0 z+_B@wf2S`3ElVlUH!w51_E})LBZ*zQS1K3&{!B3i9okXR`0Cj0n>TMd7J*jlT-|C^ z#I#shAi8wIL`9~HFK)~te!D(ok=ANqi6@HbwV>^DOPN-8=cHC-9SEOsQeXS9w>cY= zEGyfbc(KM6k0(G+v0{PrmI%+%BphK4oAr7jXw4v-X244U+Y{Pno=gv|S}F181qYAO z{xeTg7jIs7hO`CM2clTmW~wjJ2Srdwg6_xM7w7ptaT)(ib*{h5=CDAz(ec^zoqN{I zHeUo<;!CVkL34Q8XTJu3PP=FpSy44b?ulqxbB+ElCD4X*J^j_c=JP)$ZR3Z5LF1(P zeP-ZePZAOiZt$1o{lv9dFkWk!e}jY8gHN06TuVvZK(=DOLzPG*DBGk8uW-CFcm90+ z*{ePZC<Np;a#)*k%v<IF@(0oJ({Lbx<yGyzTW>f7R_p?0sQBucbLOo16>U(*#Ij0N zAaVKnL|;-jQ(W;}5cPa%?=;ZKXDi(I%$+$?a;tdyJ{ArhZv`elTczcs?#VHbXiSu? zgVvxDJ}NQ}`rO>ych7`_b||cIRd71Xz%)ybl!#{G5Lhw!K-4*d>S+v&On=2z`0ly8 zr?Pne+AaPK42>M7TRCT|k#=b-C?w|`fo$?&6Xs;UeEQ3ml9?-edl?#6VcA3RzkhG_ z--%0hy+8h6e8F6I8>d-<{1pe7%UZWgQr$8ua0y4G*sO^Y1iF&Wp3s=od*h9ln7FH$ zv6zI2b>elV<0{@J&B96S&S?&2eoj8?Ir%o+;CYnvs323?V0&pqgxIu#-~a6Fqx7b( zT3ubWZ1wKfpKh`5Shh>=`JPvEl2`ie|4mE{bj5SQtN5j1bxbU;bOV-uG<&sa=g!FY z&zF|5aQJvBv`wGIJ7X1z2jw29U{U+3oAF)Mq2Yi6(_=}_<7LxrtG~^$C`_8rWepl8 zZ00_4z{uFxc-z7=y`)FzgZS7o6-FkOWBLKhKW+=2&dko&GykG2r@)Hs4m>(vrFE}% zkT@Rnk>kqm*VnSZhfp0e7V7({w>E6`tMjfuIR!NO9e6a8<&NCxBhgGN&MD7tU-SYU zB9PZ;)w|s@HZ3j9Z;r*q*vM)Q0fh~*jS@ad9-eLD(!}Ruh!bwCJ5aX&*c;HnOg+H~ zyOX0r`|fW}KW`y<x0|7H7uS)5ps9uamL#@cHI_TX?$28r$HH;NdBGgzbj77nQBkXo z8wYVSv8bsE9QIH=Jh7XY1cjvLLQ11&t@5o}P+ivHu=n`$r%#_c3dlG&Ff`^hN;tf- zby_7$xOPD)>K+Te__u45E$G0D{sR?mhdA%0mX>a{x#i{5;1J4^^kT+?15dA!7@$`? z7iisI9OlQwGD{PbqQYa%%*|*2EVw$0p>Zzfn)U0yOZmSctxj-gI8eq~_U&j|I;gU> zVY)4Qc~!-qD_5p;+^m>2dAGodMh6~o!;Fx^HNj~lwhvBe1~ltOt!83mG8NN!ej>7B zrOTPDJ8hx84vkEQQd{}=>yg?rYP?@r20ATDMDN0!z^Ef@J{)`8#FC|^5OZzLfA;{; zrZc2CbwG&@%#eO8vf^g=`p|ZU##x*_#Wr((>~%Slb*(D29qc?|`9-1x3_vr|A(oZv z&$G?mf(i}`3L1Cy?cMuIRB&_H>QIZt+(HTgnT--+Nd+%V^KOth55v%y$fEVPG`m&Z zVZk@1!#(*|ZOcnbw|?^vW91Z(2vA^adDWNZ<wv4pf3mXu$=iIGLqNemu<=v>B4w?G z9XDNW&7Li!F}tDQX2-FJ=_Kx<RuI&<{e8t$&`Ii<jVT+l9vnN^%zjy98>c|VEC(JY zUYTDZpmqXUs6h$}NUINBs?m_!<n8KPufS&w9kWrH_O{I1+gsgl&WdZw!BI>sZQ>n$ z@^|;=C{OxCLcD`)3Gi-wxS#1Q=$s6RxemJQ_i{tC&d;-bTUK3iXq``k!%db&r`?a= zzvl2Tfy6}5@g`zH&i$2Pa!f27OIXWnc3gdVWaY}0XV0EB>CR<hd8KtBYwM!Z*E3my zLF2ZhINM7v;QIRX)!-e68b1ZB&OKVYZr!!VGgq-PGVNvIlee=u7kG3piItRs0Mp)m z4|D7pnOIIKBrNdb*3s3SYf-p}=e(;Vhk!<y!mhHC4<+^6Nj=rM@gs-G@3$G@$_@<< z8$mUzcFFXaGiRPXdp2oeY%fFONiLV=ed}TuHhKh-Sp2V;d?00iz}t7A<-_1=^}sF} zyP6&QXZv#stmry$>XcVwb2BItl9VA5b~A<k{I<17Na2D{<J-Q>vzB#vdGC&N3ZKmp z&GKC!$8@oEv9fvkl^_xe8J1I;0sZ+It63SDN<~41;G`g5U*EOs*I)m7akY436}QXt zUcHz}2VD$FjJS+V4tw|SSzE@!5fZ!L<m1l`rSTCF8zw|vy}k33xtD@fPRVUX>m8u{ zO{g3M<p;PLgRDlk+QreSoB}K699VJuKvj%=m}69Q^y)i@Llc;IMJ#H5Y)C!*%J2gy z)uHHw8-bP4c#Fg2!|J=Md>R~DS+b08^et2>E-rpsw%dt6Jdo4GOJP@f$t6P`);vd& zqOF0UF_+Wi)#|%i-VF{<S+<!ju(Y`58WkD2@=kDA0@GIUj=s#BM$RTA*4<A<R{S;J z6*_^T(TjUZ@e`fOm1${dQES7N&fk4Vctx*6$*~ucROL-Xh(B}~oY5QAxUW3>eOt?^ z!9kaGmW>^M<oBIBcb4srJsq|%h($|LK-OT_!wIrCUy=~8V4q2Bbx_^6aP0&Z4wJBi zE6E9O*YDr7sp!#>&STr;Mb!-i8()-M{F-IIX9cO}LVOjNapL>ByP*CsGuM^mC3ACh zmn~a%?b<aqmU0P3CTA{}@@_x#n{n?!*%5mo4t5}>ltfIz3H?CpxeSa<%AyiACdDcB zjWcITYHpsmEmT}xAXdjJ>i@hKq~<n`DZU4`ALJBJ2uN$()H^d&-@hgP+V$(F{~Vdx z>mbUyDB5#cXl+GE9chJnujq<L+jmTz$<X+W!=$W0F7xQ~XV0S6h80ImoFybN*P&$T zivZ=f8}vx5gBcnpa`n8EzP`?<fuZpstD6;r*`G&(T{myskoYILlc_O{Yt7oVp3_Wg zL_%vxbMRMzjA!MCK&`@699NQ;=oagyrKKsU6+b%Cxypp|sfs~l;|raOsf!*@*%_}b zjU$FI;|waoCO+fM^euNmQTLaXP5!KmWzT^tSFW5o)iovZ|FsvF+qhlWJM)C*rq0;+ zEQU0Pvv5rDUGVU}Xm~9Xi<e%&Hp9)|o<>GRWo^H$nlIYro^XcgqUNIPEBk)0CN(9W z6_NOCzU3~cZ**HI<Jk$Dk5T$MI$NUF=Gtnq3$Iw}P}1^(Px$>LF092Do*-(x$a&?{ z?FU-mgKpf+f9?D<jR|znT6FYk-{>GgrrSat$K+!ZPUk&hAT=yPViTh8Z!I$b^&oWu zz8Y?0dpdvSOv{=dA3BBAkNtUZx9@-p%c7O;&HZWd&F5BwS~JinBCax#a7j>#zgGsz zWIP%MCoG=L_{gE7tDBpX!}H^TjN5`Dri*(PPwZcAzLV7B7FbRx2kcy5uWi7{)GMTM zK4YbdY~#w6E1TK*^YZe{R>`i)>1ADH=svlxZEZh^W0?*MW-^)nJGNt$ph5t1V_M&t zsVlzDv#sWnx4V<KJ^R9$kcEv*7fTj1x*M-^DG&C*7v@)mZfwoI{we)`(&8x9aEzn$ z9gJC}eoQS2RdZP2#B^3>=IYSbt*xzFw{8_y_X}AOtC^L|x@e(Waj#qS+PGzSH&3rp zy5KoY)%e6lK}%!J&8uweo}%wgl+wO%BY(zf3r41?0vT@}#O&<y_x07))!iDk)@zG) zYt8}(lXDr1E(T~{-zhQ!Pn+36mBr}frY}pDOo>#Tx4=mVEj{>(dF(&4(YJx2aTBLW zWzD*byXk3Zd~!BBcJ7Sawrz>cS&@!q61+yUQeCa5B;kt~jr|VuQzENo1)W;+r$2}j ztqs?BjB82!;~SvSr<*KN))v<nJes@U=CNaLH>IY2GI3Opidz$=78ce#(M1$bN<F1x zkg!R|)?G6->>2y29JET&A({1(enF0~g2RFwre4`O*<l}BTU!se^KZZXc9W^W)0LAQ zOg3bsUA&QXtu_SIDM8Z@4@3t}*0KpY-sk<iW={PuQwwxZEV836q%?k6Eqxo*kDu)@ z`S|mwYqjU+*|PJ?*;IYWxEVF;Q%JbNtYDK>8Btr`7-_lUX}&DTVRBYGeJOZyP+DsB zj#KDkRVHBye=i*~1GU7}F5Eb{^PA}WS+k;|qN1XsyMH!q+G_PwbH9Vh><pWYA(19a zZk3CPq9-C`X9oy1GEGi>>FKGtd6G^1QM7cxGD~MdU2O7f21ce-;fzl|?#$VB{8X^E zw)X7Vvs1I{P6eAaW~f{Y(Fwga=b)o6TI?bhhF(eri&7%1+=5Q6Q8^!ls}Xx3g%xx+ znnTH#7lE&5Elm%S+AVulLCV>rGecr>?#y?7_(E+aQ?kdjrO%z0o|$#?%#~U2ctd48 z;W}az>h0~Fot^!*%-VKg!tQ%aA9p-nczp48zsS7(8$ib;;YtAqDp-!q(ed_g_L|xI zTyQt8!fwR`P&Iex(4mKi+mlUKf7#OXwu<9Oa&NnIzlB^$>#U`V(6bw|g)5dGV40ly zk~2VabJRAyskqK(Zsj<0_AKZ~;N)awHIYl7xwoxW65!X9i?=yaF{RanQ(O^W1(i_I zI7#L7rO)$%(hl2)g`>whEP;F#n=x}{XV0Zmr%v6vHS6lxOP_U?-s*D~=GTx5wpmk= z@-=UAmOH*UDPmIfnYJ|DX6YHN>x*y}NIn4ykG#3Lxdl_ZL^qk4n_r&Hx9zyHz?(+- zeg(M}lbbBRo1*a*GB<)2JUO}Pi^%dRH>deuW<(B6WS=>#J220-deV`|-FN-`9d5|Q zDR@jai41sd$7GEs<#GsU%s${TIdvjycl}|1_p*3Jz1@5E$h7LuUXFV-K~$(i;>w*n zcMdkQTc4gIYg-laZcTNZ+Gh0*rd7hK+`Aa2sI3l|9Ug+O*6BR3Vsfe>zxCIf`)^Dz z^1hJ^?i(OyDp)i<6$eGrjVqTf1^E=OS-aMCPF8WTvGC?qf9D52T~QHY4?d)E>7Vm{ z=mjvUX*YrrmYm%5<K(FsDLo01yCgoQzmd7fUl(;+$2S*L1YiwViMb9wl`dzr{*^9D zH~cI3U#aElPxD19Cj_$Gw91}P+I4rO>!0nyO5L|o)vDZ{zr=qaS5IWZm6Mxhl)Z^x zY?0s+ygDfD@6%c@Tq&$4_`zn8TmS#hZ*6T=IdJvn4`&(O|MlBrG}dlj6Y=ll{I_TC z=y6RDNt?s;4qtiO;INWKZJv&Iw#Uq+rl5)fmwh-R030w0E=<b4)3!#f{c-X1ok{-w z{`&Rb^v#O+JA@y9`ETA-f6eGL>vnv_3u-}yYFXnmjvlK>GjsFl-I9%)u3o)blBe_U z%~YfAZjYHyjcyTrZxGm}Nd9Y-<>)bq+_rI}Va2AL4^tvz%xVh)Z(lRI?fAQp3pI5h zXC-`2Wn>B!k;vSXlbf5HmZmm6wXCeHwzhUcK!l7K`|~&zJ-O`?Pn2%kx}DMyzvG85 z1E9MV**UKi4GyM6uD*IJ?}4`8M5ER2hl9DvHA_vyU{^|{&hM?8HeJd-yXoi8pRy{a zFL`dUu+^L7EpFZ$?ap}VxcH`A-OVut_)7{rL9}8TC_4uS2k%tq?(TkDwtK>s@E8?6 zQSmc-14SH8>4YC6J1nHMLGE9&SLu@Jyp%|*h1*h3>F{~T$Di1?^^DZ*<`B}3K7vQB zgD9)pES>16s8gmd@05seuJ`fL$=kSRkIeSdx^5!*BB>LMPG8+dc7p!I;bRaf#<|8v zAZJPaH~t#WnNyehYH=b*GOT>Vmk?lT7K=&5Zd!9SOIJtd$+Y^aDywNi(#4x}WTRg% zIkQM&=h5yY_lK8{i*LGXe`{K_5ZTeFV8GQlQSJ1zXU~dG%S>E%_3BlpM^UXYDqNSf zQ^i6j7@e-|D8pB~<4GY30kMr2RZp9lnXQ_n<9+<{ujOYJ1-)$MzPW8$Wa;kyN%(3& zJjSkAap1+I)a>kRV`Jl;I-56de*OA&>yb@vRTDK*L`=7H1#VrD@UVP3MRA$Lsy0<8 zduvqd@l9@32Q@ZKiQJfb9(3|5zBUL_DTEs7Go~Eqn3THl+qF}tyw;n7R`6<1*YQ4n zZPACo);sQEp?zKMUoRi$-w(==xn#%WjhUcY9h4!LM#aSBY`=Z@`Px$jtt&i2)VI$H ztkv8cBT2T|GuD87FmZcVK&bGf)R!f<r)h3J^tt4k(d?Y>g`n$JPz!fd@8gO~QBjH5 zO*xsFn%9>UA3tOq_Oc~ha@*pj)2B}d-i&EEpc&(EN@w~lvP+R&pg8Q72$B30|5(%c z|C#AiBFi^#!Pg;zmlRkSpdl-b$ZJ_!#l*ylyzOjlWxFd)wIZjTTVEQK);OVCIKy$e zUEPnj|8{P>lXQdJ>dRp-tJ`#)*|TS#UfLaS_0_9a9~xIy#VBf2Ej_~&a7t%8=S^}= zJ}`kv*=t&EPL9X4T=U=8>{G>-+}@k;|MA*Xvy}UVR>Z{^db!p3imOK>a@)3TX2!;o zPa9cV@7}lXp8c06mle2H#2jegy_eLv<V?}ZxA^*Ncyd%gcw?u^>8Q0~8xO9iir3w- z<jkvEj8{Qdsi8ZB2<IPgVR4(N)6KdeEG(>QZKRpKy?*4j#~LvgSQGMsIX@)u|B;Q~ z^V=nR=F_0tWCrqrS4@k&r}_H&K7FL4r?>6)+jjz!ZEuTm96NBvm9K`P49L+KsB&8A zqsT_JlbhbE9c{C$J3S?GW2Rm9Oi5c<jX`3dghVB{oZPf@>C%{K=iYYtTJj2?SoL)0 zK~P`d%FccTIp2-{g3@-LBe(R|*nGfcQtCw4RjEr>w@iH{|9g^=cJciX&|$gc6c&qx zC0yavVI`<KygW%~wg=nV$wuAo6Mknrns~HXdqcus=iHsCc>BCq@-{s6G=Ajh(Ev9} zqyKf7u3fiIOd`H$r7ZW6<`+|qx{s@;PP^Sec4FoSMWLCQnab%hnIE%Gbp8!a`{=-} zGj;2kSB51kSmBN!h2gN2)or3qbaeFWnKMtO&YU|pHa=e8VA+$PR_-IrUB{>V{_$wz zvBSC_`Y4G>iLD2IOio=Jw)#NEB=6o31-WTcZm#&f;5C``x5R#jhbK2hv}UEIF1<c0 z_4DV?lTww>Hub)H^zp%?k5A1mR^0h`;qgWB((>$?Pp!z#iyDoBs;8GNTUO+~W5<pg zdE2{B$?rV3gyoUqvBhU<k9>Tw^h{Ce8*&RKxyD12Qzu$>B}`1Yxx^^`@&5PIG&eJC zZn<Wpeg48i6&yJ+L4;{@{SWc|h1=)+Dt~cdVc7lp=yUEz7;E(}bVV=8+abgH!#Og| zJuvt>K6e=uf)diSY14{cU)_0q+UKgr=iPQD2QqyuNIqpMSCYrv(H8jN@^quqt~lGW zQ^FL|1gs+0mSpL8R*PD623$GfzW%jK;N&Fr#4ReF*RmHa*>c|XAfAFnO8bImwX4VS z>sM}+eLo%&^*<%D@%yd3n=<x(jsH&SYi>T)XQ_o_bc<JT#=LobGLh;o+ji}e3S4vc z?Ab!U&?yh&AboqLjJYo&H<&D8Tmd=>8HXDjezJ1;PdobN#-T$_c}J6%>7<=iIep5Y z-}0GJNl@C}WnPO9x@^{5<?&ZIcc<=UoNb5%kH&LJDeQbQ9VZuj{ra`ybG}!`>7D%w zTq_=MZCUVIg72ro92~v?$8kadC@w&aXKsOmi+*?>(^bDH6Hwil!L~Oj?PA4}Gex`m z=YmyYHVzl$FzqgXKX3m0{*aJ8xAV8(-a7w*L@{f#NkX&vgyvm2{_&MKJP#_uvJ?U; zHsvHIJ8#N4Biuc8U+n)WktWL*Wu@zGmg)&#g`-v#7WcT6vhmWjXV20C*ME#nFKA47 zuTw16xjD}MsrkpUMGQFH3Ud8a0Sy~iT_64Z=FOWko=erlotfw>-0@7XS7rN0m&IMn zLPa{JMCxtA<!6O(g-6~Wne4^Rcir#q4&BmK75m=mDA$q2o$Mn0nsU>QMCN(pOtk_E z4hqT!&r)XIJeIVaBfDm6hL+*`nVIY6+Alp*6p1r0w{joZ{fn8M?}-25qy5{iR)j4& z7TV1&-mfp0v_5nCq1!#&c=|UX9t&=yMEdxxU9;v()aIPJy0}eijs;I%ygCXrAieXh zmQ=LK&PB^MKeqblJ@2As(fd?f*JNjOIPB5tH~-wuCu_9Xc-PB*&NxfCY@0h3N1nMz zU0NK9yWe@iTS2Wy$tyU)Kt0J0)V|*y4Q}5H&rvIWEydv?+|@Sa_JKtYJ!d{Wg|p?! zCURqMb@`h7t-E$*`7LMLtkoQ@C|7RtrQ*v)2DTh6K4ly!2DCu8(P87sO*2X-=}6a1 zIycdo%cc7Dd?W3wYqz7)OeJ39x;Oe4$B~wcZ{FnmkxE>X7J7wWh|iMy!IzU<F2)_l z1bmgG+LoUE^+i@5_o3@rx}YSUnW-thq<Hb7Np_RxdKG^c;&Qp%b@FVS@$8E_-C5N^ zX**?c4Z5sY=b#f@`r^XEvuDo=?fW0TB#6^Rx$~vO>sg`OH)~tstY;yKEPkiX)i3d} z+?VbDsHRSnWch=mQP?ZmQMu^o(W6(dh8kOx&NY$D+`H(e%i~V9E3cRTm%6<f&uB$} zXk!wnV$DuWRNVgV^5x4PrQ4pVx?9yhe{`2=?vzNA{ddwN&zef*evh=iae3#&nU`bI zadhDpv@mV_bfuA*y{pQ9Uvv0tzm@YHOqOSah?#09)`zPw;mX$z>p+$9&Ye5&NV{%P zuiLVrPB<kiM7J@c1yq2QbkDM#Zgg6f1xMy;{KRqQ{Q2Y7pUZZ~uKoVUD_XZPBcYv7 zw(D5fylLxkRfC|yBopLwX=&+6saI!R%r46Oz5L7~L-8i%)M;|ysV$HiG&dhO!um-3 zMpEd?uV249#WnBdXw2nwIo$p1`s;KC^?TMLShRo&O3*zVCLr6OBL;1oH*bEXvE6j@ zvj>G-E{}WEX5B7X?CE}3Z;3%r+Rj5bn!5*Xuvl%}boT67r+d}AIT{sN7in_M>RtPL zw;;}Bv>-ZR&dE(-t4*K0nRJ=6$5BCQ)s)EZ5sCcRb%ew!q_v8Pi=VyTleq4nZkd`u zukox5lPjyfn?A+8vNgnY!GV;>HOIGXf)4dn8c(&J?NWS=g>}(Ix65bWp1XKu@j>^^ z^7|^T8J!lzRkn7Cc9`E=y?XWG{nyG^nH~#vJiC=WYuSx;53|rB0UDwX4GfLPxJ2gZ z%$_yt)X^S!iJa}XAJ0rH5@%X0(7`5i)?$05`{wCJr>AbjQLK3>ZK(eK&bgg$<{HVP zJWbhsjtaB#Odez$Q+*lGg?lN~igt&_lbdE-=q%_>xhe7N+?}LHOwr5EaLt^xeOjb# zTjW-(V+{w6ur6D^oL|Ob!_J+SAI0BrIV=!p%s6v#$>K!+J;j;`KcUCWf=f(C)lP$& zTBcUznkw0s>o>g&c@_U(xz=leMq|c})2B~gJW(uNU()3iwQowK-g+GMo<YZfM~@!; z`c)OEe=N2gw8*m3U0HsKz6EHdJ&q7o&^0)h66unB%;2nuvAZYhd7IB?w%@DD<}okj zW|D3E_fubU^OF2qSUt?pxRLY7F28m@S*i0Ty+4_lgvC3S$?@JRN=uebyn}P;{faH1 z&<$I?b;E`Us|AbAH?FvBv0SJA$6<Lj)rtDEe~82xa|`g=&8l7Bc^b5grfvGmJ4>&3 zWqRswz!7D=qBG{sjg5_!{nxuiTVTZ^2a|s<n0nv-!__o|tZmHMl#`dI_q|MT-OLkH zmexd8s{NQ(^XVk$pxWs9e|P`;_4<Cr<KB-`a)Z9VT^C!@7^k`Ug+)->PUm)9;Sauq zMlpZk?)ci<&I_WLE($KP=DEK-26X=c_V5po22CSNOG~GEPb*d1{N(g0<CW#dWy_cR zK6jYk-e%q=-&gzgW?i>W6^mVYy|elK_Gyv3mflpuR*O1JW)%|`zy0>xgZvq?o(nj^ zOL<HxQvz@goH=la%z$<4Lg#|Jb@Sh-OsTn<^7nGNzkPRx0qDraUzacD`oG%uH(MlD z*~%mDcqgCe-BtfzHrHsSPCK2Ay&*D7A>e_}1%>=2vd#;-n9_n~8Az<cdGy2t?SKb0 zN&i9f5?Y5{f~=xTp3O|(_w`zIsz#{s=?QgW7cHdc>A&96_(ClxZKv{79KpZAxbfx7 zmshV|<v3?jY~-|-GbdcZ%DZId3k&Plh39Zh2(xg6crRFy66v#P4Xp9CPvzvMb58=T zE~~_EyUV#Xso&qe`-SzVRL*>mVLKmtmTY;EcetKcVcmv3dt{m&-o@goxTH9a@XuPi ze!aT>{9FNr4Z4jl?Dp1)ZeV-dtc81YqRSUNxHCx)Jh+qVd%5S~gOX*Q`*L_5)aFgB z6T8^*<g`)P#o9%}Ps`T5C<#j2X@sLXao}*#SQfJX-}Fkxcm7PGLLKW=Qqy8^t~<|C z3kcbyGf7`Ce`VOFHO7Hc&zY1yKYg#_aWClnmz(MHYhSHg4%($#^W~!ZVW0fHpU+u? zb|`DF-y<~Lw)WQ-gXvPwcY=<R4|-F6zjphC=>PBk|I0tF=v#H(_WP3G*Dw3q?_FE{ zcE=p&d*#usGXEav2B#ffZm~9XT3-7$taHf$nT;=BW}e*iF#g<brp6wJHK}5AS6^yw zK7@Nzz-hsOl$)0>1?goz7dyN>*66e8(SI{%>sP;CyFG93*J~ZKORv8^CY|3?a%0;m z@L{H_R<C=t@77WA_?qjn<#TN+jlO5?|8;f!y4~+~<=1|D|LgVo{r~^{F6Qr^yMEuV zESU?IM*n{I=GQ#FvNCutU)`6B?w6<k{rkTD{_7Ls@iiYmJUpB}zqX9+;h)dvL1%7C zo4+khO0So=S8$lu^QZE{Yd8O&Q0_l-_N?mlKkNVhTCeQhSMz!HebBLC=dIuGNvY2P z9b&rCc%8u3*U9@f7uEfGx!n2Q_WG~xe=|!~KYjZ2MN;O*6zg42KK%7NrSowM)*`V{ zi_7IlYH4ZdmG`S-=Q~VhUDWM4GqkWG1m_+T1(svebh>N2ex^^k^mEhZb5`2d4*dFF z|Np!0?UVNZKil&MZH@S?GkNBzy`ReWeV+TpC~mGc=(KWw`I?Ka;<bN19^YyH_hWzk z96O_J^D7>8-ce3YZ<#cyS^3kqTiNSN<s~O>2N~nf_j>Eb`v3pzK5mKlqFeiDWAbsO zOQN0|znr^K_u(M>ZsnYr$&b#1j?=zT<i?VJ{QFzIlS{sR>2L6yS!%8V+Af7z^j%<S zoWVIsXZDrV)!%a$IFxLUv**0g!ssrGHAR8i6sI^v!1FHL+}t~__TPWe%@V9SDRu74 zwI%!B^cbJp@oZLh(d(;wKcCWG|3>u3tC-3ObE1lFg0_|C@Bdp?b?oij@_Uxw?-WmF zR^k@ZZd%Ikv2FdnU$35QICm^}``u|Zv+n))aG3x5ySuYxYCvZ}eLAWBk~ztG8nd)Y z#nqi2Q?#x{o{m}g`8nvAZx!>d-m_=VmTb}e`C?(aoRmt__Z!Lmsqc(ZEdA%(?cMx4 ztt+t2-db~WoPED!tf|$T2~Xe1r+Cj>#*4kRJ!6N%)@7M(HMMU`m{bK{oLS<t=eIVV zw#R-@WejSWSG(?6+GXE1^W5~O*H)iDr@d~6(zPe2=5D_gwqs3kH|UggC;ykLW9xoC zeYv|lea)i>J}GO8Yw`+o`0}>je#u?;zWToReZ6hUTSO;r{9+iL=dPiD?o^EWzcWux zSH-G-N^L%JGwJ8%FS>2|=>hK_?0ac6rNG)MVf~cIl4#A%alIF?FB-n$oKRL~rpDy; z<5$!~4igsztAvunRXyriSkpbIWp%}8!HN{nVz{%DQs>TG6ZdmdN95Y|>&vI{{C=^x zKd$QK(!=fi<=cDN<!d%nyS=%YKL4%VC+qt^&wYG+{PBZ`uR7DTe&0M__w9K7pW`zR z8#QjNez#M-_P|7C_g(M5embqcy#Hm+{L*WY8~;RpKRA=yjYX&S%*x>9yQY7+wZHy9 zxBeahrot!H@ArQHa@oIJf4Z3CTF}8UwJUG<eM%K{cs=FSpU>z0yQ)4O6+d38x9i2C zh<`dc&N^v#*6siI>q*0nj$fc-P(EI)|Np(doa@3)*TAQD-qjk5>b#x*H#qI$#CDyX zThCltdj+(R4Rhe;l!Ac0o!OuM9^RkdZoFjSC}CM-{Oy<R0V5vqQ<ymiDq`Xb3b9+a zZk;*fvo7urOMJ@)E!*fRv-P{@gr}_B_4@0R$^L0FN{XVD8^284xag+*-;44~`MbA- zufNaTdm-}Ii5qo~I@Kqw-uvm4_DlcbaMj)K_x-+fT;=x5*DB(BKAqB@%zV!B`J9N~ zIzKhcb}^TL4rcn*kn$T;AWVK;VwSi6@3$wH&$&&~KP@A<Eq~8Pw`UK|&7b)rI#2Y` ziKNq#;xZrh?M&5sd+x=Iy>*JlyNXL*DSGRrPRqRU59<i#0T-4eqZbzzIy>+CRBFY@ z)XJ@+ukZeS&WQ~VmSJy(feMAb0~M1}zy44?^RDJ*Xn3rs<i@zo9-vbnmdykm?eMa> zU)Fk>ox-8ixv8fw9bdBj^33%XAEodAaQpO9eSXcPIAgu?&`mSuc-_~#x$o_^+ml|G znEB1On;SPzr*^T0LReO}>g`FFlOIoXmpd7w_&5E?^h@mV1qWGQsvdiE;!e#?&{ZK{ zT#ateO#cYV|9l<x-1_M;#S?y)O<y8Zy=b!6%%#$+a<S(5E1nAX7{32%-0ijJNSFuH zSFw(FH?wCg^JAX43uh}sRYXH2QcPQTExgeqcXHFYo=~;uDYGAXozHds0-7@Y`=VdQ za*~X|{J654sV_k%1kP8R|159M=X2JeO0LK&Epp@jpR@OS+I97wnH0B?;U?&`BzBeC zcf04NGR5=T|0&pI13D|ZC@&}FQu<3}>)U~s_3J)%pVUmBQ+TXff8Pu{o#NdVpN>iA z`^aC|JGWA7=g&=tPD>t@c(U*A(zO@nz1VOucXIpGdmVXlb8UD1F}S*MTI4JoiT{{_ zz-LEL_j1pzQawgc|8iZH;%391F5J6bN?5pjz^$!SdU|@--lrQF-&{01Z&&8&ol6$G z_b;ox<hc%Xw)S4G8~bX18?CN-8u#bb>h*qlGdQzy^YYZ>j~)XZ<h1Y5Y5o0kYJTlJ zU;FO&{r`2J(#r$hfle-|m*Q?zoqkGZidbmH+pX6p`B&%ODL!v|k~R79z3TVA@-t6P zKWfUXUhD9^>{(>V^V4pD=QNH@`~FrhOY}Qv=hB?Il#^v8m71Gf4zq#EHjL=>(i5=P zG<)*CE%c-Ab|c{x>l{jM#O-H^_;k_jBWCFU5ozS&6q%&c{l=5UM{26hYagejn_Xw- zgs+cWb*3wM<F6aP-|xR~`QxIyyzllo(Rn+UUU$9p`*Lc>W%<e{6Q5iTUhX%y`rXcx zru)Av)jxVD@#OOFcgy2HUHtd=cYOWduTRe3@X#+4O9#~xCzo$L5%tUJc)z^=@kgMd z&Z9`R{N>h<cZ$!eiud%+&fjNQo1zxK?dhY`!n|V(t>ewQiuj7|m+W1&Z!c&qj>NLQ zYewGXT%g6lm>p1!Fok6;*REf0uk3yu1KyfE*L+vO#^k2exX1d08lA4mbp@RK^r>jQ zXYbObOBI9FC(l}W^V7bUKEdB-#qag=Pv5FEbLtw_vg5MlD(6+rk{mbk+x<{5N~--g z*RJ;0!ge{Y`BOcYx)$jCG})A+?my4ROSE6-=L>fGAC4`D^maUGN;yAK*?p4oVuqJ< zZpD`0omwLzectYOPElBn%P$?F;@VSpe!eK*|2x)dD)<_l;LMpdk;{T!?pDA3GF|ZK zi*wU^7tJaBuKRxWlnrds7bh;ZUM^q0N%pRN)RhUgwx3dKC#^cUHwPmjfTQ+68Eaa4 zx^8q>v-sCl7g8Eu9J)Ah`|a<txOc=##4MOFCG!8)_N<vk-s#<!JU9L;j(&M2{MVW< z{|?TNeRje}M0>ACq|DDV#^*~;eFI%TaCf)4<#*6c8*l!f-v8%x%K4?!<7Tn!n^*N} zWlH^bquk7vCmY`8rG(j@esa3**X8-&)O-DnLH<hRyOGCfeLVe?<%!zuI+dz?H;f|9 zo?I7tRC03D+^wFV4bqr{YYE<s&h31mk7Bnt2`Ow?>QM4rclRD<uy3(8Y7TRV%rKfg zZ{9iGlZOsDt-gAzC~b)r`x0gEi8jA}JnrAF^AmKa`@>doHH*dPrtkgrYW2yzNsp`V z|BhSUvVPAeuTA#XOuI#oC;bPVyq}U@Wx4I@)vGD>YYM+zbeCVcdZwEP-|cs9YTKut zoc{OI^!+~f4a=>Ad46t+St|Rchfn&h+4n{_^M2FQDyNGIvG)ocBw5Pd-`l%$=g#Ko zhy4^C7Hna<xU$;!=(NNefoxdIchHeQa!jpD&LkaDb@JT1%<S2-XRjt2d8g01#9jAw zW`0*qq|Vc6CQ}2SpHAZ4bipsL{ATKOSH?vZpxSHG=PvDaFGPO)`1m+*Udn&aNkG3J z{{WZ4=Vs^a(hS~h;#72_%-rbZ9-n<{taYYoI{%re>GoZ7CiAxFL+3uu1ZBy0i^5X< zOD>f>_Uv}O-p6N`;<_esn%Y*ZyH*<yfyN=)|8#Cpyw7Ysm!VOR)8%>}U)+xc51Vk; zzC8yjg3_d=rIlxeN}f->JaK6RE9mk%*(dvce}C`4<@b}*pd0p@Z~ytOUjIoQ)Ph*X z0~)6)+MTj;Q$(58&C2h0%gg;bHE#a-Q?u#+iHXV^|G(XSzi;!Txy?_ut=si#Rj%lt z)A9d4ZQuX*ZOO*tll7(d%?W%~BF(WhZ+^+%RhwjGgE#49em29Jv;tfkAJ(g`(R#mS z>STvx)<v_!3rm7<_N5jSF}W^1bM5-|^z`)N)%M25o40KXyI48DWShoZk=OBaOZI{8 zm$Rz;lp-U4b6rG?j_;Q*m;Jx*Ki4qd?(3D{m#0BDNA<a$1(znzx%Kx<h|!XD>lVGa zDCBsbtaqP}*K8SiX>hgbkR$TR#C@W^w5#RfUoXuBuCA}zrz00%a`Fqa@3zI<?(Tl} zzhrZwH{<Lm3Ua==wKcoAxR`x?!CWWMCeNs~VI@BWdDZlAUsmVAEi%=po3n4$(lbUk z7j@+2TD~rMb!8>!IP!;kUo7fYdVAIK_51(--cSC!@#EzAe^O4b<}Gr#11k7^*U7A& zDr;Y7^V2x;;+o=>$K~s7erjAwk+1pSXjNEtR5aY>kxudDFPeq#wqB2$ZJEGc-=_qs z7~HNJ<u2IubJM?*n_ld(uIPIita5tNyj0M|>X@l&u`p;FYWH2g{qwf^f-Z6eZ8w*{ zyW$b<Wz>yZ92zw@|NQy$%hbtlBP=pgQ&o#JLT5fbnbNJaYisJs`8A(TF4?!S@NuuX z+VVT~|Np-1XXD9ojd;_@E?4nlbG;x_)&IZWCv&SwhsW2J7CqhZrkUSv#-GZkQ^VET zj~=srzel)p^OMW!^D2@uGc|vH2G{?0Zr1&LI(;&8l5&_EsCTl9|MZ*AC$}yxcDFv- z*K2;SLb>*U#;4T98tGFkFSBV)*MEIvU)9=3vDnZ}I(PTvVjTooaE7V7yIXWtisyOm z8)^;-5{)l@T>N|5#!3_CPQ(D?#zjGCAHA#gF0<^~b<|+90rR}sC&i8?rO4O+Dg0lo z955|UNbsvy-+7h=Nk2DCR`*w%|Lqp2n|w+9&)fX^+qEfHJGYg;zqh{TsrE_DnI|H2 z{HO6vIog!!c?Z;?u6Vh0`Y!!{58LIBnNH?DcI>jh{oUG#wDYy!?@qT<{pTZZ&{cC& z<CJ9Txh;)cPfuH&-1H*vCHur2_wO?Q#PfdNSK2upM{idmE}^p0^6#>{W{ga}!WIP& z4t!AV)W%*rg6a!4aSbh|ZK<bnezctSNbfVcxrpJ<&GU8Fp7*Wa`|Z}u^m#Ka+)G~H zEx+&E_y5Uc|7XvhP4Z8Eyl(e9FT1mME1pgbzjXY2l=Yjl=J(&+F*iz@`*^Z_e9gzB zXQuvtDF1I^@tK{^=gr>tV_)s>DqWwl%b<HJdP1U}&6;Wd*edYKlPT|>+|u}z8rXK| zwB+?OTN=HdoL&@t)Twb&swX#&ft*#`Yu2qxi#z&zGD9O9*O7pLuNQrO;v3kQVbm>u z_0HDp@O2J4%R_HXiByXgdD`!KyieYKo^`C~!d3b;54m4jx!ut$e$rq6=kXWDiA<+s zjn))jTN%9klIB{Ak0&N7&*U!q*Asg3+4JX@!{6o1FFt3vaaH)UDe3cTxBWhGqxiJ$ z_LM%Ke?9C|ET7*0_xAoIe`D#u8L!vxx2yf5Iz2|{=B_V^ho7GY9q0dr)%tepbYs2Q znan#OgE=h@Rkgdm1b6UB+%@2n*pzck$9wfHtRvb7Bv@Kbx7BQZTf$T-Bw#3gc*Scm z%)AZ}aoFw<sJXdgX^39xw3A|`1xg~<_I8A>QTVpJ{@3!%y%suUY0FkCz1>>={@$5H z(D0s7`_cL5Z9e<x)K9ZB+AJ0IY|5RTOIEMnXH^{WM{?uVGpADL?*8KMcXa8c*3P%` ze_y!Y6@OpWp}bgcrgHfN{oRlItS_;4yoqDEX*9jpzFRjvrr^Nuvgs*js<-(}b7hy= z<S{ArrC0{`?H|bk9rO8a-?=06>Fv79oB}ImI;_6>>g(Zo$r97=G=Y*Swn`{tlfy>M z%`acRj5*WV+B!o(^Sp?E-o7=#pFW?r|9>qy|L^tszt^qb@A<49|I@3ybl?BK@1KV~ zx#%wc*6zoq(|Vx8$U$Y;^Lf>JEPDI@e0rA*x`X8ocUjr9bza{<XYqcY^7r@m^mXzN zw|>80Z~y(lxpUj^RcTKy@78t+dnf<@qde#yBDanGvespXdCgPwr0f5EjsIWzJ+*v- ze)Wrm?MCAEk9&-hQn%Fp{<inSA?}m9UApNpWe0w%u}b`RGnw(iLUPWz`4=xLUD1r3 z)}4%f=D<r&A;#=q_`7!=3$&Of+K3uz|CCr)0f}UcpjmJXRMRG9sa?DMYO2xf*|W7h zPw7n7?^Zp@R<i?iR`a`8QFAR<M*Pe^@LHw)ZrSbJzt1=O&9|$)SNUA^_;I%*>+62s zzW;3A)_wct*%@tHzvt7bJIa@>m0iqsI6VIq|Lf9pyMI3(e{r?CZGB?8tbN^{>vxS$ zpA?Nar}6f|_qXewt@!R@-g$0P<&?Shi;G>wrS~yh(>eWgEB4vQ#bN?_(*H!aYYVK{ z-q3M##qq@J>d+Awi~{QycaLr=XnV=c%K0Vxbf!skuLx8-Je9lj?bhpcpH8a(_5Szc zasPKO@6!0s@&BI2|B7GxIde_ORJ-qUiqHN0aG1Z?KWF>xm&(bzuY0A>yzH!SP3QES z+po_ToZy{))U<qpe)nc0QJ;6SPfkBN(RJ$P;J*jo-?psd`QN)vF>;y-1NM`sR?KWD zxG8aO%Wl?2DUOaAS93mqPh`VzJcocnfNLXDaN5Q>*WSFz(K~eJ%$ZxaZY_CM4!TQn zNeJi?-zCTHRlnbxy>6%4&6zhlPTY8)y?(Au<)_#2|Er#H&9wji{{H=J-c5OvLA`MQ z{U47>@9uy3=I4WE{!4}%HNMTx-*@x%gERjkroWy4@8$eU=CAJcb<10q=@cjZI`4Df zZKwJ?kNR8L)_JveORtySUuPXJ7Ot^m&fG~kulMcciof#j1>Z%@U4lveC5v8o9ln2J zR_e|@*ym6ZY?uzE9^U_=jFsuEpn#$D`4eySa3sbChkB5wC!WztKeeWsP3uxb`Mt{L z*Y|zfYX5t)y>-Qh1eJ53p{|I@tAC%+{a&K?^{IaS&(HNg#JQK&zK*{CtN;Ix{)m?B z)0fpt9iF^-xBvgY^>trY*K2%zu3W!;)25>Dcgy$xc+{<|8`@#}`^{#<$ZuDI{cZpM z`3xGBo_||3;#}_C?fw(X{sjI{x%uGWF+0`?I<M{T{G5W3Z$SO5WPuLx2eoleet{-x zB^zg`NFBcL1ZVlm(5TDW<va82`SZ{38BWXXVhMIhFq*9PPbDC^(eK&n>$6fXMyi}H zYUjqjawNdD@#@v9Qu{xKnKH4ssR%f`i@MvSVlDMSj?K~xNI13TZl1oL-ZL%His^!9 zAMDU+bYl6nUQJ9^W!K3M=CA6f-?7WUUW9P;I3-k8R{q$&Z=FMfgE4CogXGa2PiEnY zHipKzoFX&+-!e)K^Vqj+X0cCJY+7T+jg2AkB}?zvX+%ytorK*UEnR{4b*KM4in_@m zpt0X!ef;}1Uv8}UfXg0-rJxWz%Kz@|t*zSPDVdp`r`G)W9O-4Tz`^8M#-*LUw!0ik zTAZSGo1QLe#lHUcz!Fg3(e^=hN;~KntbPX`waHS)?|_a|#%}8c?*#{@M5-h$IrHm` z*v}QOn4;BAFXHBjcR#r)u6gQTteR#_Iq>C6iDG_3dwu&GF3<ru3T%@lg49fB?F1ca zjIC}`a9Ggq@KAGe++`(hZf?+#d7tf0-8X5>*mAL?xH`b(Ye%Tqr@c%kH^n4kPag(_ zjKR{rv&94AnUqC46jL7^p2dW%T!ECARh%L-jJhqSU%h%YPIL3lotD8HmFG??`nZS% zbYQ^Qw??3I6~v2_aoZQb*2v7xC-O<_hAW4F!UT>Z2ZGu@`buK=8z{HzWjQv}==O~p z9?JrA1T>~PnE0LC6t}nqdkAK99C&wk_ha=#USEGjC31iddDGcjw_>y6;?-F=mjO-{ z&@fBgwr`)Ewe{@ik27b^+`4tEln?Vtr(Bjrj&7UJ<gUBev)E8PC^&oCQ?A=s*NHU- zapvUZiGA{ecuTP3;nI-9a}VJS$=OEPTcd)~X3kWupXRloev^(=f#TAsI<HM1U_VK% zF^E$~Utj!F6vPf~fo7kTY__eq_f3Bh)UZi4v$vmLy*t7rD>YU1lKD<!oiZVbi4N)? zu4bRzl(BA7>Q32f*q6^<iAebV?yho`=G#py90DFJNh?-<bXbLR!H~mWmM-6!TW`NT zdh}?_(xm(;XU^SFxS)HXUUMVpe23lVZylWX&-~O|4(!E!11N{Ry|ooII<x(tpQ1y< zfo&{FD`sACc)ky7W&w>$Hp+5~NdE(sA0fNaqd!~l<uy5&tc}pozg3(UKSAeoDvsqz zyn+@bF9L+)rmj|IWJ(q2U|g=~j3<4V3TxP;Zrig*W<Tq!)mye~QArJJ+qw4E6h+YS z2zQQ&^%~4d3VeHZR_e|Z*gd!43Df4yo3~b~u2W*+2ys$qn>&fWrwjK+^cSiDIj3|E zSp=m`o$+v0p5k_&X|BpTOUfpt?q%csjkOaJP}dl?I`qWuB+x$k0}V`uZ>H4eggD_E z)@pE&Zwy>=X4&%P#qW1)*pLubexOpLeJLwwY2(S<kc&5zZfM|cD$Y^^t?v5rIu$fP zEYa_<{^iAGyoX-l9JdIGT5w}Zq|fCw>(+gn<u-Hn?8!#b=Y7I>-wFAuO8MkH?_v`> zyJm$|)Mg#=o7fX$i1&g6-;cTOtuK>hVwt5N(Coj}&3h@%1r;1$gd~bj<s>IB=Dh6r zYKL)ShTNpoy}MRnFEtb{=nCxj-nQBN5@@l?fe%c3>#8?bZ`g!;FIhlc<DuZR*RNl1 z-n@CI==_;8Bcr3G>-HTJeWe0g`s$X~+}S2_cIApw_`DQy;8CjUUi)%cCYCaV1kTM} z|LWV5u#PN%%E4L|F8`TZqjWVl%lf#QzMAsy<faTK*G!LTUtj*V!@9=CL6lV|F6@eS z$#q4CgyT%p3|2q-U#nq^bvlDXKw-nu0~$eTpFe-z`Mp<lby!%K(vQuLHKo<VLKaN^ z_G)Wdq>04IO?UKg^d2}=n8fr~zmRE65?(R6LG{ce!<*PAPC#u`dr;`TEvqgpG!$R; zq55j3->SOOm;3u7OeSS$xnAA%e{WIrVjPQ&0yr7Fr;C2oyIaa3AQ5yxC~fMGdfry7 z(~+PCO_@$W#i#7kQz9F0E>cWyniIFf!RAiHIz6e-yyhvmO9+-CRz6v)kRR1=cEx=- zrM>=)>6`tZ4{_`Nc~`#w_a$%rt5aR~a)_vI*t6%(esdh{JW#O}zzoV}N%K;#uZ!Jj z;qC1ml;(Oied-gdj}DJFKC^q5!FExCtLD))oztZ_)^3^#-?(!}=cM(APvVb1oz|Cs z_VWGx{r}IJ-`A-(ojT#b5|$(jsb$@kxLYCtilES*$UMnt_7$7!H{R_|-J~<iF|c)_ z&gu&li&lVK38~zX>R<`CgsQ4tE6Pv%?(kzd(suFPoZknS`ArV4+F1JM#o~U@+5P!{ zAKpK9%q>~7EbODil(zS&>o80K717|-wxa7mM^M_{XE9=8Vo__aoqJX|$279BqTu6? zBIz=lcO7D0)1E%UwX{8&OGi)7@0)DJ)^~9p`*h?^HS^m=tnJc%`+#Y=-&`xuYLIo? z^Y8ELxBpl1;j*k`bI_u6?1PgauU-%Ug@)nlExUHz(oQuqH&;&$TiCg?BI4tTqTfz7 zk18&(UOPG~btjH}aSQG-y?*_gbzj!Hze|mNZaS^M|IfSK@Bh`^+ka#Kwr$_8uCFuQ z{&!C8x0~wz^VZmg8*5km`ttJgIcxpOchh5vPO8tZx#ZI|_o@}!QkU~M^M}KNK&Hq3 zGjnrt-sJclk9;iH!LAZ{ZH1#lD%PUkK(O)0$BiHNd|!7w*68P^<@4*RPFEeh6}tb& zQGKO=X_fo7->>^U?YY&0E~c3^H(kYJRpPg;eJ;@)v~2Sa>>XxsKxu$d?j!YoY3b?3 zlIdw_kER=MH(mJnfg#5c=T7&@zfU|06#MPG2~X1H73{cvF1g};?DFW8PpSR3-)=N) zt^R!0+*ojP?eA~3UoN^c&wICli}S>E-v1k_eDlmwQo?+3*H|1qN~zbfwpRHb@tDbL ze=_un=r8rtj}*m97w_mxnRyY%T3b*yelYvFT1?jQpPLTs{QvLwW#4yajL-L6h!nms zEA05Yn#eVY*G*a!UrRd&@7fGH+X+-|AY}$vGBycIZ~+fg$6WH5xpvJOmuDF#Udk<h z@327lE2w<5F*>>FjvJ13nH)Tt8$fNF>$iOEQfJiMw0^&5a^#_$2~W?1y5sl%zANAV z^UZzGh|;gu>)mTI)B7L%|M&hsXw}T}`E|c;p8vP?_S^0E>#EtOYrV3v-to21zq94~ z>h=4iO6&i8Jl-#B{q4o#{<aLo*T?sMJSGhqP<dbf|M!v{`MMtuE1%Du{^hK<{@yQ_ z{q242wi<Rg@c42rz%jH7@-HavlXevp78+hJ6WK1EGHJ!e<6q)kbU?@GFcto~ueaS3 zSAH!OoiT5o-UrbVXFXG&eQzfF+x<KwzHdUFU+t$<b^m#w>q2h4PG{EN_v6uzFKf5o zlbZ1NsCfLIZ@029Z};1#%=r~`sa;Web4*tH^`95}>%N@Lulo#I7yND)=%TTmao@Xc zgo76YRzEp0(eC6L>-T$%cfQfxe&<ql?*{R>iid5|c^<E3-`w%>n6&b~>#J?%{`I&0 z8WOY$H1GYWbfZ02+4sBU$CXOvavwW(nBQKe{qNQIzgI!y1@Cs3Xl>oN@#6nDJ71Qh zhEoQ=@MMsJ#=s-{w)xByot@*Q)|^wq(qt~y)2%-H_BPeiIQJ_xGJ$4__inkr?!bhf zn|$JQ%;UcuWS9T*_Wr-O4g9}A!!SAp*OrTYd>Q}eXgp8R){cy?oW;Dwb3s#vu?;%{ z*E7Y}e!coqS$T_S_r9lcGTAL}@9s9Ythm3g_HOsY)+Y_6_9ZU@)>lN``P*mx&LdC6 zwafMXqLBIj|2&^Occb9%|L@-a)7z_FZhh+JbGMzQxo^%%EGXi|-s=Tt1d|w0vVZ#Y zY3%N@r?>QUbv<W_+U1HbVVun^$FC&kzVX>LozqMI{lBq$x4h*l>-q!rj7jTuIDP8i z)~iX>QSqKA@afJ%j)jt%QKzF+X9Wrbwg}x!I$9)}c45+n%19f}2+b(<S)CkSP1EK! z=1dSfvCWY)(YauD>;X=JSx0pq=Gty7tk^jB&HLYrrv|OuwQKqE-K%%6`Zbf=BDVI` z6-)oQtGZYH`*8!uiQAu2nfEYBsDZ=y&Aq+Wwjbx!|NH49ucT6X*7W+4*E!LBzuxcv zU$<=Tx8og-M?a<9-ZmiwbRFXqX+!Bvb0hw1Te^tw$yiL7z44UGv0J<6SQILiXDs)d z>$P1{dv59~*ZG$jx0F1+^9gi^JZQPuWsl#<I-=9x6de@}KT<vC+%)C*ZQHg@3wa&Z zvGKT3*-rP3hRO=@*K);f;@)@2(Wn%ZCg?cH==7c~T8|!YJGse1P}yc(%1mn<RmK+q zi;@=?IOM(jJ%bNFIUQI3_p67ZYP!m)<^J=}?Rc6tWzn<ecHeh`l8{lr$#*XgP2d0L zsgLzX!%0ay|KGb?dOcQr?O)J{@~+k;e-6w4Gq`-^!`nI5<$AJfPRmxvn8Ynsx$D6N zDx{46X4e0C>0dwVN~e?BN^$o$Jq@l~z4dlJS^w|VdZi~*@0n}5AHP@k`|Y{IOFyT2 zKJ`)j_BQ?M&WQa!`_=?olzZP<V06L`XGffcBZZ~QdnRa@rg+V_<E^c&Zi^@Wt~-7# zm$gZcp*WG*=1}dV)SVV)*iCRKWcpZAb^G~ktrV8Flhaeb^-kSj^t$ipr09)?wZ|SO zZ@%gCU2#${XlcFGI?=D7tJF59pI^4x^=J70U!l8Jc7*)}Ev%@1zjt~_x9btmo`l@l zQl8e^@0LaHG6v0AT<Tpip|fY}Yk8Xr1M>+}^ELz<Im`Oqt$Mw7|L?o+CnX=fp*-nY zr0(|u&wV<PJbIT>P8Q_t`FJckZ)a*<-M_Wl?^*r)c>m+$<CjGjRd4)hzW=B1pYLbQ z@B92(a3NYDFMx9s6S%zuDuFQ=4*Z~G@li|tU+$Sa@ZgK)=6m_OjqbCBFL*ldhy&j% zpTCOsQJZz9-*UrViM|k-pfCMkW{uiJ@U-{k6YcVKKR~5zG1t4D&*z=l2fEyD*SWLi z_iG*=YW11>?Kr>Pj|a1|*LjA&dvg-Bq-NcR*YW?Ywy(5sIkNbYseHwQ#*(uWw}7sY zTgG4b<;BG>inpGYr0A@axwy0AZmQPt50h7fU+Iy(Ec);D{(ssx_r~t{ey{qn=%uGW zw1R)GTt3e$yrXE6{^=_{fhj^wZ)MNVx1awmF6CMh?+%~Yc6r(g@zZAJ<4G=6+&(I) z+jj2U`L=q#=6V5_NvV66ufuU|SV9xiKgXSnaVaUEQvGc{x|j%k+<0#PiCoay>6)KU zr|<v1_x;lF%~|t5-uU$Gc7D25!Ts9rs-G3Lj#Nd=<a*h^ab0APCD+WFNS0Zko1j!h z^L9LJyAyig7Vp1*-}n1xxhcxlNQYX_bS}{o7Mr;SbbaIQiBtUNSWJ|wm=a(0a_N)X z8h_rT+k1z1#Kir&?ej|~c602xC%3GAUz@4lee^-n#7*ax-HJB)xc%ObyHXo%^8#Le zUf~1k`GHzvm~HC|{SJ<rn|phE|Nj2|yet8HXw}`<YyBD%IOoJ{Ily!2Tx{FTq_dl1 zvZS%L8XXpFZ>YJ+!2jI%=capyZ1?^B_kI6-%PN(fpwjM5(c7)p%cA$J+4~r@R4}B^ zNiDwY-JP9xcbBV+CT-j-x7PKG&R_j!OFySB&Qf<Xx3{1FMLkT_y82sA)PpN4gHLXs zc?fiIRmoY6<;?Ljm)w)i-!t)^?LOPuUnObZ&m3P-a8xv0rP{UZ&DQI2-q$_l*Tw2i z&hQTJ+f)<Dma?J$Q|ie%Ay{((xJr5xvS7iK$UO%q8ohr0H2i(a%@g;pcu#x#g((np zsSuX%5^9WKSUunU{;MUdZj<zXgW4mzXWiI*-tPBe`M)n3+2wwG?61EQC#hTe!pCxR zTew=hSmve^Q&gW@aqazo_CUYgFO5Yh8@Zy_?40JesCU)e7d2}hPkZOjV`jUkUB1rZ z=ePWS&+`BMd;j0==Z&2UBC1+9aXejWC|~p8V9IfgJ9WR`zFb_Qt*@`Y{Cm}(kH;^Y z8vooB(f{Vr(e9UAGofCdDf;V@y2nhg|F8}lE|7106qNR|KHBK+<cM|Isi~@u{F?VF zuKE@Cc24+q)6-18n{;fWaa_{5fQKox-ok$3KmPgpyFphFR<1bcCg`{Uw6gSN<dl=s zT{q8-1zkN{|9$uUw_iFIXFY#%a`H>Q^soYN^*wS`FBZoCc_i-nG~&&hGc%1nw;Ow} zO1-rcwAxm7@r9F<woKNu`SoJ)%e|Mhcerl#*|+BVqtw9oeLA_;K9;pXINStI+ib!b z8lYCan7DZH?vM+D?Uf%xzU<o@F2KFwfmE)1mAv8iJ-8}&7Asb_-#@CnqF(bvmmVs+ z{b_ss@9pPpzu)m&n6z?@M>uGa8ED4Y%*;&bSIKGJ?J;FHQ)ezNVOt5B;sKR!tJm-Q zwL1RqD^Mf#-R}3_F3$|yI@vS!ZpGu?`hTD2-<Gwg|MzEK?e9tV_Wk*E`u(2IexD4v z)cxjo?D}<xTYt&^UvKm4XV-|XUVHZJS=IY)25;Zo+<bDoE!WJW4~$mNOZ}8O_sYy^ z#>%~4&$aoBr12T5%1;hniJ6z-A_hww9A~c24Ng-&A3F7|ZzPYwv>fhxcZ5|yb0Ijk zaZPbw@Xh~Icg5xjC#TmwmcDOM_vc6O-T!s}KF_!Re8zaW-`uVj!T<kO{{Q<Obf2Vt z{m;|$|2$FuJ;z|~!sQ<My1Kew?}1K!-8k>o`ue}GJ6uX%-&=93^V{X_DY1n|MLmCL z*G#HA_D!OWWz!|kjf>s;)$W3(v?remkE={gxjbpTk@sv_i-HB`6T){fU#w6$q;ze% z$?S8}T{pc4-9NqWl<tY?PdB|O0ad?#TkuqH2RvB1yk{O=eZX6PugUhwAFpki_I_D% zz}>hLY_1JGHCL|boSvJ2qv}6kz|`xOyu6eDtMSiGUv@<;J_NdA+u}gx+cVQ$>+Sx0 zIDELB|NG6TJr6)@Ns8PJSC#e2T2Fg-=JR>``*wF0_uI|N`F}`!--UY>-|v>IOY_Uw z-0<s4J(M@I^%xsp+1Go9ll84@f0e8Y+O)Ae+tal59#dhnms$fp?{KhkdCheFmFX3f zc3bUq)1vRYH_WZmjx;;;b3N#;7c80FgZsqvw_g_4UOE5dbWw0Dv&rpyPeDsXmfQb* z`Ni^8*uCxf@l}=US6o}He%|i)n@5k5wl6cf9UdO8e0ZvL%fs81&*zpW{ayd0W8#u* zd5t(@Rq6jf=l|ci_oMj!AFi7|embphU;NA`r~m&kru38F)aO+w-M!k_94jd4ZGOA@ zuhGv<TPh1ve{M>dhi4&Amw<*z>bC6b>+aa;>*$31vMnvKYnx!bMWSfW_bEE3k8Z?q z6S$YQ0RQ&x(`{F_K7I5lb>gdCACE~Fr=Ol@Tm5MD`r5bI6ZdvaxDM*_vb_hbhnZUa z<n*oQN|Pct*4&uB@5|DXL)v$pg8Y)=cd8f8C`;;@|Le-~Nz6wVB%N;M7GJmX*{l>$ zO?AUA@5qizvAO!9<$r#BT#{BZyR(XSj=pu}r<6-MB6h!Tp5HdzJNx^QU#UBd7ry9y zc_s1J8x5R8t}Glq0pN<pJ1RQ*^)#dIdhg9enwwt~Je$wpd(Mf+n9cgr_4I2x-Yqyz zdtP9{_;VBEybt2j^}Y44U$uKVaemd0hwa9KtCpOfc-ZTFZ|>*RlYM~|uh(vutA4XF zFLJZRyW9Eu=dQcI*2cm5`@QP?OK&5L-W=w)|MT~K{rr2M{{4Qxoqsy#Vp-cNlWq0S zt?zqkr3WQ^e7m#wdD;7Wb3-f&9ynO3UCR~OXxm%~+WMz`diqk+V`0<uz0>ftEf-`o zdM-U<W^R7`+po+A%&zLHr@Q7g-om~}qS2F6#;PRaf%}W#-N}VNH{H(Lt!pd1ZvVeu z5xuM1KZ6$JuiL-4Ci2poqut`kj$4*4U0M<xcrP>i@Ak=_MW8YnG*VaeB|3kv>C0%5 zOPQOR+4<cfa_Z{rR{mKm|5qc{@|5DX{QLWsI6b)z8XWPNd#C^V{rdV%;UY%bJ5El2 zx=3`dVP3$?$&2tbj{>$h6vCTF-|E55qrET6{hPPS%XYteT4voQ+$^=`rd)O8W}Wcc zI2z0vehTv{zE>2yT^-Zd^eI(bF9x*qZc=gWN!95`R>kd<^)QpOF4I{l-|D0E=E}-o zQ1bovx&Qya$M*k}Z?2AhDF5%F{H3*jpQzhsUY7~AK3S;Dv@QMoyeAR-wqGvXEx$ka z-;66gPMdG~?CaVP;qvOy{<pf0UruSSU!uMJ^i1KBM@Kr(S<Td)*?MWw-!pNaQYANj zta<aT&2Xj=z9aEnIYg!#Wt&Ldy~j9JH}#rzq!_d0Pi^Cqo0QbRmnp+*8w4XE8k|sn zra$tY8FHP0cU!q-`MW#s?(Uu(T=sVBb+<=r%Cl#FJ!fS5^B{lSge_$^Q>V|ht=?9i zy*5mHrF`p&nys(<SIzx$ar*S>laqDz^v<0<yVbtT?bx|FmXrCW$lBFd+%$YtvC{># zV<AYL3p9@P>%z{bpmmmey=4p!tHw`z9roo|-g~jj>fZR;Knjgc!QeTHyM0q`o;u~F zvbL*E^y=EbWhYkOo|Sqr_vEHK!s$3F%8+n{d0pkzIeFFQjUS(!2DRV2#r4ZxJLlL} zeo9Gul=><4rANpW@Vd&yTYqRx*7v@qFCA+Aa<RJhde;SOY`Z)TxIR3kz22t&U(K$x zH9Fh2Y?-od@{$ip2e+1-T{1_~W6PemUIi~%uRMyFJ8_GNlL=_>_esId)-zJMg=YW1 zEVqApZOg`XhdrBe=2!j4J$WTCV+ttoR;(BQFP8dlN0)U*|McL!)A_sCxwTinvAYqz zmw#4wG7et~NbGdjd{gF)<M%7?LId{c6oqb72><oxn@7vhs_2ue;!f&;I<mi(q%dW~ z|2!3b>3-R?_xu0<Te4C^Wo_@OxnBg8=U?TUvb0~~X~aa`*tN0e*0@i5GwI}IRqJKS znQu?A^U0iueYs|@cUr^7)1S}V&);%Qk7uSnXpzkqt;@^$_p&~^Hf2sW=u%fK6&$EZ z-*}QsMEu7sv(zw`Rob5yY4HhmFDw0hoL}{{n)P=X(B&Ig8t}&y3Z9&pc;;}id^NYo z6#eezdo`cWzBHEO+yvSsba`gK-LDr9+vWYjy-$Hkmt93^oNHHzao3ebyS}~;S}0kz zXhPhg?2xxhev2ipK40_9_@(l;)BLty0(M31zBBWG*Qx38bw6)zPPf+HzFo$?&gOE3 zPE*;lGc(Wq(%<vJNp0o#o9FAc1!pe*xvBX1In~!|T>TFf^Q_-%<sSZ0w=nzE92b0- z!K-NpWSq*Wto(V&TmP(V!k#zUFG{0Lq<f#snOF(OYCYO<P3JW0b{rL_n#P9u|Np$& z1CHJQ`RG&X@jlttb2!WI*M0|eUuNI`qqYyU9o$-5CHmXj+uv^__y2vp|6g{>g<CqH z?)<0R-34E-h956V5L{LD{cd@(;6~6g>Ehzzyga?&x1dc^Qe`1;m)w36Gxg0RZ@r)I z|NnbmGPi7}@dL5FdtWY_UA3NLnx*es#(RawW%vJis{dH_0%#!lgmV9p{U$RcE51D3 zdOhy-o5OyeQzr(z4%z!|*XtzJt-IgtT3vqLy5DYY^rLH2EUoc$;yI=`F4!?8l4bp| zX-2orBE{xP{;ak-xyi^Up%#=}FvdX`8e<xj<a+x5cve?Rone_iukP2&z^`j>uZr85 zu4{IzDy90{o0B!O<EnJbpH5kM|L4bB+3WWfJanoGSe&JPH%(=aQTx76r?f$14eKUP zF@Cl&`JGp~=U<JQ9}nBF$Jf_B6S!U1^CfcE#3g$!*F?VAv1`|?>K)Q~J03nd+U<Fo zYbR4-@TsetaYPnq+F*eSlk4&`Wp8gywY~%$!s=UjzIS7_$)wvAGA2xUu6rD&<B9N7 z${RLry!d=_*;S_p&t~WQ&EGBf?DV3K#_8vd7^S@YwtMRB^taLXe}ye`vWgeuJyzXi zC!MqXbEkie()ZGnD{gr%3vfAUB)j|Xx7(BRja$z!W!(*vJpD#ga5E^`OU{>*pI`NA zr4RSX<BXqD*YE#V^=@Ml=jIcyRduzWa2@$_4!_?*n2s(z^GNs7ty@vsr`)`A=MIDB z<{PSIXIOifk3KAlkLBGNxJgI+4z3DyHt3*~3H?WwXMG3N|FvxMtKaRs$Y+0z@At3k z`{&uYEUP&#TfXP(wdl9aZcjl2ma&SH^}DkIpU(#^H!R&X_5Vlt{~M2Aidvkd{%{wl zCu{rj=J~p5HB&XWM6E438^NSwHF@Rbx5;Zt#MEBiwLZPkF3M@v?Q@`xZpwPleBGCq zmv>$@lK%hM{y%7kjz?LJ_@d9BQYBZM>n{vGwc{s_kz`Pz6cE+OxeU}!vW_<^&FjpX zl)7}Ty_FldBMXXo6h^ARjJb2))*Q$?ox%zl5taY*fE_dnpS*MRkKcEm+lepStUj;e z(cbU(Ucb2k>Xos}RXk9)|9Mim-{#XLZ~fA+4qd^{uIXx^Yvi|lJLzBd>DB%}vNjbT zX5atwY_h-I%-coj!Hct&Z+`k{n@a}hPPd8kxX(*e{{h_yZukMTgwe6;+nbw@_+%}2 zOpmX#Y)S)NwqE%uMJMZ8z0tZIaZ~p{-Jv=4;k_07Am1UH11SFZ%Plesv;gbI{`&g7 z^hZ}O{rXk4Jv`xK==O5|iwP#TbB`x(i{7mB-RCBbkW&@UFq?hYMs7Q35u2N;!1l$H z?i-ZixngX=Y=?!Ko81;)tUtA;e3Q;BsjIKomRL_py{p#t7P~_O>KdOuefq^YA9U}x zkC#H8`_ujDuM{!M4w#4of8!!ZL&Cj(>8UWgf3LTtMZVF9oaT+I^&rr({PpBhlPvTY znOH6{ecX1@7GFDsjj46nnW(kb9z9C>?-giS=DB~GROroFsek9Qg6<W^64VQxFlA?F zFRrRv2fA#TM@_(d(WLuY_<||Hok`e#rsuS`FKSleXbE4|N#NXk@R7kcC5MC-rb6Xe z&wg*%h`Yb@N-LlQR!{l9K6?B{#@S6<I*nj~hBh{JBkX`snsU#{j4p=8xm*!@a&GV5 zg1cSX=mkzkw{B%EKXdEkrXM>lUl09zr9Uk^EG$W3s-2*fKT4`Y#PcrBh(l}Ue`kFq zpb#*j;ppjIcjx3{@0ozydBt<VizzcxBIl-cZ^YgJIq-v3CowFbz-==N#}}~;6*qt6 z|LDV!bXhnAW-I_D#(Vk8%6_diJ*{TpFN5QzmSg$}oSWzF^9q>H&^VDJVo%N=^BQ-Y z>ryy;Vir8nG(Neh^Spp8j(V<>!$hig;u2RArv`>bJJv_rj3?fn+l+ng0~|L~92c~J z%rx@h!Buy9a-KPR_NydkU@z!`I>C<H=a#&y=<~)A_8bBV0YZ(FmYh*J?PVlif@4{Q znl`9$HZjEw?9g1+M{UM8t>-Pqoz6I>xF<A$9Qw(J*%tfy#YQ6zli6o;gB3yN^(1&S z?zlSTVc&9m<<wHpk}sc4YeLfF(=iHTaB^Cp!c_hJove{r66j>69BqN^vnJj7g3DJR zGZy49C40>DoHq6ClGixSb(`V^TJn55rvsGqB_b5^jF#?t`H}~e7O|&42Tstqkmt0i zA7Wk$VOKUKV8P8CzBw`*L2djhjw5fEwwT+-VqN3~j&}i#<p(%|(<Y@pwK-aa<K~d3 zA~$xI=i5ZRpD6HAl#z*rO`t>i^qV(1mhY=^X#oXVKvbh5$mFHAn{ifjVxZYahKGW? zLHlLf9qvS&s=0sJ9Qzy;D5*CZaq~<tnyjP!ne!?RWg7b(7GHcZQ5fvhG8KXCQ$F4Q z{$&Ehw;(gn18%_+rrKqoWLhVOtIX6=G_bao?!Qw$MLrNzcJE{=H13S{Qq8Ni!n&px zVnsk*qZ~M?&bPD0o|_xFIN#jeZEmiW1d6UQ6#?_fTz7w!OvU3^A*Pw2LQ3`AEI;ho z+2JY6v}x1IrYM13D%rTBH{{*5<%dBrf~D>N<=#-ijOAy-!on5>OtpKBec3#Rz=~-H zK7A@u(|rVT=`WEEX^*Y%Dys10ejJv8+%Z8gB0BoDvG*b=MkW@a#vP?8d20BY`Pg#< zIFLdD7u?KIn<)tDHRfn<*tjw9X!Tq>Jmm)-vr4$moH^4mBUgGwU?W50HitWUkCt7m zRNvSNwh50$tWpaWF)5`ja%SQ9qO1@Tc5(KeJhEI>#oaOEtMIzO_5&u|9Miw<>;5&3 z9OndNG74_a?BkQPZoJ2ID0S+-y{~N`sT5B<VUb!O-`Fw3RI2x$q40en1%q6s!sw3K z&i3C0N<oDlC^dm17>h<6QmgbfY};m*`%&_-s>6cW4tE4r)%jnp$6Wy6adV?AXUB}v z)3<K;C9Gm;IbBxroYc#;A%+J?Hy&>1_YdtmmcS`+g5!wq0yA?HX6$thL<er~-dK6y z(xpq+u7#-;filik@eXc#z5jFX8D7EN4#Aq5pux9d=7D>AtE1P3y}fM0=F#AwBrv@u z=7;I-sgitzoPw?BYdDa=WNd7FHqH3tJPiSbfaFHE#e&oSBz)(p7R0KaP|~{+nvk2j z_Sj4*XJrQkmay>f*H!GsdgMi?BI~qi)3$BfcBFtqV8wigm|KO7{FU7stjY4I!(Pzh zso7`K{vI-Qb4i%R`e;#~_wIY&^%g7Rjy*g<ATjm8t5>f~+6#N;I?QDW3k!2AO}{{9 z98BRjbM|a*Zthjh)MOo&Wxfh}4|hyh{$yI}4ASxvEC((YoiTIf%^NpnZ1d>*D72#8 zA!bh@XaBc(3rxw2h)m+%#+woLABhN?`32aly%=ay?d#xo3wC*(9d6v7;%;^XH} z%IQlKTCwH8t5>U1Pjl@O&LXQ|GdRmsTwJ_1Z1ts!(sR`Vk{fr}JXV_fta=Kb&I&A` zum!J(mcVPJwQJT~u~?X#!J?%lAiga1G}qqWndDt9wLsUv+WK~eiI&vii@8ju!X4d) zdY<L#WJLrc(_@htvu9^-jWX?iCBfIo#d(BPV){di^;O65H1P05g~9}}h{(vBw{EQp zP;n3EyyBpsw`<3jOW})f_1o~7<<P*;*vWC`%$YUo*I!rIoXi2by?c6eOo{N$8?xB9 zGhz#Wl+w>(-GMi6)=Y_1z2s>X8QZwy$RnrIdl_=EH>L=d3kHRa9Q$)}azf1aFMiH) zN>gC^)Rdb?-sfA9RRSnn=s$4hPR!zq8tH!S>p4Qa74(+wSnzA-yDQ{X6$$}zjT}dF z^76v8PcPoia!Pr_zI}R;Ve_PC%|i(jLPaoKF^>YM(P}tz?b@}Uj+A|AahS>aD5=w1 zO>YjPo;j$&4XslML@H{qYAif(=FFK>pnI)nCj0&}D{S21@W`mMduhw`4SM9&83Gb< z37MHIuV(q$oLJ1v;-xAe?iwR?I6gj#B$pu+2h=r!2Tuc6HT0hon9<=7!%=8C<^Qa! z&SYl0#iBQMm%sn@>z9j@EuUAyBPPS2kA)=Onl2@;KxJgQDg-(F`0lM+vnuYnvvc$~ zDlDt=`7z_$)m?sH$tnjO8XOifd3$@$o;^F6<A()HV<*RvFMXbIFI<-tlIiWKpes== zYkm}LzB$K(>4YO^PmF?EvCqpHH>U10D4j=iLWHMC5aWOa>$i7zckkMDD{HIUyzdtk z8Vxy)T<PVMxm+<Pyf>N5B(!4YfkTH5{rdIm+O=yEMvi=r2_B6zRv5-6U%K|j$V7(B z01y_LF>@y9u5}YB=VSG6{1zxQ&X{B9n!L#GgHd4ynTCE9n=yB;EjUzlG*p*FGFc0C ztdtNoT9&$Zy)~Jw5rqJ)#<B}J#l^+$nF>=mdt4OM;?{t!lU`NbbPg2iq{o%da!`oA zdX=^Ms+4DmhcZhMYf{rulkSsdbHir_lGT;r5YX5OYQFNz+ts|evGGpLgkI2C!b_3K zTFb&ts_%bCX5=ee043DOsHmv;`1`kRNht)SOxG0e$P}KeK258;^T{kSYe$C#yO=h9 zx^n82*XEmZKAoBJFkf3>vdXfqrKeU^Z+wmWmI%D%YNH&ey&|Y!RrY2^>Dg_((Z0^D zGuR9zle~@`d107agJTSaa8-GhC28iWrAwE7{rWX*wJC3;R&oyak(Ygw<(A*GN;TcR zh!^*sM7;GMq>I4K&Aoc{>W#Ce%7p!8d9>x&$=+ZY^{Ne$N%~}F1D0hj33++%K0G`; zd-m+;=;*K9(Y}W}9vwOQvU{?`@**#_wTalrHwY(XgQCWpH*cQMSi5G;n)U0W@2=T$ zbBl#(Vbdd%qbIw9%|2x=a3t5!94!t<ri+P*DV-A0PBEQ*_LAGWtUDVM`2Se27Ah?{ z88ek&JmGM@Pe8)^dwV?}t+|?Y)#8Tf#D%Pxlhn9han8$V$9duczGf^a(;wKzB-lJ_ z_H65#9|hGjHzyzOJ2^LZwlDXhhAj7!O?nJVPi~u=2^u8Dn_yAvf23Mg6coxGzPh@) zuJ3YcYi%EeoJ}jf{UG$L){zOx4-Ee}aC9+nPFpp{@h_R}HHU@+8LVk(X-a9L^>1H9 zvaElk?-cQNKiAsYYjMqM?!Nt|@o4{Bfyf@cHp?jUwd58a4hdB(c76;0{{OF|qocyO zuI!<H;g&!D^LGbCRYz|8GuQs!EX$Y@g_mc({E*hf6&QGP5RNDZMbW4fB0-IYA)yRC znp#Fv3%M1{XlX-soj)3Mqd^C1B25+B@#T{Dbo+nZPD|MreI`FAURds69l34m*01&Q z|6LV}(t^@zU#-Nk7KpGdjapnOlTzQ-%$yP_>c5oCxi8TCtAC^1Nh8h8cD$kFjfpEb zG&pQ!`Q<asb7tu4Ew6ORZY))C@J!H|Z1no!OKq}K-jw)+6Dc#NME>;OC`WEb0(7b5 zA&?=*uDO%%kl+OiKxSC_Z;vCpjjF(M3=|^9m&tA-1ZXuHs-IqR#;f#ODUS0F2%6pa zQe;NLCZAI|R?Fv*I|QI$P}n$0<@Ay>YIedUpj<^bfn%nl#+QN`i6DnmEt@})+}Je` zY@7rN5j7)i88XMG85*m&Lo_1QQp4V_%qStpCm_G|_%2uk%6J>k3b2zsR8hxd>M_l8 z=GFWtDclzi5(w{Bt}8kq&%DUFXaRB<IThbmffa?Dd`_*A3%;U3FhSw4L}KTGDWD|c zW>;*2dwCW9wxB~P>oNn7XYRgS^_=XOaY;BeIW;Ivd8VrrnWOp+3!<1NrM@hP47zvg zR#aRZ-<+(uzI(}=Is+B3_DqvfJ!h?nc09Fae&-VMW*iw9nM8#q=)4xwIDJ<yHEiL| zwX4Yup%UQ<I;VXneBB&)YR&B>n{cebCzuc#CvkgB`zow-dt2X>$dk`^l06hSL2QD~ zZ8Ottm$`z{UUDwOvAB_-Zyh*URZf>l$=nXC)!Zy}t`gr0D!l2?VN;H~=f*@W@0mOA z5DWzz*+HYTA?2n);>O1BQ;oDw{<)6l@D&^;K%974Qz6o<z$z!i+H0oo^QGxm2nGZ8 z4yT%iLZsQMh8rHYCK}Ctu=T+OGR;}$?yxCGrE`Ol)I_7%^G;vzz`om@K%vFL(G%&g zX-!AKjT5)07)gIFeON%IdtT`(M4EjPiMYt?HS_B4NhVfg*7?Z-6Lhq#IKnc12c;$N zaFfA#JTxR)aJkmuFN?})F5kM|&4rqqf5pyob0HWKSPSe03XCT=6}Ig^R;Hu5xoMsF zSu!ik73~cvH*Z{un`|{<N~En`=wkfN$DVdL1QZOM7*B5UWZkD$6r;IWFwUCX;rW1A z#*>>mRrZ`J2+-X8DsEd9?qgB#x-`Lq@#H3>mOX0s*flpRu2<eo=H$kTX$>hij|9i2 zzHXQjxm7Qb+(O=<p&=#mW>f6aSN&6NGF+b$OJ=z-CEj7vnh?)*M&)j&*8G{incQaZ zi(rRMYtAIDyY$WX)SC0Jy~&;Qd@3?QM?1G_wU+E;Bkku)*M{Rt_&8GzWQ4Ga!(&>g z>VeSCI<J{ucU&WP#$<sF)1=g?9yy^KCkLfH-FfC~3jup^M1zBy!=^P|3)i0d8hJ{m z`0h_K8!QQ%K+f^b4BdM;C~flIC$eN#r4FFbv0V}R@}Kw2o!n%0IA(M-q(m;A99jBm z&y<@k?-=;J$SQga<}yu6E#*qTnx+$!cDd5pD2uETwQ(b-$F!?zy`k3|J!ba4&3oWL zUdp+wtPmM?-62f(xN54I?RGU~@>*dUAr70?OygXWDKTYA<ic{cUh>L|E71;{a-^Ih zw#qM_61g`&*bVoguK0>CgCfS0n{F*%w=B0IC{204cLtu7&ag-f2yFaY|1&x!CdTit ztYy)Xi=WqD&HDQ9s&B}Pn-0o+6RjQ;l|0a|y%`_qa~FN~>6N-d<h9>|6Y{ln6;i|Y zM^6(ZB8}Z*`gnMGS(x@*Dep^hx7`k(`n-BZiH9!dVpY#A63dJ+3T_P#hfQm2&UbuS z62Pdrx#^waEFz++$1&mhy4Z=z+3hE;UAv~_crC|_`|nmyPU(Kd;|G#|2s&iDpKnU# z`N8K13kOJf!f_?kVbhwH{)Up38H}2ncip?t(@n4_SkdlKZMey~ozJx;D>+&DQOL*Y z{zdgcL0`W$Yb<EezR<KTH=_S%f(Tklb#P>wlp0#EwB)}tm&Z)elKhK0c$;is?FsHo z;jyJx|NN<0vPenpYSz}aKfWDzjhP&!HXM{b;kb8k@M81@TLIyWCpVo@7Li{b>2PYz zI&-VXggcg}G$$-MnY46m+GfkM_AxWB+-Tmr_e`Y9xw5ynLeEt$LNBhtUYT5__IQV? z_yi;E7xNZJ63pERr&yKtZK?nNFTy4}H&-|8qSnuRk7e7c3$q@v9L?;StXgRH^!l2I zC>hG3msRETvTqOj8^7x-q=r4NUa*jGic1#m=()7exjm_M%@0Gj|NHL*Y_?%4eDvtc zQO}-W%WavD(Tfm=LZ(TnPb)txQlBa?!ASdE*%HuxFs$t<c<Na&jp-xz(w{$nD!cbZ zEL<aG-+wbx{V{ZIeAhJL8w*gY46skieyO<BGIcggiR^vf+eUcMk4L}YYH0Y;Ut!tV zpe^%1kG49!Wqnj~+_OJeUO3@L<Py-zcVu@iumBYZ_A3kzeB|($DOx`J5_;l*CVM1J z0lJMpJTLwG`+NHI>B*+6fA}7)sN3^UBUP*;Q(&^<G8Z2n@7bZRi>^hZ#PEvk4JnZ` z=dXAX?aI33%&XelM6{R}v^(eomp(Z$F>Q0?MftiH-)^uZO>((*W>=c+I<<Jzh;3ZN zs&e|+H<cre%Yq$Ft$8tf#y5gJgvLo6NAxF(iHl#qc5O|t+1&k;C5x^Y<|chQBC=^k zr02SfyC{WeW2V3a9qCVvZFf1p=qsd}@tTJw6P&HStSO-FFKbn@;$p^^|G`|QoL|H` zUW!aUwJ7a!rMDq!9VgM>kP`WRx$r*KfC&v#ZdT+K_Bp{55H3cKV?te>UD)ibtx>Fh zFF0*xaZ*sbF;Uq)X;W{amo*D&i7`Wn@uZP|EQe2w!>JsvciY?W>_~yc{44bh+1J-a zgk~itCqJ@3aG_CCq@z>(vc6j4-*r05Xa&V%!3jFE52<Ul#iTK6ZvJ@Zmki<U5E5|< zWVN%+W~cr$Y}@DC@8IL=xcTAwY+a-j=g@E<gwtc1@A=8X%4_E|Ot~3yx0jdT!nY7_ zg}U-BJ9ga2Fwy!xnMZb>5OhIS*y~f5P!p$ufgj_^O`4T{Ni#ylCm2aT@4dJYH9KM{ z;~R5XpFMwm{o1uv|0eVNoiEooW1V5<_PICE7D+U&6q=wjdtSQoW677GD~a>(?|Y(T zRrMv~*^aeg+CR;>K<6YZYwEwv<uP;V@(G0VpFv&Y>UFzbotUWn(RxB|{qqG(jY3>U zAgkj3T<=px?Xfimae7Rf`r)7}@2-+}cfcpB1^=B_{q7{stE1xaKKptPUG}%1yYfNu ze5RnZmz_%p4}w6d&UQZ8EVJ3Q|MobVGO3DpoRkT+Qu`*MC*O{eWf+;33Qf?_{u$gI zSo(f$`MsZ~!uNgp+W-IEp3mn#+T85^divX&o0ENhFoI7#`SET0{=4tW{*)IN7l$Zp z&2c}aGcyOY-wn-7a7Bm64-SQ(3(=&drMLe1+Uh9C(KzFt;mPjZO<U0Xa!Oet(kztU z*>9fB%z4$IqYWh5>}&SvY-YN(^?F?O$45sEzwEixKEcS_zm#x+o)E&caoy#K%I=S* zb58x2+Imj-MX<uMDxZqeGkagLEduSXMI>R3*$pX?^ZPkog}eoY`uW4>mLBPnc=O@s zCLeBgKA9hv=l=_F34eWk*_6ntL)s`+8kUsD$aI+F&HerLxw&iW_OCZkV*1N*<VnAG z!VK*bXqOl)2w|F(`qxHaMe5ut@KGdeKR3yq_1D}SbhnZ4$bN`lLS5ayiy3cTJm=C9 zUa=IsHa6s)(6vOAqFn(rj<)(~aQ8oU)%a`sL;q%Z&0Lz_hWjc$SefKt4~n?8VXN!* zFE&tOI?QpzRdBkSefR_`)EEZ);;@atinIH+o}3=Lr(&a-dg>YGiALI2=SHRz%BT*O ztbeX$oZ0`PV22jh4_QCU{CKpTh&!3)eG~cq;o;(byQ<e~w}Z|#HNRi;nZN$WVGq8N zZ*Ok?|2hAEC!76`2hDlB#|q=C-)?<Auln7S<MkikKm1bpWyQ>SD(?MqZ_7IFylw6^ zXWIliduPY@JH`IXKKi_R`*QjGb0HR>!(3XM+4=wdJYRqA%Ev-?rg?d)!a<E#;}_Zg z9^9ZC9CLGZ>!LO+p0BjRCm{>AHv3B{dVU3^@vsZQ-Itg9-!H#k3qEKfCcfyTYWbbQ z<Df&xe(w<1i}`V`eBWniHhg@%fBWnCR;91H<NqXGdS<@wWAC}LxXPzfZ|Co~T{&6L zh3WO|`+w4&oU{5~^<<*^zHeLCgD*4s^W1*^y{DT_>vi{DocO|R^UXJRHttP5@sV$i ze)Ypv@qeK6e`Ws3SAYMN6<+(C|BpV$vp_jc%O?kIPB06zEEI6!YgKY}Vp{6hCRwz? zKxCuu2A6iDuPj@5jTb+&u*$tSvG|hV;{`WdRtI+l`@cB4J1=)};hwoGqx3sfCeL2> z?9ltqua|Y}XTRV4JuW@|TvYYmPYXWZ&8}a+e(SaEb8KJV{mTFU1OLk{i}$3TpQrZV zU^Bb;>}`)@S(ltCx<0iZIef7dE(^{v%{I%mDtO><{W))lg2RHf4tMMdg|AlfZ!AMe z`{0ay+y3Eidx`aDcYVKCy?frf)$8|J#p!LkQILLaPUP;g+-oQ2mfw>!t^c-peyaPd z);rbv&dsy^efNExdHC|T$1`SB@4a4nJ@)#xw5ko3y?5rYZ@Q=Y{It@M>E|}&Rz5z~ zE3OxF!uR%ZC#ImZTzy@3LaiEyS{5Y{V|)Af7nRIYIR!Gb1-4I`5?O2JudNEH(ZTt} zA(K_*^sRq4?Itu&{E$_f9@(z_aJl{8%-e;<m8*B|+<9ESe$UqVCh=vTo}8?(jm(~V zw6ErU^?h&Uw3pcz#j+>yU7z!9!nNC07iQ=0n|bb4t9V?7-viLeIQ`po^KWl^`{-zQ z?p#?N6@}Dm-<XOCb~AgnA9!_jwd!du+oXj?jd3iGV$%wXd%wR+EJcZ_08lj@_pd0v zXf8)<?u`u#U#$H9^L+h1t0cYnZ4vV$`Lrh`1qTPOz4}Nuv;KQ|{rBtjf3L5NKRS_J zzQ#a$*Yxkx@7Dc(8~Im*Cx7qFU7H??ot|#{;Q({)^l5TE->09Po;vBT_>wc1R^vMx z3R3U%Y;<UePfJh#U4O%YpM^t5O<?<sDK{nFFPetjN^ji6=`l_BoA|E<eeQ=||9ZXt z{M_#y<ws|4Q)(Ao3_9QV*J1g81=nNCpT0VB{CZrqu6eIX{I;yCt5!_jH~Y;g?e%|t z@BjbXqc?TEef7Ve&oAeNuZa+hpKDiZ_4?bPR&Ia$zh7=`&AyxkI#g(7@bX!ueR8%{ zPfkn(oy0%UUC#4$&132Nppyn4ul_MTv`_7Dbbimh>U}zK3$D$%eOiD2ot7-Wy0f!P z3;*<*-|P7Q=f~rIWA;`@PLG*Ow|5e3iAWeXR$TMgloQ||`J&w+ym80fN6Vx)=N>5n zr!ZK#1}?l~|J%rWw1TcCEWf9$BC5FN+PVAn|NnZ}FP#dym-7zywo5gUQJ=lze_eWb zxIOy!oz3a~QJ|_aXRWaNx%u|>k9*CRnJW8ETfK9`h6!Oi-tYTeBsxpJeb>EvpHpw% z+4tj7w@H)ulH8A*e{nGjPB8M$7b94M8^|$TzI^$k#{ma9-3y$IOtxGm^AAh*+aA%v zbieJt+<Wy~JB)H~Zc?@V-F<Y^tYpwBrkPJGK3;Q|ubtwzICo#p^>wiyr8aGe+AOoU z{%v;rX{$SXDvR~jPBZIl+%zlj#jGb;YX$c5R_|Tgyzl3;*)O*|UR&^T(V{uRuX`qB zzlOBGj^a9D1Cb3@X>Z89yzIw(wRfK#na*+wL~L@n(@-cKR?cr&j9N5JZAiH}>AzEa z)L~`!z9r%Z+IXcO`6kZYy$f_Xfg0#|>L~l^)4FC!o9D%>Id7bPZcXfNv)5}szYw&Y zJ!j4tt#aR@tzjLNd>|K}n!a?pyXEPiw41q0k%|#mBttR<ti7Y9zM<;ttDirA7THZs z2xEDrCSaa?XVTQ$Zay<mG=M6rZ94X9cPgLHeQEmPbo{?fuT37+XQ|~Dfv#5djryDl zY8*!?>bk$vF-pzMFD@?5Y>oNpU;iuE<<hyi*5%*c+`M)sO7G-Vsjpr4+V<YN=2*P> z)4xr3EOpPjYi|DH7lJ+_g%Y(OS3ec+INtm1-QDPU>HKF}7#f#>?nb*a@9BN#GpMDO zm#RYKwitVzm|Z2Ar>E)OJh~z4>Z-}={$+E0^c=TUetyO+u9vd5=zdv6W#s0Q+xLB4 zo5OVW(7M>&_bQ*yU32&z_fD1Y>?_$UuXANh%(Z`Ry6695)0HVkr|<R?+|Axt#FcYv zi{?M~Nz<RcWNH>txDcw4cYcTG>7CUxKxZr<JT)aa;pwTVyUXAAMYvzzZxt%B#$gY4 z&f8mCZ-#D6J3A}+c;C^3=l=W6xBL54zuq!ibmf-E$NSTTPd`0f^m6l>sIZC`3)?rX zyL4!3c-&9WZH4~!f4?lBUpFiCUCas9ol%S9Hm*xtzrFOroi$HRTg^X``rpiK(T%>O zV6XLV1oNB20vo1}`%`VLt#`jUF9Avkv8<26zAA10lrt|4xu4tU#o;lt^lx$X1JR<3 z%a_Kg&;6WQ{q4<5o3|CqZ(O+&@_ga?9gn(RJU=QP-}51={a(@Omr`F}*}O=)Ulx~t z-SO#Zt2qas{`K0FvoZS~!R<@|a*evt+kV7vjJxNq)8n^bg2SB+g}0}r^BW4I<fauZ z4O1c)?%(%&%^dC&-M3sX=WO5ge&6q1exL5_EVeFx_ond6%a<?9@7He6oxk&GNpICx zi==f?&%c(*hU{DOc4zdx=1HkLyYCQO8WiBvSiya%k(qtkcS+{O!U`Kq8h2FgJ+Y?c z_bN?6q^8P(Crm+U-oK6aWUP)+$j%IRy}0LU(&U=2SHrjG-@o@*CM_-P(b4ps>mY$s zxF%-nqSt57dhOFGzc%gr;*`jDpT6NaTMU#lSU9ExCtP0U8yCH8kAI}ZT!;Bgh1|z` zW6sGQTZ2e(ptWFUn1a%3|9RfqTB-L-MBG_r&!f;J*Z;Nuem=h$5xDPBm-eRDt4yCv zy_yqkQTge~Lg)5<-}k<E?a_X{B=_M#cKI`3Cq(<bzOa*Pab$j8z|T#0BBR&!PfE?r z*CyQ9;RJ6Gi{Y1$n9k66kn70Xm_xqDrl30S4^vQD^IvY;w{K5ORDQ`?@OJC<W%u>g z-bvr5Bl`t(Bs1tNx}%%Y1RboazGOt%Pk)kicDnBAs^ZO)^u7IWZknQc`qJ(=&`}<U zQW(VsXlO+y+}%~$>y{iTXJDYg$mA^4F}v#PtE;K^D$n$ylzU#<3aMs2`>*xO+wV&| zJL}Do{2Ln{cI)qZQM`ch+38I)V|Elgyc!-qch;;^%WmmB*%SpTI`-v6UYk8TH1FKT zV{>jiJ3CuHZqJOhv55^#lTvqDpCFvB(i-31-hTZ5`uYZcz875#ps}yDvgQ>tzsnb+ ztl(=j;`W%y`;GsP$7I)KI@XW1!`A%xaG1YZ^3l!o`G3#G|J(cT*Xzv5F;So>4XgYA z_xt>+S1Z%}&)a^F`4xKmlWh5&iD%8Y?0?@pe<^FHO8Dywr#IaLl^2(S%{FaHiL82z z?<8Ds71H>L`^>p>eQ$O$F$*ee&|xZ^J-uGv2z5iI#@dD{HyQrV+5hv|?90M?^Y8Cl zH`iT5CwEi!^>tf37uMWl=C_$px;5+Ss^H~*OJlcA6BiTP^eb@3=X2JVt-#@_qt#!x zcW30u=}VXAu%w>c^krHg5w*pRH=9mN^&aDp(=uRTWIC;9U~ezKz2@h4Rb!N)z{X2l z9y58Ltp9!g-?!~AHRCp?olT!#du`|QmoHy#IeEVR-{&oL3u|s3=C_|y_SOFXXZy_X zwNGRAt$FeL^rFKT*N5+0^VO#BSw~7_Rk0?a;ebXjjy2KS_2%(Qo?Xo9rs%MMhpF)N z@!t4O-cu?ly@dr^z!|mo|55Syn9{4EFMr<MobKOlCtv^P<Cda5C2xLwe4P2$>E|X; zdtvY22kiD9yR&rdzg%$6{5w6aN^|XG@1ncq_iJBnKl|y$_1UvSuYaE&Tm5$HbiLTD zxjU8ja(hf8rro%r>%h0Sw;%t1dH=UCQ<ji|fgDre<Ku7Rr_McPgX!MCe*!)n5%zy_ zF307JUd)aOuRq_}SqwVab=|XOe!Cf~!!+Wjt(KX4zwo%MxPIK3uQ&hv=#KxRB)ix2 z)-><cxwp504ohDf+gq_W_H!z<N49NC#Pt7?>#l9S_E_-brZ-MONCj&HN>+vC^Q%HL z=FNNe@gu`k4gm@8Mp^5!knHP5sH2D)%NwTLyi{l2u|2gG)c%`$*~9YenKL$@&lu<L z{d(<v{r}&;-|x5Yd-5vh-kzU-etzERSUhoK^}C(w;fmisUUZi~TUz~eYWTbR`~QEv z9{>N#W&g)dGyebH|G)afgM%keo{ZUA`}^C|UB6x|?vGOc`E`B0?X6?k*EgL~j?2GZ z6Zzz2RCxK<tKsf;dQElrQm4(`agO!mraQckKxgp4yn(d<TQT9ln>RVn*_ms+8ysX= zlC)P`IF`B!MQH$NJXiJ4B!Txof4vIdAN68OT;0#7$NOZnWmjkHTa&wM)oUNKygN6f za=SIIP2d0L>9*Wr!|j3VwrB6t;ZZ(yz3kS+2idg~V^&w5?f00rb#H|XN^XG-2q6c3 zsGxw}>YtnCr}-<03K*_FbuD)uvXj8|@h|ss{ihw-wV=xcK0b*nK5HuYD)aW+na1hY z*2T{LI+?p{YpzgiZ0Xg|$jR$k^=n^xclZ8#GTDDy?mesCiEFn{uer%CUvr`C)<>?* zC+=@`EjD0LIejb6j1P4T71Mc*t2jW1{P(&Y4i*62S_&EoPA*<?$}SDXkqQBIjGCLj zynh#WYX85l>#whgy!`OYx~Q$M9=6NB6R7I?K7DE8#`@pe>tCnd@u<FA{eG|Pv9tSr zfqJdy)_?g0x&SBi9M{^Po1U$4+i<V7wKYd75OlEottQX~f!S00zfUh+kayePm(Oe3 zQt_z-du%HfH55ep%6;D8!{jZ{@nmI3q^NmWF><NrFq3u38Lq#raxd3{uDAl7+uAaF z->>KO@&A8aFMoGuXa4<tCmeW9-<ACN@v)hm|6ax8-jDazN&Gyu|IhAkx3b^wdcAJ> z{JLLXUS8h2=IND{!TEbWx}7om2kI?>j+DKSB?&4xTHb(;s+{rpwEq5@CnqLWtc;X7 zdG%x9rZs0~uic5<%)yo$8|7GAPTR0JH8`X*3T~F$9()xgc`umIFeUQ&{^PaY3!X4d zN^LE(nTk@XU@_7mleOiv*S`sEF9kI^8#*F0w-*W{SBef-S(lvg`m}w2rof9>hfQl< zNw5D&uvGSO*s<ojyV?~M2Ztj%w{1|*Zcli?6qHt1sSv=)cyd$Y`#LLv`Qfy-K;}d* zn=J{GSU9G*B-GW_RhH|b9)5SAg4<)})F<K$mlZB(DMXsxyS@G@fxvXI1s!!0EiY66 zTG29>HR<(==kqeJBIh&(10zPw&FAW8|DJZBgH`3U+qU15pew~u)S&kXdx8?Gs;Z9g zD@yb+G;S2^;7ytGd+J8ic$&u)l$QM2yQwuK++ow2dAHYx5(rZVS(a`2_v7xmOP!g+ z&}hVQ#4M=&?j<Rd*iE>}y5!8M57rHqR{|V1<=iZ{CtxT8Bhz8wi0yf?yz=cEQkYoS z^aN&~{7|N4i>j|N#NkxVgZk^QCmcuut<in97;Sa|#c$v=cFaHF>#M6DD-I<2^I7;c zFf`s{O)~D(P5txDQyXRC4BS}w`Y(O=ES6~s3Xx&A?w&t_X&kD^0R~W+GyOwMqZ$hb zXp}Gd6oa`&ENXN&#<46pbL-#4cM6SlEGnm~Zq^V!ZzNe^L-O&yx_O2dKr?J>nKo|h zIruGu6D76-EEzR7U$eg?tGI!M@#LmcZ|l?uhQ>6V4S9EWRfHsP@=IiZPMYLn+PHB| z+}^5_(UaRyOm|oyYXuYU9IE{Al+lbh<y<a1Ht7#zB&!QmjvD%I=u{5WTgcLPJ? zQqCjaf{w;soP(k*A%|tjnQ7m|_l9j1ouDH<`|f!sR6~%fABc+_-h;-7w$?@*I>ad; z(ddw4wD-LS+6~{0i5wm?dmo51IETbKY|4?C-EW6tEjHKwWWBaFI{fQ#xij+_8b5I# z2@C%B_W}=!wuCpJg#2H+Nm8#Hw3hOHofyH@Vq(J3=IJJzjR^rvELo}o(PxvSCq9Pw z2IjwnBTPYQTYm)}O0wqmnAThI-%tj#ibECAm<>9N!P-9d0jSNx<E3CWXVcrpXU-^| zD;1kyBz<N6pI<9iG^9k%HFwBXM=uw^?RzAneH(pen}vQk$$nYQVZkD%jc;!>qJ%<& z!%CJVXS9APH)nnat;kvxdm@EUq#ZEgI&=Q~_s;@N+gLaRG_(Y6pEJs<YD2E(7#Nwl zIXz~I{*{jZ+r{NEO?Mk7D2F0B3^l~S-ptYfrQj|*ro>w;93fGl%x!w7NEfwZsHLco z8us$OjL*K!4JnbTWr~vtmh6i~Kqol=+0zKRQp|v-@kWi?&g+tB%ZfxqCm2Z|<7fI6 z<HmS$)1ui8zp%IvC1e)xF@5~EAhl-R!3!)LS7HumpLz8m-sBo`B5GX4?J@J}pXc2l zBle|4UNu+xOfbR@3xD{u>0^c65iO38kOSIh+P3d~jT!=M+6t**7v<%BqBrGih;F=x z;wW%HqKX`t!C6r`^SC#MKtvhidIRar|I;?29KzDGy<y7DP5&n)FoAj)z2D1HP-g|O zq_G4ArntCkzYj}*x)&-SQ%}^bLmkkOSlTe<=7c)c3vU;&sGN4&sVIRK;^;}0g(D>V z!0FR$U$?Z?aR|H!KA?SO)$e%KG~@+ojaJ+qGr#_9Zg_TBV1mx-&&yJ9oFt8K^MVzi zoYnr3q1n!w<ISzDt6yYx{R)q-{n}smW%2iW)$5(lKmGrzQ+?ivYjr=LPM>d8y6R7{ z+2M(tKK}mc)7#N*23j$#Vam-Dbq)prppr8yS2m5{shg)1E@YTk*-v<IyOBGl{_oen zbAIL5zK(Y9my`Xm#_jS$P#<+|?bTJG$NS~w&+c$r+2WAne)H)<gcrb(x=KSKHLP>K z!m-jxlTt(Pn4CdP6{v9zE{Sw@gC>2Bf6eSNTCdHN^mqQR<@2gmoym^L$zwh<9duRg z?yuLP|NlJyKX3QjZT@yYQ#LxvuAktL<MsExY!zCU?KCLWExfOEEP2(W)YH|cr3o&H z4T(zl{q61Jk1VcR!we_XM8;HrF7aBm^}~#}44+efe}C`)eqZ{$%4J1TYIn2*W(QS8 zp|v9&N?DhjiTeMcJmmq?q|~c-mCg`6_HByGg9DAs%=Jqg+hbXaer|fbe*eFT?sAnI z?(Vm+GdKS}_kGRsx2&7f&dv&6?pG?iE<}`VhQ9Z1uKD6|6$?YOO=m9UJhJS{x2$s1 zv1yKw5QkGanf8JiS3%1Y7gaZ9qPAWz3%15hoJX8FV&y{u5+5+_thxE{aQkk)!iR@i z#p7!XnNoLpXWZXc8+&`&Dkmwf=&e~-KR!M_-DdBW)d>^zqc^3jlsdL-%I*`jXk}Zn zf<kK8s{8V*>?BWaGQ1(ILvVI`iVJ9nF|>ZlqD7z2KRsQ=?*_VaNZj!Dj>5-3KR?%g zGNJ9zlhaxykK8P;-k9aJ$#WLk-J}w08m8RTs85tQy;0>fTebHq)S)&k$xZ-tK39ZY zYT!RtUCVee@9Iw{)h~OSD@6%fY5$+JS@P8MR1vOj&Lh{R#63Y<!;o->Wyu+_-@XSv z@-a<HP2R>IL2yr%MknZm;SWce*0-r&@Zb05$;rt(!)JW`_iJ<F8jWY4KOUE_|8S7~ z<NW3R^WRw=VfdWdZ}%&sN?X>hX2<InnXQ}C&zq(HJE=bZi_zyTYd;0BCS`k_UxU`s zlkjHL+`RDL9s|F*-qU)Y@+AZktQ&ZkR)?>bTfSUp)z)cspHjv3<Muq8m3_%u<Lva< zT_rD%+yDD$|NrUze}8{lpPpl1Z@0Go!-In{e^-3a|Nlw<?7zIdU$32*XsUh0`|_eh zy_aH}e}NYETyW-}YgMXs-T&Lh?=_KYQuFfO&Hwju{=ZGL>i0dJ7TqUnU3S0r`_Y5D z-|zd~rM=EWcHO>TuPh{{=I?&Ht)nMZ`5D*yeZSwGIpg#C4CrEM`M)pR<?DVVuG`mt zT1h}Uq^bxl10LAH<uOzDv_5~RWXPtRnEaa8D9vijM9;{iDtKc{W^m}d#S;4~zs=OY zy(!hZN_6SZO~&cxmYiI9cD8x^j)H~E30LAl^Y*uo^-33iEf$@X?0QH$`_i@zNk_ZF z<7>CR-C_Iev{DS{cCwh~f(6}AqIMmKX?^q9_`J<!tEw%3zir<?_iE%Cf%NB>{q1ve z-<{B4O=^yM!(xeCRWLHK9P@WLl{3ZOIwVQw<ff0i&#oodt(p?xurEh)zRFAW_-{X- z&tKlTVaJxZ>bF~SbU)_)3R{0-`qAI#Hswci@BDRpTkh$r=R-U0gk`^3{r2hJtgEZ~ z?S8E&JregRRZwp?=vK75_bQ*yy%?Qmx6|t8ag*ZfbDZ~VTQfZ&YIFOHKd;yCzh_nH z?xv;?KP~nQ>Kd#7Q1g7^-%kP08dXleDn1=e@T8lFGSG<Gl%JMeALm8e|J=lH_e0^5 z|IM$$PeId9F*|>RUaX1C{u|SNbH`qhb-Ul~iiy&FcGEQenpsTQdE4(M*Cjr`R8{-- z=kxh=wZM*o$gXRrpF9@Lxv2HlrE&_>M#ry3v(P&>kJS}Y%}&i%@G_m2a`VUCb72HG zM0x2M*xJUfI<B5&I<xLm>dtL~+kU;-eBNkpjLaHS{b^To#CBafAL_CGRmH@}J!)?* z``g<VKRYA;|HpB5xeA59W~T%%{yHrGZ-Vs3;(a=YQt$tHW?uaF&xdw<AM48Zd%yR| zSZ>;|q2PAz_NAupcfa4a{eGSGzN*K)=I7?y&o}LSx%7QWwi)NK@_UubBSAx!?fmkf zY2wTG7RhW|?mz$BuRw{V4mklkFF!;Z&|5JTTmp7PeA}pUI;*rin&2vNjsAw3n?`o# zlTLTIdaa&*a*lQRyLY?apNn<6*}Zp`?UP3d&Znlk7QET{d|vk4&#%|-pEvtna=-1g z)z=h3Q6jc-V+{Yz<L>gcCbI9QhR2=U=f!PoY@E4O!~W});LO%Fe?YhQh8N%8S9^0i z*J6<g`ln;NP$xMZY+09_ar;?(WK)l7WZ3!W+pADp{owWiN(0QnljYg-=hL4~<ZNzp z(2M`JI{vQ~pIgnEukm{lwC}AGUH=p`tsTBLYU=KaM<*^Wb`QQJ_~f)w%(q+F>z6h! zdkTuDmny{{x3Ab4u@7`5Drnek_O{+n{&k-wZ}}W!`BqD7d+$qG`#PKF-`;FK|Lm8i zy_`jX!ra4cywaD#7cMoO+O7pEgp|;(8FiS;y5vmTFYO~mrFxNJ&u8DdMTA$LoSydj z;zSAa>H5*1R4@K2TPyhFv{m{(F)^`APjhZ>(``!DES2KweiHs<|D)R{3bwYL{`dF( zf7{#}QGUC-9B)56{q6nz`RAU4hUc>FUrwxOkFuJ~ae43Wce^uLpI+oRF@5RvwMMAr z9|xo6=8Jzc44VQ~PT#pmsDfy4@MHl`b4)XEiEeBJuN`cQDbYSARklyZyJc%^xW2H5 zbK=F@Cnu}lZae+&v;F_#jf$HdXNDI>Z+&+9P<m03(eB4dJ3v?3X77u52pZj<<??Xj zak=O<%N`#V?%>t3<wmPr8ytciPUTeCyZ0<eKWSu+=6<yH9>@a$T8)A>`iUJ!S$>_L z{`ThP<)$%Whk32zul=&ybVq8pp8{{|+Q`k%9{1b(-50;M$6c=S$;6oLx%SIqT@PQY zxw$d<xKi-6yXCXZ^Ygl=z5cUy`@K`MTpogQLg<G=6Q-Au0cd?jmLPB-S{WV)R5^W# zJAz;nS3sll0K@#g3!#CHb)Qnr@0MJCc(`3$dSmt;?duz||Hia}M*punze`?Mm%T(= zoGZK98gxI@&b-@oXG*Wm(zh;p;&JPL>Gjy}H`C|OefjNufBm22SzfQDR%Tn9v;P+N zI6oIXm@a53q+a{~o?rQe<EAxVFO`DE^+17z)?7zw7-@8ZPH*Ipn-7ZWn0;@)-OjHE z^)zDt+|RH3JbQXv)yu!%@7ve^tGUg$xjFW6Y~<Org&@aYd~#apQt87(t#?AA?aR(i zf2yVP_F8uDiLK|3Ol;&fk?LJKSAQ*%MW8L|cUhL4Vf(lH$O5Y=I;(G=&De|IZ3+$x zikLos{@h#@<Yey(YBGn%RW8lo@4kBe=)qlSi$O)Qgzr9`cgx)6DpNL^rX4T-xbfO| zuv66DX3aS3p4h;&(NXtpO(xo5iLW#jQq2zBSN-+gYtx!}+ZPfVd}L@m#d%`-*Z&Jn zOsYQd^mJ5np!YjVarW1<dS6A^hbN}|+!VSxOxCt)%VuXiyKARrtlqF?wh2#l<;<w( zD}QZU(NJ^ql3qA!Xe@Zf6qM##-y~5{dvepP`_0q*!96L|5JM>nSE(A<+S-0Nu3mCu zaYIeyyR^!0H`Dv&?d4`}`tqandTja2OH28d?EDd-|8vvqyj_{;6YD|s5NK4MulU2& z2`ov?Uixh4OEnghGiq*D{2O<1XY|QU_w)mCTpfhuxW-8wC#ILyDWt5pKTSQp?Ae)_ zTeGjHT~B%a`&`@Kf15<L!}k39_1gDsyIhsVY|qW$r9Fo`U(C|Ky}!Qx*26n@V%qQ3 zglaMV-1OyAC|V}-7MNfpeKTKnQmXe3J5xp6=@wcdoB|J6PP9!*TrkI>@>6R5zMpAT zrhOLiVh=aXaA+(3_~_`#lP62;rpMP+?zyhBdV+Sz+39=#d^(+(54!Sd9lN}@HmG2K zhgPtIh7mnx@_xO}e{$2(*lAIyL#wETE5s?_#^vPz`E?g6*&8Q5J-sdWw%Ee8e8wkT zx46yG@BVS)<Ye{BFJ&!@RLYz0lw9`BY~3<v_8)HjJrnArpMJkzZ~r#;a2xOQ^YhPN z&HP*O?#@o<cD}#Q&i`NZ;iUTfE!PTDZZK_hT>9J(z1Vr-?r<vSfqkmSw6DdESp+-$ z98+8z_T@bApZewA!xNuUrOor+Ojxn2<mIJly3v=oi;jR(^45Lxa?a1QeK}>(pEsM& zZ`=BImj3TY-TLcxy;`+p`{8!}?QgYgf5iX)8lO4&$BeqwHd3ItR6<{G1zL+Ied4^- zq*UgeQl-d?e6WQd3&#}4gruY-1^$p1DV$7)PftIZ0=n?^4O8^Sq@(TfbvthG)c?MH zKh1P@tI?Cw=jK>$E_-{cBq{sanxAhrpN|T^Xc{l(3))+-WwmtPj)hz2fAKi-@sVkI z<Yb1L_j|uz;ySfhu!H^Hrp*h`Qx#8u!>OE;_IV!Dct2QOL0wdZ(hh-U#{i*5x5XQu zEY~!7<DRhM=cbtFptN**<+1L=MTYBk=$xLQ-+fcgszjr_|A_b5sPKuWr|<oAN_%ao zn3z~m?B7S?`!m*Fvk}rS+5L9g?MtB6`tFL4kCML1%1?60@x@Z}u<0qJhP_DVJ-Mkd zzLD^35sR17hVu9KoX!WXu+eCYVR_Rk9w!lU{-VELsi^pEP@5;l<JHUM^ZTYZZH;SJ zJvrU=Ty|ELmigZB_*&EDpj~%c{PwKUk$U#($nn|v`z+UrJq0fbzIAc2`~PS8|J1@i zZ@nIuz4qma4XjDor{;2?-%AM|6)*ie)p=8ng!nvyBjOB=pEz=EZCUwRSVW7*85E-Y z_J1~fl>$ZlySuyJ@BMx+I)88J)m5R9t!Y2IwAW?GX?pI{IRjdgpEK#~q4>X7<7+=2 z6@U5i$JzY4$*YA=_n7zP-r4bSZuz~FS;uDIiaJ~Z+84>pZ}Z`jw?1e(^1S{3Km2tc znq$I0e(bY;cftzX!1i6c{IDR($}a_n1P{>K>-z5#bfhnRT^5Zdi&QK^6ZL`|rjIjR zZXZ{dky&*h;B%_sXZe30+HK=9K{ugp%egrzRL_5(PMD#!^=#iYkvpExtG@KP=*^9d zCfd`(&g~V_b4uyH>Jz>6X@1RPX>q+6kM>}>UWXj7mz@~x5jSOp)M<aeC`Ovi@;;|Q zs44|D>iA?VCfHgmG%#v>y?(#lUWTH?75|nOzPz+_<;s;M9owE}uiN?T%gf84Wh<NW zmE)&zhl18|WnW)+R_lpS+}dE<;%7cl`?nr$m#?#Ut!otjv1sEpzgg~&a#KG}+qkA^ z^M_}%^Ot>HzI=JH=q&kYPvxF#x1w)vEBr7mI`5?Al4dRbPzAH4N6&SmO-VEy*ua`K z&uFra^f%UJ^@KyXh3WS8eEF;pm*=^xper!rc-r~p^P<<zZx%G1J$tsdyXR@aH(etB zS2`6zJB(^e5A&Lv@TWPu?|ajwz3zn8o7>y<f3M1YcxPv^v{}xHSMlX{OU3o$e6sC6 z9udB|J^R`k%hFdNzjD|8`E*)8ed_Gi1>UcZ<balO#LWG1W0rn*Sm00le~;~>w3oXp zHG_Jl%bhj)BNWV*e(Awj-?UhKMdB%+O*vnt&lDuoIbdj<#Np%P(_>+iv?Gw~i1!Xq z_r6`O>czX=@Bclw|KHtkLwo(6qJMvW2Kpu6NS3v&`f_5Ta<ALt@B9D%y`8`RZ~g!8 z^|Ed@)!*KLmbT4(U-Nu*{m=5ZTd%*nxA!+_tnvHZa%+<>S2I|Wg0)V5%aB4%H4C0G znR?FjoObn()%F^K@u0w>G}U<4jgCML0fh^Z3fq)#8$t5`ELVVz67vIHZT8B`SdyT5 z36iYKmM^zfw*yb(UF0}YwxwtG!i8vo)_9cVm`<u%<hC1~Wdw&@1y(FSaOB95j7iFF ziVh79>5Ua(Yv=vmfY#h=^y27oJms@#jZpY3Pa#Nkjv6p94}oir#p0kT8<}4pK<C!A z=?X|+d{J(Xw)2jW$(2=WmeFJ#?W#pr3C^pqWT`$7O*_nY?!|nD#&t{^1+Qj3-Wq`# zU;&wpTuaZWoYtycI+O5)Oa?}b>kVE@)q(D(ddOK(dGkbBH8W}>rje0ricP9oq}hSu zwS-U4OL)V&=TJ_?K}lO-g$tnvPM<#ZZ-1%|>PYml2*}ldhWqa6^g`=OaEM_IOo@37 z;WJ8m53F!#IAFlCXHQOr^zM16k$vC<i`OJjxo}g`TmUU?VH#{u#}t=n*7Kmpj#J=; z)`O?1kH5!jpbh<O6^%Fsx)m*Vy%jg%XkpVZu(!W&%DIRMbeWxo!0mGk=7wm~?2JsQ z0uqIw)Wf5GR|Ze>9U|5EQDDZLIWh@3E}(7lFF^B?6>sK;p`SGHgvD)w(PW*|Gk+sb z+2II+7xADY!DBxwfOelIC@^h&_+@|gOZ4G)jm-xp1f@+%O|^UZ40)dlc0)sA7hKHX zQL$VEnm8*F=vce#)$XMj>t1ZRcnnh2BCjppnT0iuQSwrwD)*ZB{rj9%j)1%_(czF| z>V0pSi3(awuF|-W4hqgL^}DE3_$ZkWYF%R&myf?czluHBom)gZe3vb{y%=Kxq?SuZ z5#-M0JD)){V)r$;wb!T$x)XETN&(Oc<O|Cka`e4#Off<4iyZS@aD2+ll$#cFOR~}B zAW@BM#VXYeb$@?VR4hI((g||H3C<(Oj0_C}*Z#ebgPP_U8WlN9K=(oNo{ZT}gk$fq zmc6+#k-P1O2lxWdq~w>i;z5(qa^H$(2fb9a$guXwdA$V9bO;5Fw*5XcDFd`_#YbV= zlvQu)o}q6R?}=D2)9Ciz>T(e`n=KD9eT*q0COl)tjE?_1ALvLg0^I?m%6%kFDEd^= z?q2lv0GjJjQV~+9s)|JHulqacv5J(Cf`fu^$Jr$<(Q{B1%4171NCqGUMTyvqS+h<F zDS<}2Bbpp?l;?hzyid3;Kr#WGc0h(t2?H&E;_MXi<q%L1VA|L?rL5T45VbT%OY@k4 z1rceCV@XR-S4{=oks6|~tuL-jg3Rmly!0+)m~^>$Ur~2haE^(cPe$YCwzMj2&WHO0 zC&QL&P0Y@qBWun@DrTz(cqnY^zF|^zCoV*pNMC^h31PU#{)Udog*CmWShBPgV#5CY zy@R?IhS)gt77#F8ott#x5a$;Sg_vzEYePXr7s4J~sR%6$970)K&Q$r_T;aB$jp<No z=*^R7(Q^|~CT&P*?3i)({Q2t!*2yPXI7$RMauv<mRr7T~iIrGCA-OHYBcZHpoAV`5 z;d#YN!K{TVH+~s;r!8Foh4@+~7cuVyL&k@j{%sGoB{`TtS#*`ghT`Yvjw-452`dD! zH{M`bwWEBdF>34*6;=)n2OL<IEnDU{$0D#@rq@(RVFK5YUit0+9kvP1CCh0XA>j#s ze|_cV=Fa@!GLxb4qgY3@UEZHp@1jtaY!L5O1Bb?`+TmtWy&w6mM94BS`8NLi`E$op z_8pBcx<Fw8$*;tl=a9ey%G#_290C&gjWcJ?G`z8f@QgXuut<<#3Jwld_nRZ}zNYu8 z;ELrAcWxCn^C#cGfa{7@{E>3t2B;HaBGp^PR<LH)fgM~&d}X(PyO9$tMtBSdn*$9( zK>jP_y%izexQp}6y}i{dZnvI8tMwR(D<6;fClnQZI?^dz>isA}zp+rLBibVG$;aDs z*ASdO#pX1J1QsUk@O3r?4-Qxy&0W*#P|Nb@S#NX&i*&0Z$uSDf)W;$cUSC@qml8HV zVA9mSM(~ERzK_dNGLf<}R+oTvW7xS^q+`3n*|TSR9p4=j;^^6X;LMqx>(hFRs!ha* z3^5cV7pO5!o;;bGn>$(l{6+^RQPGau#(9@!<+x8nuilAsqd`?;h5n^?cXw;g+Gm){ zl&m9QzU=z6-a2m+C9<5?#w08({Q2|eWSOfQO_)T5I%XT@os`ORnMQDhDT+5?VY#6P z>Rr*UhcmPq4TU?T4e}1B-eKYKg()Ga$_glMyt})6zC~funI!9J&I_I}6<$8NHvIG1 z<DbY&&ZiVM6g@q)bLY-U&kKF}58U85@>a||R`OkKG5#!yv&6X|GGoS!2}aVhSthqm z30BD4xZ~m*OY)K)=-$JJ)0x@%rWnso4r5uREwFuRN~ERv-mY`2c71P}2`=-y^42aR zF)SU_3@j}z?d{{+pU+=A@xTVwM`2ykTDy0OaPYV!+_=8>AE$uAh5iE$W>%yY{Ttpe z33gdld`PhO7ti)ya1L~T)}++a`}%udv%IQFkF;iFdMYk)eed;MSW^qmq;MrTAt^~I z$w=LAj>iAPXVN@Co2)h;(G@oLvn}UYE!XQHsaFb$u>(m=i*IuFl2}Y0&|nQ)7qhea zd!FXzqw^M*&2iv3!Yj1h^N!BqJ?6ck{*2|I6}qQ%0?yC9NpPwhHDz3JNyy5|N=#gM zrr%_?bmK+tBff&$-F(d$PwO-vc%fee8nswZ-e~k@@-v*i$6gW~2w>foch}0^{{HXe zV_8BH;f*^4AC*bGdb_NcX)V*^D(6UXMyAJ#7j|V^k{TQlTx;U@*X8Bq*~qnQ<6?4U zee|e5IzcBtw_9t!!^P8~wM;A=JwXfp>|P;BVgud4p|P{GbLPyM!s>oKpLV7u3r6TQ z?zr-}ssD6cgZadD93r9->t5gA!NMW%!gaxmdCTlbEX5ux8km}vet2*&Zk|<GyMrj} zqfdR^H8$_UR<GFQAo^aRSj}O99aHH2<g@cpBMN&UBh)n3v4GM@@$++Tiv#DkuUK2M zhxJiXpSP9Xo4R-0xtu&<348LbRx3L!c*WFw_v07B9eflU9b8$jt&g`iHr~8pL%`Sc zC1>}~V=8=kj8$fOp=-XwWx4#us(Vwzd>b4>S&mh+ZzJ`*<1Vh8ySqyB^4=Zk6b`M_ zxMlNNM?gF)W?kV$vAyT6svCGUTHRlA&9A}XC#%~|c`1TxaZ%jP(71|YP0Y@stgNiM zx_y86U1ulSvOap$<87jMW!0VFXOZcRRri)a9RF&MeKe`pLdUYIsi~E{yK^(cWYwph zEtP%S9b&o)9gn5n{CX+0(V>#%*za{)te99<=>^QYd&!3b)p3Lpkj7>Q<BYNo4-T%f zcgg)1D$>ENe-CsY<1^hucdR%<J}xs(XJUD!d?E4oC&Cj`XnFV+IM~zD(h?IF+V#gp zzkI>^h^hOuj^4Iy;tQKuv{VAVd|P?plFw9zMj@^n#a<ObKAngpN66(04h;u(fV1lJ zb93AIWVL>&Z2rX}CfspaQ*YIdEyupD+qh1OOQ&qBe%YQjPz`>7fmQ5ww3xNsfrX`L z^YMfN%^??5L|U4fnwp!JKRVKRbY5K9oC8Trg*T5J6<)8^&AoD)`NY=#jR%s#|0Nwi zKI70O4grbA14-4Vla9L^s5+AtCkg@DjTN7-yt}(wy7yR8zoE6?0!;yN&ls(^(6H5i z7tZU}tvY=@_~a^10f{LMw&?+rei0r3Lh<2(`o@zdPjU#zT9urrKHFvY#&+7*$3`99 zih7+p41Vq3^~GU<7L#lK^O9KC+pGK=9Bf&C-88?n4SmTB!MKu`=dfp4R#sM4US3{e z;=+07>#i4HE!_2Z$?=un=WTj;H>OH&r^Cf+`&hq=+g=GP1o$`Bee2zVzIcdmQ^ZXf z)Qnjhz5U#oGe>T(dG%A~N5y(8zw9}8ERGf~axZq3Y;~B)+I8>!%c!nxq4OCUtGK>w z&R>#?wxpAwe?a@eCr_SiUH;Cd;=_YZVf9x(BPy<j%c|@7#m_lnG4*s2r{ol{O%Eux z=?$nUIx+Cp-s<mn?#$Ufd+ImEpBC`DA-BDm-peVVvDx9Gv}LR}WufP#A@FhO+UV_W zQ#9{QxSC<|>gSywpVnF3V7B*joWqg1N$8&PvXG+2Mc?yx%~_OtRo!91Jf^>Iq%)(@ zmvRtn(}p;KI>nKXazKf}e-eNGRmWLNPd4omn%?3m1oF&oQ%XIfr6pjv;^fJbbFItG z;)}~(Tu|J(c^&@^_CN>I#VL;B4VO|x_x|(U{e&qt|5!|GiRI4qH7X7b4$)+$ykkD# zrde=saPUOy*|TSNTZAsYnDIN|n}mFi>hVL#KN|%^7=?6_%NFUjgAzubKBWmGKo~R- z;C4pqpXuUs!988|f`_vHt-i4P{H*s1*?zlscKtY?)}a$7etOMG&aFO7sbU(l$~><J zZCU$^h2u)_g88+|xvNR<%~&?tFTe2be|^r~U8dXxrrh<Ni?{yY9~(dATFu&s-^c3h zW=ZR*P4HDS_mqbu%Pro!rcstyz-4CRK`s&B-AfjW=dQM6Wcn)dBK^L{Z7o9k3$Rxm zJYfqmZmG)d&4~WWDX?O>gZ*!}TVd$SSqK+4pprCU1C#4zy_YX2D;^<sHH(5`$X)+d zSS=IFE6oe%_f6b}zATBz9+boyhl^Xht*R(14?rGlIFP{FwJi41#cqnqOGtx&O*_Ek z?WDdq3ezAc5DX$37iCT_`7)ZcK%oH%UT}P2t-D5(7S>?F9(1Eg3wJ`o46)IqHJY>_ z^%pp8j8=%?<_h+P2Zq#Wg-B#Tfl8#&q=k`wK*569*;>$iVA=jZxA)clF8P%I{@&it zvj25;bV};(*lLx$Nw914V4Ks&`6pFxww2F~aL{t+1)tyE|CMX?{93*&Xm#3ZGF!x^ zB0Jt}Iz20Lt%>QhrF(a|9gdp+F>al5riU)~;#AKq5ox^s>r{m`njJ3MD$XsYtZjNM z0(A1hMCI(Z6KUz`%8u7EOkRBxsnW3&lRMqd5M^8?rjuNANw?QQlBMgN@yj`sHD3+b zn9fe0`1Zy|Wu*{yKA8@StKdHWmdf|5`4%;Bt#jbswd|op49_%&1w2f9?{}V^MX8Me zmW`#auYpc_4GI+OkBW#`@jUqH;pox{Y&jp;iUPvleKJU7N)^zkYF}2YM^TT#;Uw!O zlgK@pt1o6;`7HVAX>92R^Y~)1&dpa>hfn|0WM~Vv<~%NI{@8ze_x<>~RdF&O;xG8b ze-%AxQhSg)&Y;(G@@xU4TKAsJQ)hX3cTV(ie$2bwad~HBm2hg+(p#&=XD(V%vAX<J zsEeafLqoV0j}qIGQ!BS_Ik7%aKx=JDOVFvM_MiUN*cPUz&bLfI_ipCQ&EIdH-=pyQ z&E9LbvTdu^x^DXZuLN}^A@0J&VI_-FO=d}niP`yCvu1V0Zh7_dXvNQJ+3jk10e6<| zh*Ub~W!h}AOohocz3|qXMX680gByF-NM}Z75;q}?$ckTL6_TbLJAOR5ea+6DJFDuH z;=aZm@9n-VZf=;DdcS=#n*b;ac+TCnGb8dRxC5&H+AS(<776VLaC`r>zJZC!mcqx! zPM-9%p2GV?{bOPD<7dZo`=s~&S$tZQbBg1F7gzjl$81^i2i)VIUaG9CP2wCGL*r9H z2}#M$ziXE*Tb7od{`#kEg>AL$cI&*VJHI3tP8(l}X$57mbKkd|bv=E`{s7Z^)%vw} zef;)auevs|QT#>fU60dVq;}I2I$4t5uex~gVrOUPjkBOZ!w2@CuN`D%O_Dg0(4i>E zeE3?Lx5@jEXrV^d<<5G}x8B@Y+4#rO)^={$&!)@K+j1<+-`#N#a$Wvz@ArE?X;)W; zs{76HsGcRYZJuv&nC;)4=WF$fcYM2*&HkfLd~dL%w@Q`f>}$#-hs{0Kq}i)Zo;>Nc zIPgnw`p?&D0?jH(XWwLB`@JOCnUl54@A(#P*VAE!^-`8ozwOPaI^4#aetzECMGoe< zep92APgu==yX@bpCpUMMW}6wX{q7Urt4y|AxP?3Rt~hq=*s^8I-UNqzVb1^QtkCAm zGf%?F%yjn#&J`gb_q>I<M;hcFt3|zR73Ql$R-XHqI{(iT_05fjH_G?Ch&dObbkY0f z7CDkrzKBrA+~voPA5Tw9>#Dn|W8YZDWH=`&;O3Pz7ksAdY+-uqR<ZkWrueO=l1m<E zJ_)(?ebLK<_s(jC3dLWOk$!agQmMjR{g)r}E|HPxL_}}wC`^81W@>GH`z-sJPXap( z8YL1YPo8XeqpQ#VCpa@~@V_0iB}er0@`=G0zl&;z<=o#_8~t&=^}8L5yY9Z<bav&W zADf=Z2*yw2n-_Pjcgq?R+~o=Oyt+$JLQbwPcImR^%P;fKUdpM{@4&N1qRx<Gx8&+i z;9S3Q;<lX`H?^MmD=%O4zWUpnl}Y;3b|Eb8+eMzmRvadWPf7K<{j%L`(pblNBtRtN zTH+zAP`SoM#VWa#7dM5TneXQ3dOv^v-)~yql2+cHqt&UOeNOOW>dO_c$;zS&LK8AF zGIDZq($dua_C(HdsANehI402Bc+09vRxyCBanWSe++w)JN2i~y77kYZn0nSyX`ha) z7I`J>5+-T$yg9RGdF_vzrWTOaD6!5k<FcWS?*bks*L2@o&laVwo?+iRr)!^nY0b@* z!OQ>sd2avzrGGu>J`KNlHa8dFxVbs~e%<f4=JzU;wR(=sG)}KtX^>U@{(b$<s-UHd zKBiv04BBXVVxsc?-*?~t`_OLx<<f~4kLCaWIKJY^)9LYj|NnhmUw?M%<_qURr&#+< z@wfeYrTDz<_cO-lW$bDy4szN5Jn5e%>{1iCYVJlCCEI(xR%Dd90uqvvGv~~iGk5OW zXR}i(Ii~n3wB_+UkT|x?xN#DP$Xw;j&E3=1CjB!h()zW}<zwpleZOA4ySw}Pn#jqY z+<qy`|2$#7|L0lr`!$;d?*9LK|Nq<D+x5%*&Ri9<xBuAb|L4zhd;9WtG2cb^{r~ry z-|oi))9W#lSHBIO|Le-XzrSaHUE&pcZ2DY_!bg49?>f%x%zFHMUF>e97i)ft+5P|X z8MH7aY-`fdF3=ti`+^4tetv$wd;N!v$K`gv*>pNeTFf1^J&z$LJo@{`)c1QnpR50K zy#7!6r}ERf+g(`VzxS>QJ14R^<MicCm%u$n%=RlTkt>l26%`dVH8y2Jn!h49{Q)fu zX|`-D;dx_qKD$=G+2JDRB&6)sEf@do-R}2p3&K`e<y$dL|MzM7{t{-1je(!9O_1ve zSmQ2Nxn%Y&xvCcnw<Ki$S}gxJ<IQF<#*CYw;!r%cB=F6}Z!Z@2r~SOGTKD6yyxxsN zpzTQifAs&qv99gQk6op&>wcb&*NaGe6Delv#eHse->oF;&DU=2>e26huxW*2cyYk? zFbf0sOXtMihLBvnH&$^S;nTT%`LgSNw`uboLRpe3&hI`OVEcS`oc?}?i!&!}+W;y@ z;xGN!bYt6^(({`_EPUPXT-#&lyE5xd<5aPibN;<ax4&Jfy!l4X#$w*Hn+3H%yN^;V zt&dMX+Lko`=b7|PXXXkA=C<qZm8<{r@!Zkq^Z$MvxA)sw^s<?qf1B9Lf+yGa|0`YB zmiOqi(vCNmy!Fq9O4ptYHBGR;{7>v{6zM*S;ykj??_=ukJ9lC(zMt?^J;1e5;+5fp z-1M;3q3cxU>RQELN)y+OKKjR7JYMWzs$kdDD!mzf57ua0?fb|b|Km`T=@TQ+hSj%O zyPwaiE}D7!@17@<ye|dMeSG@ToV!cb@BjDf^YioD&5RapdB%J8_Lj`crPpJ{|IfW{ z#wTZ6wPouzi%)lo&u`5>FB%?Wn4h~*JUYjI`n7EdH8(qj)uWnE*M01cUow>^#cHeW zt%IbO{-%Nwva)k$&C>eybK@TtHfII4dY{HwK4o`xnjJ27PKG4R^G88P1f&O6eY{uw ze(Nzw*OE)1ja1Lh%-nHgW$<!7S*tCzzrTstToMc^{q*GIHM1>k&8{9-ocV39@HBK; z^~+j|)n@jd{B^Ov?n>0{ZvA~TcIW-s^X*plV$Z^_psd_q|L5`aeP5R9_}`koBhMvp zY3Vbb%|R25%?fhT`o#8qyOq7W{QbFeX`SlxYmC;eo!Ph4==24jn!m5(`xk6BNl$op zYpeG3x96<i`+PRJ9B3e}D!x=rO>L29<THbvzh12_-U`0Eq|KwGPk*-gjyEfp&-2Qb zxKi>eY)e1swKiK^!sBDT#>U33_BPYzA9%od#HHh<!H3{D_R|UhCBK&B>P2nq`dPd& zFnW7luk4XNk)PH7|9+3Qz9;4J^~dA>?P=Z08+V3g$-TVBvGVcp{^w>lZtbZoZrQLk zOk!c;^_XJcsKnQ5F&pC}MEpOy`~ux9lbzenFMlr9yy)1(yho>#k~eiM%wGHX!NKO8 z-k{^p-`w1sdG7LZ|K)<Y8`s`8K5sKQ&Eqn^{hxxU#O&OOKl`lTd3<)+b$4EpV8V=N zJr#Su{449w@BXpxn!q-`vwph`7+#93%_zS_a>>TC;lPa>H{QI-x#-{bRNdePlc8o( z7SD$x*S8vRh|G1#oDDASV`?IA{nfkdZ~wPs-DAPJsobYu$)t<Su33707pUJ|Jty^Q z-DBzd9>$=18pJ0|ecI#l`dTLFij7%{P0uggQo6gaa{c~)RqOQc9+`f(;&HFw(P?oe zzVB~u*T3HIe15&%S%FxO<gNQYwCXQOFMhcrKq^Sw;`zC`-k+ajb$f&MJo_0hdAUMY z{Lk;-_y60SzM!`+=iY-&puPQ(2OIsDm~Y8QC%shXnRnpAg$qZH908RJ{k>1s1LPZL zC>Z)CZQ{AdwZJ`9K*MV4B{Oiru=n`%xA*tkU;nuK-7f9aH!^afsl|dp8)L)YESz?A zCU<|=hjokH`_s~&`<h7gZehH=J>P$G?Mv@?uk-h+Uax(5^V%2CdF;>P4fg4j`BXoj zTORfLWS>iYvGj_g>k@C?^mwB5pzh!2`ODLzFTXvsZ<b~8!yNJWnvd=BbvL3s%brYh zm-GBR+wJ*Ny(>MRK&gNG{=d0liLyc~BQE}1mb#S0rI!*ajSn9_T)9$nVyf%@P1E*o zV=|0PI(6iT<dRZ{_)`i2C4NgG89>~2pN`r2sQq=d$8PvqMC^E)v_r1u!$F?U)A#>L z4U1L*Z9ScvHQl22*Oy(TuQvq=28z1RnyLIr`>xcQ+0R@XZqG8!-gHZ>M?cyiK{x8t z5n=xnQMX60R<HLnm;L>qnZNGKV)?t@x9<n-56<8Jw`})3v;OCY_FY<~bePxt&V;zv z?{>d`7jygL<KvhAfHs&<+yB)`@b&aZE(baIZ7Mz_ge_6)3|W&gos76|JMiMgi!WbF zF0Steb-6VKE~~3uOjyHK70A}O$XFZFg1lc{a}#twV42OL$x2Mx$#*s+I_urhJUeG; zeAUaPYdlmy*MX%j2c6INCFFHkX5=}OiEd6y1rzo6{YZ+6J`#5{FDdh2<>gH2OSfjt z3_g74S@!2^V(iLiba_vAefj-<|9!pU=Z}qzjWhd;9&8Mal*$r6`}?u{{~J3GS^WNV zTK~9g=YH|H3dP<j{-N7*Zhiu7F5cUb=JL0lUp{Wbzk{bI+-q92*PG;iZa`@xM_1?h zJ>7NTI`)iAYncqEy37o%_0;kF9qk_eTsd>I^>dk?&6znNUus`pTMKICO;oDid0>Uc zEGajUpp*{X16Kd{emo|f8FFix@9bHDnSy^rO_zwuSrk0DvNCvXwsr9{pB$xW(@rhA zR3zOFI-6$p?-^R9efqm!Eb3M&TQl3L*(y6Rd+z6J0>5X0cB2b^7S(=IzW?{#xz^>! zj-^Mco^{dN_vXgNWX+tMr_*-Fe~w#m_n^r>o$|ZS&abfla9dRV!Q+)~7xPF@{43TS z`0!!FiA{^-Lr(iAI5yrmt)muR8qTJx-+Z9yu+DVF+~Rjv9RB%$`bn|JqDvQ?2%S+? zHve4H62JL&wJ(=WFN@z0droKHn|ammJU@d@x0n4jY3{A<`SD?^OvQBG7QMc?W>Sn& z@6}fUueM%~`+e{GzVf@J*Ow+HMJ7iHOU8aK+F7t)r$GPu488hgxp{j_KA(8I{r<hw z+~z5|S2b>}C%yg;73p{|edWrPi|z}Z_HS_b&SZGhWoBq$rH<$9-SU}d=fK+RW?H}Q zRTl)TJ9K69?-DVUtuH>N?tGS7m_GOY-P8K}=a}v@71LR3998%2&CPRLkKVj7{cV@_ zx)%ZIPb&X@y&k<?{dCtB@060WW_x}->drg|+CQ(iH{tWG)E8>|bo9i<bHfiWkn^9| z{moF9)WIHytt@SAZ7$P9|8_*xF^TI4T-H^K-5SQZR=3&VqT+N&3&uZr@uK%nJN2{O zGN-ES)9JnRN+w=RF!A}hxzPnGE)%XlJ3D*x!D~^^7x&xEn)`OniK8{8efqBp>v!GR zddpPjR>89~Gg$@MG@ZQyx5Sg)V$f1CFf=qYHxK_Job;1Z;DxJ#TCC4rE?tpXQEZKi zob@0D#(tiUspj`89&b~szaCqDH+TEpYe#Z=^`p1v#ZEl+ul`>4x}9ldW!oYX*X@se z7Y|zWn3J&OSkuzdb&;E&Jvlk~ZcmFzn0EN{_jTWQzbV>zBs4ts>&){t&!X@Dx|ZB; z`>oyn&%<VZyN>MK`}=H9U$X??x^;KU+Sqwp&YsnFtM8Y$|MzC|`83`PwRih|zbl){ z^W@`}->%j(rcFgVW`<A?Xn_#Z;>C+^roVEvSDZE<e0Vq0F_Se%iWW`;Rg6!d6(gvK z*!%tO>36$cue(z4{@&ib8}@v^S3NzZ$TRGrt9We5t1Bzxw9b6}eo}q@n`PU!1n-R4 zpfT^-&8ls&e>2yFeR+Mi{C@7Up10?(t&g8yx^w1^m&<0yRXl7ho87cDw6ssZd-K`e zhqtz_`uy>W)5Q(-Kicavj@>$5mJ_`_&-b<rALy`~=eO8i=G^+e=&u*)<zNx0BAhvM z=A!w$r~Mla1aTZm>Cue*<m&txR1N-sR)d#stawrV{$ncWj+ZQn#=yNBTpk3yv6~hu z5$L^s@3$y@(PzJ^U$5O>791V5%Ct$xR@(RP-}m+V6Xpt<m%m&(J?*bo^C6`cGwXXk zHvfJ+o~!M1c;BT}i>`o<mb*61+B$!0qFiEm;l*e1T=U{yJnGg5T`RL$s!!Hh%;@D- z&?%7}Q%@W5lqtQfxHymW5>I0-sGalVNy<h3wx{Y22`fR%d6TN9mA$;M!H7ddwguM8 z%L#e^F?DCdveSCI*W6tft$CeYz6Nyph|SmS`#tu2y%v4*=8R`AeSh9OUpH;;s|glG zPfqC9ee6za1)UtLl(uT7W#96xv2{P6a+~RIUwEVGW9s+2<?-!prv9=v6$ZJ-*2V7L zr1bmSTW^0|i3QWM<Mf)|e0g~}Qz6>q-;0ZjZ*G0&`{dmN-R*ZKrFuU;ZI*j$3b#C{ z!*ywz`!CQvNvHV84uRzdUcAW2Q49K#o%oYeAVRKj#ymsM(>tp&LM2(c`VNDJki!iB zFFHQG_Q%8a*Vop1OY+NFZCP+ex!-1zSm*r6iFa1&MsG_wm=rlLM(KLnjZE!6lh1Q3 z3X{&xGJUyK>`vYr(7m>w^(ErP1mn`r&pT_X`Q4c5)FrFr{Tp<g-}TviyODfzWu@>& zwq>DDADv$0AtfSaS^uF~{!Fxg*@xZt|K>$K1T{3~dacgd8=!YdSBrBs=xoTN>=qNd zMBk>7-sj!Kd1RkQaB#5eeqm7deJb9uGD~^$Cf$Xqnf@0q&M?~z>cpRSHU7G<K2qUM z)$6sIkH21zzaObqCeWRGZj+LB*qVyBTd!|Y5?mmX=ymg^hs%NRva)+F?Yak)%yM5} zTbr3HXl$CVdh?)k-VVjH`x9y+Q$TmS&J)e|J;Ili*{^i(?UR#}Be&g=^*p?LlTD=3 zuF2VP**C)9uutD+-@EPftCK=IFYL*9zA^durp<F7pH{m4@NoO(Y*(vy|C&BFME<?% zyJWB4t!~n*!=*wub`(Aax9M9zO}ls|!^GrU)3PKl&H$zM39!^|a(U5_=}*h9a9x`J z@5}PH1xi0Mo}Zhm`Fok~>?HLyCjY;^y?vQS{`ZaJoBp1-lykPkW&YBO(SaY#_y6>r z_4a1^eBbQuFQAizOq^%^d&plu<MbWhnwzfTu~+i$uj5$O{cU-vn?+pJ(U^jm=Rel0 zumAfxGjw9!RqNVcUzSdfo0Zmm_wps}WiLU8++?1+6PLq%Y`Sac&b2oeZDZY@;4K|+ zv7{?(3peQ%m6wvhZUtX|fAPOI5p_%~rxXMxUw2DWjr8`u)U)WYQEnM%Xmr2G$JB=t zx;eP7w#!wmxT^l`*smYQ?dQ#M|Mm0v{PRz9cq4YdTD2N<NlDDMA3yj1|Gj_bt*FPF zl@_fv75jSJ{$F8sZuPe}nb*XkSEU+e-#s$jb>)d|_5c6H%w7ApH|Hf=;zavLkBee| z%>Vy$evIu$<82kcuPnEldRo$6fB&CP9Eqo&p1=F_gji!s`uTajn`=KDWS{^4&+}qY zyPr=cXU@xebQ*LvtGC`xm9^?-8P(tKmS3)7)1Uiod&YaxySP&v6G}?1Y)f^u@0~W^ zVI@lv*KrrU!&QrTLG_r$Wk?5a=ZVFxH}~tv_|35p40P2@TXKDE^!L5*YxT>7t6wgi zo+P{xRMPF_`S@8o{^zMZJv(c+&SF(pQ%lNUbGV&<|A#}|-|yG||Mm5CvFJ9pd{b@v zq9-1D>3{y5aJTz(|Nr0n7x!5FKB3&7vNd&fy=(47-G9=1y`^Uw`(*c7z2EV;ucHc7 z(Ea-w|KHU1s?Yt}?{_mpC-%MA@a9tFKkaopl)jmAZ+BZP7`<xivE!+h%7W$}FS^V7 z9{!SKzvG&cpvm{A`t?84?SJ14_O}(?bN1fSuQ@k2scxSbWBxJqV(T5ToWSS4=69#O ze%A2U=WbV-F6j-l`>bl}>fLpspzgv`k&c&lzN@-2gX+kdWst67@y5Vz(ReWtL7uBp zo2Go)whVl+>9Q!v%p9w2#m~=OQ<~fV=hyZ9=dw<yrlqA>P4_+THY4I&@xdRP-c{E= z?lpJYU&PxzA5_Jb?PL`e+zJ}C-ICVboOyQR+6Xa?>$7%#J>e=IJB533H+ZDeFZbRa z%kcEqd3l+iSIzUYj^3hAdS>~hVPIq=RNW-<R|T9|bOa_>RaETg=kE5N?zrHEfG=d; zMnASDGDF6`&Sug4pi6u&Z#-HRTM)_iyIKCv0%zWrD>*)O)t=qd^jR(G{<<w5yGxGT z0UdUB^X9pasT-e%f7vzLW8I7Vyz&iOCT_eRS$34KbM?AiT4gz)b7F5vUAZQuC1JUH zk8I%E+xh$FZd*R{-mcQ@YcqJI%}RE}gGNoJZJycj_YG(oA?kU8jHh+<7I!jys%l_n zCMF*%{#Op{Q+<J8Yqg5~*Tk-a+Sq}!AZ_gV^XB>Ou6aJUTrW>QNqaTu&aRiLQI`e3 ze0j6^d|BmP(D7)C=0|CJ_P@Ee_xF{R!FNL{zPz}|x7GE+wZ;8*QeT%`3=&lT`fm68 zWmD}xolw4c71Vd^km_Dt|IB#)Nxo-7fw^zyO}l20|LeiQW>70}UCuY-3w7T%&riKQ z-}dtv<C`nfl(yGLeilkUH>dOVMX8=?Q+u=KS3K&hye-UL{^rKSr#&9K_&yd+{Aqpv zr{A=lGb=tEWWRki=Ii53|L$+9q^In7(6;-oI!;i^zADs_d2jmDqpqM)z%`(h9rmw` zNictF{{4Oa^}jC5|NR|*B++%lrP}Xz#Xly!^(wXa2WqZ;o_+t%^ZI|!(`rHW#lNTV z|DN_)zpME5a=CuO<TcOd*VkQN7rRk0eDk)BIlJC&yA3*p%r(C>!?Qj3c%N){?g_i! zH_z8S5}to!TW++=9M>OlTlP3lycT?M@%h?!#k2o?6VC`ddAIz&t$x&-*=7I#es|}& z?#yp1@-R)7>3Q<~jW3FF*tQoxKL@&4@Bg>_|7D-gn*V>{Za-`Lt!rwQm$WXN-Zhcr z9zeoO*0#1bsb06&?uYsW6bveuHbw{d{7j8YiCM?P<jP(Qn)U)!u=AM6npB$>oRE@| zQdYKYUcBRLQ_!@-l>W~Bb6)pkPjy`IA_FvKO2PVp1DiN|dV9~FJ$v=DaK>J>fb_;0 zKMem)&s|x#5Y!6z0BQwHh3v!Gl(&TBA+!iN&_2qlx<6~Kvv8QO9y@+~divJFsUV}j zQED_><I0sQtLlD&j9$XDQAFo((_^7j0gw09<}bILz58T(I|Cz`K_2B$FjM~kr@#r8 zmKnNVCq+;Cwb}Y!s#0#*bk`JRhXv2bG}bR6BV)zIj4OX0r{7g~P*688HWuzad}*ys zmR_^NyJh-6jB`IX%}fOyfXnfPtl(B+Jea!gubRVxxehM#xD2BgZQZVNb=&T*Z~K;? z&6|E4bkFS)G9B;aP!Rd+?`9LwIGEF!X-RK&{pYSN-}8CmmZx)ztw8rFEps4eolK*v zxIoOa!}&}sy95Q2w!Ju=U#aybjbTaUrD@BLgNAG`_$?r3Wz2y`TpW7Y-$l1PX5rYv z#bFqIM|6kH)~)wmpL4%7t^C|e9Y!XWS>%O<Sh&I>*P3rW4GfL%Skuzd#L7j3q9s{& z$updtLusmZfu!n(pj7=uNx=KKlAg;dt!9UdA16?@9;xxD(2N-~Ry==xw#v7`;XTvF z2AykBOXh*Hq7bEy7HQnLabs28ZIGjNra9;+cW;texrB$w)!miC(yvNfLQ-<&^LCJ< z4?N;Jl62{J*OE4nqa`SG^ou~yWOZKNx_R<uuT2@5y0rzmJ#{o~^}M=3ZJGlflr7A1 z=w~uEHval&Rpfe3fe5a~h@h&NDI%ab@Qt7)CKN0zYm8$#cKrD3pPrlJgcUZFFm2rM zWs{y}G+X1M!^)uHwNK#vnPja~5!W#=GBPqZ4?pie>+39r#-+j?t*I3iKboeiv4ZOQ z3eb#SSRE5+_Y*mF<%1?xsa`kR{pr`TnOLSpDNLKr9XCq^H2*3HS{Oh{pm2lE3|sO1 z_?ar-h6A5Cjwlr;uAUqO>brP=#^AK=!JE>^SxQsD$fT^S{PoWya7_9&Mr7$FGzNiE z_i;}OQ+F2^4==B&RBu(?NpRL#?x17pDz5R<TPdJq&XTiwQ51yrf)xjzJV~*&PX>o| zyn@)AMcGsSfC40h!T<^INGK`UGVi_tDBJuM>PTIF!AP|jG(t2DG(vO=ybrl5(wy`@ zsEE*vnKM^DHwQ(c!+w^eo0?mEPR6h`E?Nv;t3*M{zRTUy({trBbJ|`thXwnY4j(>z zcYR3FG{*%m8aye?=-)wyDt-Oa07@P&);s9fQO)G(OdIP1Z1=~3V(^qg0{3RU>#ruI zXj`RSN)y+mAVptT+Hm&ttDhgY#R+S4Ht3$&6|>rV(%KgrJZHyJvKH0BoXJdo_4Dbs zt9%!PFl{q<owifYbKW9l_1v<Hn<$ApjvIT{%!|)^ZQ2;bdE?NU*-v+=RCe{v*>cnM zGzE!GM<e0$rmDJaYp=6-X(VuOW(|KcDMiDog2KSvumGIz_D9PtiL?Ln;V}2T7mFmX zt%)rD^yH*t(5300xP5$lL}XWd`tG{mMTD1hBqc$9poyv1ZSlPOy8J=wL8o7{=9gUL zSsk|4s_@Yf1<jY<KUtG3wX6c3zVCLpxN(ZvCQ24GH=YA!o3DQ|Di2h}&i}EgnVtV$ z&F8cKe{SDD*SdV)*K5(tW!k0cVoT4hp0*iO&IEu4jVMW`kqJ3DYv#%8@<*%(-A!=L z{1?-?X~q9H#rV&!`}LA>_tag&-IrK-!d<6DE_mVKJ3E|`pma!YeEITaRoxbwguQk( zKMLNw_`3C5ef-~7;h<%Ed~IiEn{Pk=@BjHfpnI2R8mFIPn|ga??*D&(Q?nO-`=TMx z9b^@-^t5Kc7ro_sH7F{$Hy^ljC&t!3YF*-b&}zkH%?}SWGKabd#D^W-9k$}^MvbM+ zp}XcVwZ6+t@v9D`$j|JJ7cX9{s@oWIKJNLW(^|VePyeyWs^?zBEGwNDKT!YD!iU1r zksWk^1;mDK{ngKF*C(w{&V03@z%rDranWNf3L7l4Ea3J;#JcqL;;Q@JTv-`h|L^ns z|6i8dgJ#Rs{pZEhodn&xBzviyPd4hG*^Wm++(#}=xtID<h)YD4Ia9oA8U?-E40Qt= zo0#+Gr)J-N9rx&TT<zDZcXyYskKC+gKF99U#QvJkv+vh@K5Kq^rQNR=i_P!Xe6IiZ zSO1cGpG@X-%f9*c^>ydx*@9Bo{;zBET_2sZe!u7azTfBOT8qEbum5>E{`alxdV9ZI z+QJ(iQ|Kzw^Q!#a9ZAJ}*{rfvQA`^hmYPTH%3*SC55Dz}qWuuJID7i~u6-_kdh6S- zLyu11tNni0zxGw|TerY68?FDR<NsaC`n@{-uh!|yJ~1^PkAm)6%RcvPBIs!M>Gp?? z->ZJV_u7SRpaJkNm;JY|zV`7H=Mko>Ro$|h{SFrer*7LrQK3`D^yu`fZ(F~y9+`f0 zTk2hwGSlNXR)wzSlefFG3bbta8QVk9x`0`_eV~CyEl*?6GO;r=jX{@T<wj3?cJk8i z@9*btk78e~p|DR!`o>cq5!sMTeM;lq&MpoT?~6XB3dT(9{+4AvZPR1zur(b)mJe^N z1)X9PIWO(e_x=BC^=|+C{Cs=f-C1efw?N0VpAh?)dbee#?e906cUt{jv(7;$;AO%D zz1a>I7f#)_pTfWr78d^cCuZliy?P??-#|+k^CZPg_k22~y>VfL#5}9gR~HsK-`<{o zo_7NWi*@Cv6uzG)CMxgD0o{7Cd7jSmeYL-fD&OsXzwb>B%Pd#b&6_t{m%sDb{PyPN z=b+Wq!TNhXIITOhW{ry|Yf__E{+5!PEM0u7w)~~2BHkh_5FfUE{Z{Uy)8F3PYi(Wx zTJKtU6tvv)NfBs<W3A=>&vV~D*;M=c_Wg64=2{dgZFjyoO*cBpeY1}9w2B9f?3b!Q zV})}kNvJS>OnqsgpSbHqg7@wKipoZ7&|#ESb?aho$Cb;+i(QOc9k$lX{T%4}zJs|{ zRaR$fZl+G(nx|U!?#|Ayudgq^8MY?k<Ez!{%~qe?`gT#bUYFUK>Z8@~_nNOw`Ty_l z=d|JtuMoMGJ%Zv~+o8Yu_VrskCD!pxj4Z!f8g7*XS{PWet*iIgx}DEvt?`hum?k!7 z?%cDVOoXM)ayoWwR-ad)RQ~6r`g|YmWtksSR~}<nesua%HP@SUVzSklzq=_b3on2U zq}f@NTYWdRCNgjF#v3QzytufSdy(yj1I#Zysy`fLf390}-uC;Fn@WFQ`qx*1=7bM| zt{=L$>1^|((^e07F0G7Ma4AqR)~s<+vu<uZMUBR{EU$j9Et(5*%*~IFk1H?Jkv2Q4 zdrYhZG*7ijY2uGt*Y}y_PrUK+4e0X8OLKOX9GSKE|G(d#r{&6t#9w1fKj8QDSlj%i zLK;>#E*+z+x$U=L-hHj>JFmwcn-03xN7gucTTW-g`tM@Dsvq~7Us|!ncedG4yNu6S z$MZ5W&wYuS`0s6gy><S|Hw%7j>PdPaymRBj^pz}KeEYY2q%fn+m^*jv^XI3wzAc^p zF?A=yy0XX1KYu*8d!Fr|4~IXC?f?7jw)h_FozLFh-(P=F$tWan!NrU-)*doCoemcr zr<(1iuy6toh=2<x|C*aWKR;i;<5Ab06EU09&dxMW7u#d~=(L!MR1eQaho^2G;E+E< zamYK=MBd$ZE$-QmO`FrtZxgnIEWs>NE{5DxoFA@Yt+!8SvBaB}ADiy5Xx=`*=&(M; zDNjvJ?bT0EPN+SIvCiqB<*|Ev4i}xCru+Qd+}8mHex3TS-xwRD-{zfE>E73TT0fv< z$x>Y%iW-n}8-8rsRlD|XYR%2q^1D;}X6~*2uBUee)TY?-FXq?2-|t@6Sbj{MTg&!r z&5uoYu4vpozet(#3<n;S0(l!`aq)TE>3uUn*<0`^s0;_sQrl0D+nROt;$nB}n82Dy z_BoDLqTC^QIX@z`z&XB#!W{4B?*1Aa?jQ$%Rt@#dJgv9;&6%0T+>1by=l(Vyj|A8M z?miNozt=Q>B4|a%+M2VoOgGMrJThe|yLrxyf^TnbR(2nE{FwSSh3!p+PQc3*;F|g4 zG>U6xa5JWC`o~oHx*rdBmA<}|Sp4F`Le{l%l}{#a@%WRYyD9(vJ`?{X^`9osci9HI z@vr>PIqUa1y7z39_N|$Fra@Lbe%fr2)ZdXMd#0}ad&{}OVJpiT%d5NMqX^&Sg|sm} zK(z7d>TvPD5#j&5xJxAC#cDxImM$mO{QY{p{9Q#(f!OUisji^9>{j;rr(K{{)pmbS zZF_FMz5LBb`=!nE&UCpeWmP<#8eU{-Qs1RNdwS{zzI8D>jbw!`r3!0UJvnu)?yaK3 zf+(hIbF%L0uT=%_hDBdV*C^0YAGrCaxtW>S#6P}%e&<U5%$_^<?Vki2qmnfVYI+l6 z3Y4TieBaiy%M@KJc-vowXoiW@TzPLRYY(Qo$EP2C{Nhf=&zJu7xB8S89WHx!XXdl} zTQV>2EPj6J&&2f4&(3Df>oB#h`jRp2`Pb|5{^#9(eLAh*zhSG6^RyF3r^{LtC|Ii+ z8Zd1%d3vmQKFAk0i1Eb%25uf+-mPxEsTbq8+uB5HAMGvqd0Anrj)ZQvOLrdM2j45E z*tRDZF@5Y0)4hAy!*sgug5N(jW&Hg1_IB~&rwiNVvff_Yn0(ys-^c#vMWF3mJLg=! ze0ir$`Tg2*z4M^#e7gAe+wIRk9XTJf?MBwxot#nGe(tNZ1-ygv41PqKH7;7bI_K?m zIVP4>stIRTUi*6~3Y!Bscp46T_)u_UqU)Z}BXPdIzOF2hy#N2+dr?$kvrC@i?1jw< zk`1$0b7KqoCoGQ&GcLX_eY$>~!@?h%gw_4lfVw;h*C1;_-h=kGdF$^5&4q*7aA#6G z=Ewg$6<*|0|LgMnqMK%rY!<Wa#;2Ue$9i|pY3GwYm0JC3<?^D+ur(2a*2|98rLW)f z$xCnZd{NPkrJCi_|LV+kaBZKKCae%3+_-7&%v;Xbx1cQ*?FgUz(cI2XPBG-;`(<tx zSMS`3@s(R1Utr#>v7kx&Lesj;h+ENX60v!!MESwR7p(S1Yhw;NeN4T$n?osjYgVZF zVvW<qZ?|55#&kSt@i8TtHL(hyeIQ|>#)Th`itqpb@3-dHkB^Vv-kSCQ-``BXmt9;( z7EO_6tD6?EV9{dl&71-&IvqHt`}$(PbGp%pqo=3m$o?v+z(7Gc(e=x-Ki#Ogxl3{h zqx7CenJcL~9^b;2c^sxQebo2Ty}j8*{MGsc*VaZ~4!r1V62?+|bY5!aO1_t~^LA;9 z$B6y?`>uTdZ0$|y=jZY9t^Ha4_SV$X^8Jg8OU>%bE-#J=t(z90Ahxvf{rcvmLK+WG zTvTCV;YeXx8f9SGhJF9+FVzXIlaFeja9cdl)@@pZSz`kKpR^-4KYS?I@7DAh+ZnqX z7JxR+Y_hd1S@@6ZPQhW`mlYNT4;;+jTGs#j1G<cAOG36)(uH}o-)>&J1*#`Zv#%}r zY5#3wKWK^JTFcGKpWl^#J0_i<BB><kyX)t(*_X3sgW9e^rI$BqY`qubeo8IiF5|MN zEF4!H7vy9w`-W81AqCw5BMz4zmtMTcXfg8j^*yQ=Razkzchv6K+D>Va?V5ShIyR@y z5Z6P$Tt`5`VSzWOxD5X|aj}{H<^wB(mw$VE`}<4(`d^Fd|L^|wYIXUW8-@34zwiC^ zYW3+mGoC#KU0?p>#Ka%Z&((e3eIImzWc}aQ@xL$eh{u*RMoifivoGcK;scBBmx~H1 zI3x(N{@P))3&%cYo#hTkG<y5{kMl(q7Z-Q`m=hU#T1~)QFE9SiksVV{TNcG&JO8#Z ztg+)l<hJx?J(mWCMn0yEGF#UL_Du;`aM-s5bOAxFxW>axD?PF000D&!8cfd4&Y(@a zbLMPuj=Vqrn7%9Xqix5|_D0K?R|T^5cp;8aKm_!QIM98Jn)80I1YLmP%9>>Ps_yNi z&HYTS??Fow1S0$z?ezNfaBSc2)&ngr`W@}->wEUxIlbqX)2_c-?{Mecj+ce6lNoe= zEeKKs7x+kr7=d#CTF~9}@7@PHhO0X?I0Pp=JvDW0_7r7R5rZU70fm6HMj^e~vs^$b zF}-@1`^de}#fukz^bbCk7gk(coLZ-}Huto$z+nY8XP!<8iEU=D>$FZ{IqH7F3Wq<7 z{ZD_sa6S}tnVFx0*rG+*)BpSx$|x6>1vx~L<=0lTU3%DD%);?SN#J&fub-cpRIiau z*0nYx?js7F5yrn~eKoo}1xqz)u)aa}%&9*aA-6fMxG0D%sub5?_tprQY`AhZ3r9%E zf|k?E)UcnhabOSAM)9jRZbbZXp7Kp|^$X*l|IDmm#|_Lbud~E*Ths$4mPa$A>*xR8 zX~oD?D%PR;f=Nuz^_ObE^Np+Cvv5p_Ul5<Y7;7$fXmFU$wDI$mA3uJaIpgzlzGZe| zC`*#X(FL1UMoupdFvC&<y=BQs44c}%=$2=K0&7m(wY);T=N}toTC7|f4jkZ^QvCFa z78YGB90H(Y1paKEym|9x=Fcus?p_)K%sE9xMr^Ys-LXXWfmYCrL5shgX{UoMOHN!_ zVt1Lm_tnIRSIUe`S4Ceu{`BG!X8Hh$Ob~{j6|nmEjmXohwFQ{<+v0f+-P!O3l*~bD zkO~-3R@-K<`kiy2u6jTw<Lv3B5i?I$uDbNt_c5n{L`7rKx;ar;&oXX|;sl=!aO{Bn zlxqjQI6!9ugsoQfNXOi*RwV+O9y_wwzE{N|A%P|7=F7r|K{Y>F+0uTz<X~iC*4*%C z^&)L-#V|OBfX@Rs)6UNP^GB_Lm1whZTLw=^@iZ(&eIp;!>+9>~d)%9<92-D;n{U3{ zpkW#6*SM-j@2!f%f_Y3&V=T9VN)z-@U}S36-B9@W7-(sZ-Slg(wYZKH^g3GK*c|j8 zOUdy?$-vSw@~C_LEuRJlQP!k`FH`phVRH~XJ2l#IfhtVx{Wovk)Y`Y^N*a@4NixH6 zgLjWrim)Aru@uxwoTmgTYge)+t<-#Lv;u484=>ENfTCSaUjBRL!Jz$tq5n5=9!cm^ zlx5z1cSiXf%%F1MWxcj8c6ZMC7cm_Sjkmat1O*>v4V#V`cL?8ygeT<W<WyDd+P2=J zwB`Y8QpItF_3wDD7GX*6-P)k-G#~s~OD8Zi+HoCG+Pq`+v|9+X;Lb)cB9t0$T+b{j zD$2`S*PkyDJL|wE&LaW+jQQ4^RipevF#8Gtx}ZyHbNZiwd=SNX<WtbvuL0Tkd~hW= zp`@fFD{EC)zH#X^2Q`6a`(+Nc&-cY)IY%agYfbF#YxZ{2Y>lTVI3#RjNlJ{|TeWp6 z{#Z8R&bhOrFfA=@<2|8O?GB}^NlHgbG(P8C#a5JfYZ=(t#oc{g9p%^HV9A=47<sAH z`zdD1L=yR;WMF1yW^EmPZhLQ(>w<Xje%>!eo3Rzb0kMq#Wg_>_^Vy}>*eKGWx^&m; zh10P36kb0`Bs4BuxUjRcbLY;TjWxk5gIUB}71TU@CeP4e-Xrot3Z9tZjK(lfBcr-% zkH&e4P^Sh59kq>1wyZPmL&PfFa0KImJ7`zV%9Wb;*(#QLFYs=hp<|eu^yo|BEo=>n z##FJ0-DSDc`7fj>J2W`3H%9nOtNdAHi6zk?!pVxGr?1b?-@m-#_;V3PCRvuGUq@74 z862I1r8R5d!8F@E|J{cjXEd2uICL}wPM=U%+x5!{OQ8(QMhh-635pmS8*hG)Z70bg z5D}oTY?8)iul4Ox{usJ0>;>J=+2nsF1$3PJ9;S^ACHrrkz*0jabRM|G$-~dztuy=k z)@98sRe~LR&m<M;-aQkF<>o2SeX72`Uq7k%MuJwi2za}DiW#0o1U7O>4~e#b^hS=l zkN5V^)6e}{b(1BjtJ7%pXQS2c5updkrj4^emjtF(KYQlH!okzv@JBe;G*Ye<TNMH^ z*rCB86SSn%Wg72+*Ws}%x*UAA&nQ_MD`3(C3pj)y9r{7n5{V>*O+7yKmgj=^OdDg4 zEV}r3(_#ylVVHVA%OXJ+H=Q|q_Uqrb3)uu#Om*<tHKS_pnV3{8*?vl-Lr3IVxr$dh zjoe}aF=5Z9#@vQ@4XYKe6b!7atgNl853c_sqT;Z?y>Ui^A@A!Aw_Ye?sCVFHZJF`) z$De>gCT4ww9c$YDXJ5c`R(azm4jz8~^JmWR{HgYoRSDp1oY7;bdU~^61}BEm42?&H z1d_r!-KR)-F3@LcIxUvHG?X7x8C;}s5vb`qdGh4i%D@+kSU5@qK$j4{j4W|GjhPx9 z7Cd1ROnNro`t^r|3z|${MLJRy#o8z7$Irsn2!TaGf�XyL&q5l&)n#>p7>yD=bU* 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	r2UZib|0^&v(dK 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 WEGhvf7&8M4LsJVbRaIAiH!c8kL%#9= diff --git a/grady/docs/core_uml.png b/grady/docs/core_uml.png deleted file mode 100644 index 2c32543b871c8f7099334c75fd3b81eac96c87d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306987 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\@R?aelYBEp3$8xTnv%xUfZa&-%%i|E{0g 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 diff --git a/grady/docs/deployment.md b/grady/docs/deployment.md deleted file mode 100644 index 0a380077..00000000 --- a/grady/docs/deployment.md +++ /dev/null @@ -1,11 +0,0 @@ -# Grady deployment instructions - -For every commit on master a Docker image is build which can be deployed -anywhere. The current deployment configurations is explained in another repo. - -## Environment variables - -- `GRADY_LOG_LEVEL` Sets the log level for our custom logging configuration - (default: DEBUG). -- `GRADY_LOG_FORMAT` Can be set to `json` in order to make logs readable - by Logstash (default: `default-format`). diff --git a/grady/docs/feedback.api.json b/grady/docs/feedback.api.json deleted file mode 100644 index c48beea4..00000000 --- a/grady/docs/feedback.api.json +++ /dev/null @@ -1,43 +0,0 @@ -GET /subscription/<id> - { - "subscription_id": "e313e608-7453-4053-a536-5d18fc9ec3a9", - "owner": "reviewer01", - "query_type": "random", - "query_key": "", - "assignments": [ - { - "assignment_id": "dbdde0d0-b1a6-474c-b2be-41edb5229803", - "submission_id": "1558c390-5598-482b-abd3-1f5780e75e0d", - "is_done": false - } - ] - } - -POST /subscription/ - { - "owner": "<some user>", - "query_type": "random|student|submission_type|exam", - "query_key": "<pk for query type>?" - } - -DELETE /subscription/<id> -PATCH /subscription/<id> { - "deactivate": true // or false for reactivation -} - -GET /subscription/assignments/current -GET /subscription/assignments/next -GET /subscription/assignments/past - -GET /assignment/<id> // only those belonging to the requests user - { - "assignment_id": "dbdde0d0-b1a6-474c-b2be-41edb5229803", - "submission_id": "1558c390-5598-482b-abd3-1f5780e75e0d", - "is_done": false - } - -DELETE /assignment/<id> // check done conditions - -// done conditions -// * feedback was posted -// * feedback was patched (every) diff --git a/grady/frontend/.browserslistrc b/grady/frontend/.browserslistrc deleted file mode 100644 index bd3ad98e..00000000 --- a/grady/frontend/.browserslistrc +++ /dev/null @@ -1,3 +0,0 @@ -> 1% -last 2 versions -not ie <= 8 \ No newline at end of file diff --git a/grady/frontend/.eslintrc.js b/grady/frontend/.eslintrc.js deleted file mode 100644 index 64a02468..00000000 --- a/grady/frontend/.eslintrc.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = { - root: true, - env: { - node: true, - }, - extends: [ - 'plugin:vue/recommended', - '@vue/typescript', - ], - rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'semi': ['error', 'never'], - 'quotes': ['error', 'single'], - 'eqeqeq': 'error', - 'default-case': 'error', - 'guard-for-in': 'error', - 'yoda': 'error', - 'no-trailing-spaces': 'error', - '@typescript-eslint/consistent-type-assertions': ['error', { assertionStyle: 'as' }] - }, - parserOptions: { - parser: '@typescript-eslint/parser', - }, - plugins: ['@typescript-eslint'], - overrides: [ - { - files: [ - '**/__tests__/*.{j,t}s?(x)', - ], - env: { - mocha: true, - }, - }, - ], -} diff --git a/grady/frontend/.gitignore b/grady/frontend/.gitignore deleted file mode 100644 index 912d2e70..00000000 --- a/grady/frontend/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -.DS_Store -node_modules -/dist - -/tests/e2e/reports/ -selenium-debug.log - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw* diff --git a/grady/frontend/.postcssrc.js b/grady/frontend/.postcssrc.js deleted file mode 100644 index 961986e2..00000000 --- a/grady/frontend/.postcssrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: { - autoprefixer: {} - } -} diff --git a/grady/frontend/@types/v-clipboard/index.d.ts b/grady/frontend/@types/v-clipboard/index.d.ts deleted file mode 100644 index 8619c865..00000000 --- a/grady/frontend/@types/v-clipboard/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare module 'v-clipboard' -declare module 'vue-color' diff --git a/grady/frontend/README.md b/grady/frontend/README.md deleted file mode 100644 index 82dcc1c7..00000000 --- a/grady/frontend/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# frontend - -## Project setup -``` -yarn install -``` - -### Compiles and hot-reloads for development -``` -yarn run serve -``` - -### Compiles and minifies for production -``` -yarn run build -``` - -### Lints and fixes files -``` -yarn run lint -``` - -### Run your unit tests -``` -yarn run test:unit -``` - -### Run your end-to-end tests -``` -yarn run test:e2e -``` diff --git a/grady/frontend/nightwatch.json b/grady/frontend/nightwatch.json deleted file mode 100644 index 333b96e5..00000000 --- a/grady/frontend/nightwatch.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "globals_path": "nightwatch_globals", - "test_settings": { - "chrome": { - "desiredCapabilities": { - "chromeOptions": { - "args": ["headless"] - } - } - } - } -} diff --git a/grady/frontend/nightwatch_globals.js b/grady/frontend/nightwatch_globals.js deleted file mode 100644 index ce0207f9..00000000 --- a/grady/frontend/nightwatch_globals.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - waitForConditionTimeout: 10000 -} diff --git a/grady/frontend/package-lock.json b/grady/frontend/package-lock.json deleted file mode 100644 index 2b1c31e2..00000000 --- a/grady/frontend/package-lock.json +++ /dev/null @@ -1,12267 +0,0 @@ -{ - "name": "frontend", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "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-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "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.13.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz", - "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==", - "dev": true - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz", - "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.13", - "@babel/types": "^7.13.13", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "dev": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "dev": true - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "dev": true - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "dev": true, - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/formatio": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz", - "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==", - "dev": true, - "requires": { - "@sinonjs/samsam": "^2 || ^3" - } - }, - "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" - }, - "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" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "@types/chai": { - "version": "4.1.7", - "dev": true - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/file-saver": { - "version": "2.0.1", - "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/highlight.js": { - "version": "9.12.3", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, - "@types/mocha": { - "version": "5.2.5", - "dev": true - }, - "@types/nightwatch": { - "version": "0.9.11", - "dev": true - }, - "@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, - "@types/sinon": { - "version": "7.0.3", - "dev": true - }, - "@types/webpack-env": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.14.0.tgz", - "integrity": "sha512-Fv+0gYJzE/czLoRKq+gnXWr4yBpPM3tO3C8pDLFwqVKlMICQUq5OsxwwFZYDaVr7+L6mgNDp16iOcJHEz3J5RQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.3.2", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.3.2", - "eslint-utils": "^1.4.2", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^2.0.1", - "tsutils": "^3.17.1" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.2.tgz", - "integrity": "sha512-t+JGdTT6dRbmvKDlhlVkEueoZa0fhJNfG6z2cpnRPLwm3VwYr2BjR//acJGC1Yza0I9ZNcDfRY7ubQEvvfG6Jg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.3.2", - "eslint-scope": "^5.0.0" - }, - "dependencies": { - "@types/json-schema": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", - "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", - "dev": true - } - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.2.tgz", - "integrity": "sha512-eZNEAai16nwyhIVIEaWQlaUgAU3S9CkQ58qvK0+3IuSdLJD3W1PNuehQFMIhW/mTP1oFR9GNoTcLg7gtXz6lzA==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "is-glob": "^4.0.1", - "lodash.unescape": "4.0.1", - "semver": "^6.3.0" - }, - "dependencies": { - "lodash.unescape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", - "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" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "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.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "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" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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 - } - } - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz", - "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "1.13.0", - "eslint-scope": "^4.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "2.3.2", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.3.2", - "@typescript-eslint/typescript-estree": "2.3.2", - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.2.tgz", - "integrity": "sha512-t+JGdTT6dRbmvKDlhlVkEueoZa0fhJNfG6z2cpnRPLwm3VwYr2BjR//acJGC1Yza0I9ZNcDfRY7ubQEvvfG6Jg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.3.2", - "eslint-scope": "^5.0.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.2.tgz", - "integrity": "sha512-eZNEAai16nwyhIVIEaWQlaUgAU3S9CkQ58qvK0+3IuSdLJD3W1PNuehQFMIhW/mTP1oFR9GNoTcLg7gtXz6lzA==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "is-glob": "^4.0.1", - "lodash.unescape": "4.0.1", - "semver": "^6.3.0" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "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" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "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 - }, - "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" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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 - } - } - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@typescript-eslint/typescript-estree": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz", - "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==", - "dev": true, - "requires": { - "lodash.unescape": "4.0.1", - "semver": "5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } - } - }, - "@vue/cli-overlay": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.11.0.tgz", - "integrity": "sha512-yYZP27vjioWmohwXQ9mTPHHxktfAaTM6RDehyG83yvY07wcdxhwrNNCMm8eE9My/K2F8oAPf8uoDZZmkr/EXBw==", - "dev": true - }, - "@vue/cli-plugin-eslint": { - "version": "3.11.0", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^3.11.0", - "babel-eslint": "^10.0.1", - "eslint": "^4.19.1", - "eslint-loader": "^2.1.2", - "eslint-plugin-vue": "^4.7.1", - "globby": "^9.2.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "optional": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "optional": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "optional": true - } - } - }, - "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" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "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, - "optional": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "optional": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "optional": true - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "optional": true, - "requires": { - "esutils": "^2.0.2" - }, - "dependencies": { - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "optional": true - } - } - }, - "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", - "dev": true, - "optional": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - }, - "dependencies": { - "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, - "optional": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "optional": 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" - } - }, - "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, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "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, - "optional": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "optional": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "optional": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true, - "optional": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "optional": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true, - "optional": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true, - "optional": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "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" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true, - "optional": true - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "optional": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "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, - "optional": true - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "optional": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "optional": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "optional": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true, - "optional": true - } - } - }, - "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", - "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", - "dev": true, - "optional": true, - "requires": { - "vue-eslint-parser": "^2.0.3" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "optional": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "optional": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, - "dependencies": { - "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, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "optional": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, - "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 - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "optional": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, - "dependencies": { - "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, - "optional": true - } - } - }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "optional": true, - "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - }, - "dependencies": { - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "optional": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "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, - "optional": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true, - "optional": true - }, - "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, - "optional": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "optional": true, - "requires": { - "rx-lite": "*" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true, - "optional": 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 - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "optional": true - }, - "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true, - "optional": true - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "optional": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "optional": true, - "requires": { - "is-fullwidth-code-point": "^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, - "optional": true - }, - "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", - "dev": true, - "optional": true, - "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - } - }, - "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "optional": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "optional": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "optional": true - } - } - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "^0.5.1" - } - } - } - }, - "@vue/cli-plugin-typescript": { - "version": "3.11.0", - "dev": true, - "requires": { - "@types/webpack-env": "^1.13.9", - "@vue/cli-shared-utils": "^3.11.0", - "fork-ts-checker-webpack-plugin": "^0.5.2", - "globby": "^9.2.0", - "ts-loader": "^5.3.3", - "tslint": "^5.15.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - } - }, - "@vue/cli-plugin-unit-mocha": { - "version": "3.11.0", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^3.11.0", - "jsdom": "^13.2.0", - "jsdom-global": "^3.0.2", - "mocha": "^5.2.0", - "mocha-webpack": "^2.0.0-beta.0" - } - }, - "@vue/cli-service": { - "version": "3.11.0", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^3.11.0", - "@vue/cli-shared-utils": "^3.11.0", - "@vue/component-compiler-utils": "^3.0.0", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.1", - "acorn-walk": "^6.1.1", - "address": "^1.0.3", - "autoprefixer": "^9.5.1", - "browserslist": "^4.5.4", - "cache-loader": "^2.0.1", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^2.4.2", - "cli-highlight": "^2.1.0", - "clipboardy": "^2.0.0", - "cliui": "^5.0.0", - "copy-webpack-plugin": "^4.6.0", - "css-loader": "^1.0.1", - "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", - "debug": "^4.1.1", - "default-gateway": "^5.0.2", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "escape-string-regexp": "^1.0.5", - "file-loader": "^3.0.1", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^1.0.2", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.6.0", - "minimist": "^1.2.0", - "ora": "^3.4.0", - "portfinder": "^1.0.20", - "postcss-loader": "^3.0.0", - "read-pkg": "^5.0.0", - "semver": "^6.0.0", - "slash": "^2.0.0", - "source-map-url": "^0.4.0", - "ssri": "^6.0.1", - "string.prototype.padend": "^3.0.0", - "terser-webpack-plugin": "^1.2.3", - "thread-loader": "^2.1.2", - "url-loader": "^1.1.2", - "vue-loader": "^15.7.0", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.3.0", - "webpack-chain": "^4.11.0", - "webpack-dev-server": "^3.4.1", - "webpack-merge": "^4.2.1" - }, - "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 - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.11.0.tgz", - "integrity": "sha512-D7pst/4v9H1DD66fLxlZOwRR09R03MV0ROdKxBHmh3FmnApCA/RiaolFA/8w+B3CnevYMlV3SJ5fOAgedbswbA==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.1", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.7", - "semver": "^6.0.0", - "string.prototype.padstart": "^3.0.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" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@vue/component-compiler-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.0.0.tgz", - "integrity": "sha512-am+04/0UX7ektcmvhYmrf84BDVAD8afFOf4asZjN84q8xzxFclbk5x0MtxuKGfp+zjN5WWPJn3fjFAWtDdIGSw==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", - "prettier": "1.16.3", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "@vue/eslint-config-typescript": { - "version": "4.0.0", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^1.1.0", - "@typescript-eslint/parser": "^1.1.0" - }, - "dependencies": { - "@typescript-eslint/eslint-plugin": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz", - "integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "1.13.0", - "eslint-utils": "^1.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^2.0.1", - "tsutils": "^3.7.0" - } - }, - "@typescript-eslint/parser": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz", - "integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "1.13.0", - "@typescript-eslint/typescript-estree": "1.13.0", - "eslint-visitor-keys": "^1.0.0" - } - } - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-rcn2KhSHESBFMPj5vc5X2pI9bcBNQQixvJXhD5gZ4rN2iym/uH2qfDSQfUS5+qwiz0a85TCkeUs6w6jxFDudbw==", - "dev": true - }, - "@vue/test-utils": { - "version": "1.0.0-beta.29", - "dev": true, - "requires": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.4" - } - }, - "@vue/web-component-wrapper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", - "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "dependencies": { - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true - }, - "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "requires": { - "mime-db": "1.47.0" - } - } - } - }, - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", - "dev": true - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, - "address": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", - "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", - "dev": true - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "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": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "optional": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-escapes": { - "version": "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" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "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" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "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 - }, - "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": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "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 - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "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.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=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axios": { - "version": "0.18.0", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "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" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", - "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - } - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "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-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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" - } - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "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 - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "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": { - "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" - }, - "dependencies": { - "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 - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-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 - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - }, - "dependencies": { - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } - } - }, - "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" - } - }, - "cache-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-2.0.1.tgz", - "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.0", - "normalize-path": "^3.0.0", - "schema-utils": "^1.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 - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "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" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001208", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz", - "integrity": "sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chai": { - "version": "4.2.0", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "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 - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "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" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - } - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clamp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", - "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=" - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "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-highlight": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.1.tgz", - "integrity": "sha512-0y0VlNmdD99GXZHYnvrQcmHxP8Bi6T00qucGgBgGv4kJ0RyDthNnnFPupHV7PYv/OXSVk+azFbOeaW6+vGmx9A==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "highlight.js": "^9.6.0", - "mz": "^2.4.0", - "parse5": "^4.0.0", - "yargs": "^13.0.0" - }, - "dependencies": { - "highlight.js": { - "version": "9.13.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", - "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==", - "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 - } - } - }, - "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", - "dev": true - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "clipboardy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", - "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0" - } - }, - "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" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "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.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "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 - }, - "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" - }, - "dependencies": { - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true - } - } - }, - "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": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "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-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 - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "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 - }, - "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": "4.6.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - }, - "dependencies": { - "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" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - } - } - }, - "core-js": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.8.4.tgz", - "integrity": "sha1-wiZl8eDRucPF4bCNq9HxCGleT88=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "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-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.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 - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", - "dev": true - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "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" - } - }, - "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-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-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" - }, - "dependencies": { - "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 - } - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-gateway": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.3.tgz", - "integrity": "sha512-zW+ld9xtN0+q48wIwhitUzhfERJN7BPgvijPhuCKG6bfWqnoqtSNSnrXfvAME2ZJLpgYpz6UorpBddGfLzrJBw==", - "dev": true, - "requires": { - "execa": "^2.0.3" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", - "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^3.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "npm-run-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", - "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "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 - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "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" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-event-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", - "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", - "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", - "dev": true - }, - "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 - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.710", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.710.tgz", - "integrity": "sha512-b3r0E2o4yc7mNmBeJviejF1rEx49PUBi+2NPa7jHEX3arkAXnVgLhR0YmV8oi6/Qf3HH2a8xzQmCjHNH0IpXWQ==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "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" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "dependencies": { - "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 - } - } - }, - "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" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "eslint": { - "version": "5.16.0", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - } - } - }, - "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" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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" - } - } - } - }, - "eslint-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", - "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", - "dev": true, - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" - } - }, - "eslint-plugin-vue": { - "version": "5.2.3", - "dev": true, - "requires": { - "vue-eslint-parser": "^5.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - } - } - }, - "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.0.0" - } - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "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.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 - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, - "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": { - "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-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "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-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "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" - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "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" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", - "requires": { - "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==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "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=", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz", - "integrity": "sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^2.0.4", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "tapable": "^1.0.0" - } - }, - "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-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-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": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "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-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - } - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "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" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - } - } - }, - "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-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "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.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "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" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "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" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", - "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", - "dev": true, - "requires": { - "http-proxy": "^1.18.1", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "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 - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "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.12", - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "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-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", - "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-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", - "dev": true, - "requires": { - "call-bind": "^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==" - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "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-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.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "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-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true, - "optional": true - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "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 - }, - "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 - }, - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", - "dev": true - }, - "js-message": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", - "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", - "dev": true - }, - "js-queue": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", - "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", - "dev": true, - "requires": { - "easy-stack": "^1.0.1" - } - }, - "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.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "optional": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", - "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.0.9", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.5", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "jsdom-global": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", - "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "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" - } - }, - "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" - } - }, - "just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "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 - }, - "launch-editor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", - "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", - "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "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" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.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.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "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.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", - "dev": true - }, - "lodash.unescape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, - "lolex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.0.0.tgz", - "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", - "dev": true - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "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" - }, - "dependencies": { - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.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" - } - }, - "marked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.1.tgz", - "integrity": "sha512-5+/fKgMv2hARmMW7DOpykr2iLhl0NgjyELk5yn92iE7z8Se1IS9n3UsFm86hFXIkvMBmVxki8+ckcpjBeyo/hw==" - }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "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 - }, - "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 - } - } - }, - "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 - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "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 - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "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": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^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" - } - } - } - }, - "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=", - "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 - } - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "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" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "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" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "mocha-webpack": { - "version": "2.0.0-beta.0", - "resolved": "https://registry.npmjs.org/mocha-webpack/-/mocha-webpack-2.0.0-beta.0.tgz", - "integrity": "sha512-2ezbW0h5cYWr874F/hzytQCqINxk+GVelMY4xWTSHwwH1LrPAOzjlUljZ+/PhpaP6QeqYbL5x5vK/bnaXqkfEw==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "chalk": "^2.3.0", - "chokidar": "^2.0.2", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "interpret": "^1.0.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "lodash": "^4.3.0", - "memory-fs": "^0.4.1", - "nodent-runtime": "^3.0.3", - "normalize-path": "^2.0.1", - "progress": "^2.0.0", - "source-map-support": "^0.5.0", - "strip-ansi": "^4.0.0", - "toposort": "^1.0.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "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" - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.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", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "mock-local-storage": { - "version": "1.1.8", - "dev": true, - "requires": { - "core-js": "^0.8.3", - "global": "^4.3.2" - } - }, - "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=" - }, - "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 - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "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" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "nise": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz", - "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==", - "dev": true, - "requires": { - "@sinonjs/formatio": "^3.1.0", - "just-extend": "^4.0.2", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-ipc": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.4.tgz", - "integrity": "sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.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.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "nodent-runtime": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/nodent-runtime/-/nodent-runtime-3.2.1.tgz", - "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==", - "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" - } - }, - "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": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "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-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "dependencies": { - "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.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "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 - } - } - }, - "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" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "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" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "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" - } - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "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" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-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 - } - } - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.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" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-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.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "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" - } - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "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" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "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" - } - }, - "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.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "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" - } - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "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-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "prettier": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", - "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", - "dev": true - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "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" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - } - } - }, - "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" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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" - } - }, - "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" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", - "dev": true, - "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.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" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "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" - } - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "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.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "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" - }, - "dependencies": { - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "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": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "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": { - "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-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" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "sinon": { - "version": "7.2.2", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.2.0", - "@sinonjs/formatio": "^3.1.0", - "@sinonjs/samsam": "^3.0.2", - "diff": "^3.5.0", - "lolex": "^3.0.0", - "nise": "^1.4.7", - "supports-color": "^5.5.0" - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "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" - } - } - } - }, - "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.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "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.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "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.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "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.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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" - } - } - } - }, - "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" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "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 - }, - "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" - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string.prototype.padstart": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.2.tgz", - "integrity": "sha512-HDpngIP3pd0DeazrfqzuBrQZa+D2arKWquEHfGt5LzVjd+roLC3cjqVI0X8foaZz5rrrhcu8oJAQamW8on9dqw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.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" - } - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "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 - } - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - }, - "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-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-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", - "dev": true - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "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 - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "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": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "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 - } - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", - "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" - }, - "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-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": "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 - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-loader": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", - "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tslint": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz", - "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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" - } - } - } - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "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" - }, - "dependencies": { - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true - }, - "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "requires": { - "mime-db": "1.47.0" - } - } - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "3.6.3", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - } - } - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - } - }, - "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.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 - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "v-clipboard": { - "version": "2.2.1" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "vue": { - "version": "2.5.22" - }, - "vue-color": { - "version": "2.7.0", - "requires": { - "clamp": "^1.0.1", - "lodash.throttle": "^4.0.0", - "material-colors": "^1.0.0", - "tinycolor2": "^1.1.2" - } - }, - "vue-eslint-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", - "integrity": "sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.1.0", - "esquery": "^1.0.1", - "lodash": "^4.17.11" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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" - } - }, - "espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", - "dev": true, - "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.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 - } - } - }, - "vue-hot-reload-api": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", - "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", - "dev": true - }, - "vue-loader": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.1.tgz", - "integrity": "sha512-fwIKtA23Pl/rqfYP5TSGK7gkEuLhoTvRYW+TU7ER3q9GpNLt/PjG5NLv3XHRDiTg7OPM1JcckBgds+VnAc+HbA==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.0.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-notification": { - "version": "1.3.14" - }, - "vue-property-decorator": { - "version": "7.3.0", - "requires": { - "vue-class-component": "^6.2.0" - }, - "dependencies": { - "vue-class-component": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz", - "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A==" - } - } - }, - "vue-router": { - "version": "3.0.2" - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-template-compiler": { - "version": "2.5.22", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuetify": { - "version": "1.4.2" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "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, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "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, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "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, - "optional": 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 - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "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, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true - } - } - }, - "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" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.0.tgz", - "integrity": "sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g==", - "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" - }, - "dependencies": { - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "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" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - } - } - }, - "webpack-bundle-analyzer": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.5.2.tgz", - "integrity": "sha512-g9spCNe25QYUVqHRDkwG414GTok2m7pTTP0wr6l0J50Z3YLS04+BGodTqqoVBL7QfU/U/9p/oiI5XFOyfZ7S/A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.15", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "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 - } - } - }, - "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.1.tgz", - "integrity": "sha512-9F5DnfFA9bsrhpUCAfQic/AXBVHvq+3gQS+x6Zj0yc1fVVE0erKh2MV4IV12TBewuTrYeeTIRwCH9qLMvdNvTw==", - "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.2", - "killable": "^1.0.1", - "loglevel": "^1.6.4", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.24", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.6", - "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.1", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "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 - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "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 - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "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" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "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-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "dependencies": { - "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" - } - } - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true, - "optional": 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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "ws": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", - "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "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.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "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 - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "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 - }, - "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" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - } - } - } - } -} diff --git a/grady/frontend/package.json b/grady/frontend/package.json deleted file mode 100644 index 6ed231a3..00000000 --- a/grady/frontend/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "frontend", - "version": "0.1.0", - "private": true, - "description": "Vue.js frontend for Grady", - "author": "robinwilliam.hundt <robinwilliam.hundt@stud.uni-goettingen.de>", - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "axios": "^0.18.0", - "file-saver": "^2.0.2", - "highlight.js": "^9.12.0", - "v-clipboard": "^2.0.1", - "vue": "^2.6.12", - "vue-class-component": "^6.0.0", - "vue-notification": "^1.3.12", - "vue-property-decorator": "^7.3.0", - "vue-router": "^3.0.1", - "vuetify": "^2.4.5", - "vuex": "^3.0.1", - "vuex-typex": "https://github.com/robinhundt/vuex-typex.git" - }, - "devDependencies": { - "@types/file-saver": "^2.0.1", - "@types/highlight.js": "^9.12.3", - "@typescript-eslint/eslint-plugin": "^4.13.0", - "@typescript-eslint/parser": "^4.13.0", - "@vue/cli-plugin-eslint": "^3.11.0", - "@vue/cli-plugin-typescript": "^4.5.10", - "@vue/cli-service": "^3.11.0", - "@vue/eslint-config-typescript": "^4.0.0", - "eslint": "^5.16.0", - "eslint-plugin-vue": "^5.0.0", - "typescript": "^4.1.3", - "vue-template-compiler": "^2.6.12", - "webpack": "^4.41.0" - } -} diff --git a/grady/frontend/src/App.vue b/grady/frontend/src/App.vue deleted file mode 100644 index 854e12bd..00000000 --- a/grady/frontend/src/App.vue +++ /dev/null @@ -1,48 +0,0 @@ -<template> - <div - id="app" - @click="logInteraction" - > - <v-app> - <notifications /> - <notifications - group="msg" - position="bottom left" - /> - <router-view /> - <auto-logout /> - </v-app> - </div> -</template> - -<script> -// load fonts and icons so that webpack processes them -import '@/assets/material-icons.css' -import '@/assets/fonts.css' - -import { UI } from '@/store/modules/ui' -import AutoLogout from '@/components/AutoLogout' -import { mutations } from './store/mutations' - -export default { - name: 'App', - components: { AutoLogout }, - methods: { - logInteraction () { - mutations.SET_LAST_INTERACTION() - } - } -} -</script> - -<style> - #app { - font-family: Roboto, sans-serif; - } - a { - text-decoration: none; - } - span { - tab-size: 4; - } -</style> diff --git a/grady/frontend/src/api.ts b/grady/frontend/src/api.ts deleted file mode 100644 index eedfc67a..00000000 --- a/grady/frontend/src/api.ts +++ /dev/null @@ -1,324 +0,0 @@ -import axios, { AxiosInstance, AxiosResponse } from 'axios' -import { errorInterceptor } from '@/util/interceptor' -import { Credentials } from '@/store/modules/authentication' -import { - Assignment, - Exam, - Feedback, FeedbackComment, - JSONWebToken, Statistics, - StudentInfo, - StudentInfoForListView, - Submission, - SubmissionNoType, SubmissionType, - Tutor, UserAccount, LabelStatisticsForSubType, - FeedbackLabel, SolutionComment, - CreateUpdateFeedback, - AvailableSubmissionCounts, - Group, - Config, - GitlabRelease, -} from '@/models' -import { CreateAssignment } from './models' - -export function getInstanceBaseUrl (): string { - if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') { - return `${window.location.protocol}//${window.location.host}${window.location.pathname}`.replace(/\/+$/, '') - } else { - return 'http://localhost:8000/' - } -} - -let ax: AxiosInstance = axios.create({ - baseURL: getInstanceBaseUrl() -}) - -export async function registerTutor (credentials: Credentials): Promise<AxiosResponse<Tutor>> { - return ax.post<Tutor>('/api/corrector/register/', credentials) -} - -export async function fetchJWT (credentials: Credentials): Promise<JSONWebToken> { - const token: string = (await ax.post('/api/get-token/', credentials)).data.token - ax.defaults.headers['Authorization'] = `JWT ${token}` - return { token } -} - -export async function refreshJWT (oldToken: string): Promise<JSONWebToken> { - const token: string = (await ax.post('/api/refresh-token/', { token: oldToken })).data.token - ax.defaults.headers['Authorization'] = `JWT ${token}` - return { token } -} - -export async function fetchConfig (): Promise<Config> { - return (await ax.get('/api/config/')).data -} - -export async function fetchStudentSelfData (): Promise<StudentInfo> { - return (await ax.get('/api/student-page/')).data -} - -export async function fetchStudentSubmissions (): Promise<Array<Submission>> { - return (await ax.get('/api/student-submissions/')).data -} - -export async function fetchSubmissionFeedbackTests ({ pk }: {pk: string}): Promise<SubmissionNoType> { - return (await ax.get(`/api/submission/${pk}/`)).data -} - -export async function fetchSubmissionSourceCode(pk: string): Promise<{sourceCode: string}> { - return (await ax.get(`/api/submission/${pk}/source_code/`)).data -} - -export async function fetchNotebookSubmissionAsHtml(pk: string): Promise<any> { - return (await ax.get(`/api/submission/${pk}/html/`)).data -} - -export async function fetchAllStudents (): Promise<Array<StudentInfoForListView>> { - const url = '/api/student/' - return (await ax.get(url)).data -} - -export async function fetchStudent ({ pk }: -{pk: string}): Promise<StudentInfoForListView> { - const url = `/api/student/${pk}/` - return (await ax.get(url)).data -} - -export async function fetchAllTutors (): Promise<Array<Tutor>> { - const url = '/api/corrector/' - return (await ax.get(url)).data -} - -export async function fetchAllFeedback (): Promise<Array<Feedback>> { - const url = '/api/feedback/' - return (await ax.get(url)).data -} - -export async function fetchFeedback ({ ofSubmission }: {ofSubmission: string}): Promise<Feedback> { - const url = `/api/feedback/${ofSubmission}/` - return (await ax.get(url)).data -} - -export async function fetchExamTypes (): Promise<Array<Exam>> { - const url = '/api/examtype/' - return (await ax.get(url)).data -} - -export async function fetchStatistics (examPk: string): Promise<Statistics> { - const url = `/api/statistics/${examPk}/` - return (await ax.get(url)).data -} - -export async function fetchLabelStatistics (): Promise<LabelStatisticsForSubType[]> { - const url = '/api/label-statistics' - return (await ax.get(url)).data -} - - -export async function createAssignment (data: CreateAssignment): Promise<Assignment> { - return (await ax.post('/api/assignment/', data)).data -} - -export async function submitFeedbackForAssignment ({ feedback, assignment }: - { feedback: Partial<CreateUpdateFeedback>, assignment: Assignment}): Promise<CreateUpdateFeedback> { - return (await ax.post(`/api/assignment/${assignment.pk}/finish/`, feedback)).data -} - -export async function submitUpdatedFeedback ({ feedback }: - {feedback: CreateUpdateFeedback}): Promise<CreateUpdateFeedback> { - return (await ax.patch(`/api/feedback/${feedback.ofSubmission}/`, feedback)).data -} - -export async function submitFeedback ({ feedback }: {feedback: CreateUpdateFeedback}): Promise<Feedback> { - return (await ax.post('/api/feedback/', feedback)).data -} - -export async function fetchSubmissionTypes (): Promise<Array<SubmissionType>> { - const url = '/api/submissiontype/' - return (await ax.get(url)).data -} - -export async function fetchSubmissionType (pk: string): Promise<SubmissionType> { - const url = `/api/submissiontype/${pk}/` - return (await ax.get(url)).data -} - -export async function fetchAvailableSubmissionCounts(group: Group | undefined): Promise<AvailableSubmissionCounts> { - const query = group ? '?group=' + group.pk : '' - const url = '/api/submissiontype/available/' + query - return (await ax.get(url)).data -} - -export async function fetchGroups(): Promise<Group[]> { - const url = '/api/group/' - return (await ax.get(url)).data -} - -export async function fetchUserGroups(userPk: string): Promise<Group[]> { - const url = `/api/user/${userPk}/get_groups/` - return (await ax.get(url)).data -} - -export async function setGroups (userPk: string, groups: Group[]): Promise<UserAccount> { - return (await ax.patch(`/api/user/${userPk}/change_groups/`, groups)).data -} - -export async function deleteSolutionComment (pk: number): Promise<AxiosResponse<void>> { - const url = `/api/solution-comment/${pk}/` - return ax.delete(url) -} - -export async function createSolutionComment(comment: Partial<SolutionComment>): Promise<SolutionComment> { - const url = '/api/solution-comment/' - return (await ax.post(url, comment)).data -} - -export async function patchSolutionComment(comment: Partial<SolutionComment>): Promise<SolutionComment> { - const url = `/api/solution-comment/${comment.pk}/` - return (await ax.patch(url, comment)).data -} - -export async function fetchAllAssignments (): Promise<Array<Assignment>> { - const url = '/api/assignment/' - return (await ax.get(url)).data -} - -export async function fetchActiveAssignments (): Promise<Assignment[]> { - const url = '/api/assignment/active/' - return (await ax.get(url)).data -} - -export async function deleteAssignment ({ assignment }: {assignment: Assignment}): Promise<AxiosResponse<void>> { - const url = `/api/assignment/${assignment.pk}/` - return ax.delete(url) -} - -export async function deleteAllActiveAssignments () { - const url = '/api/assignment/active/' - return ax.delete(url) -} - -export async function deleteComment (comment: FeedbackComment): Promise<AxiosResponse<void>> { - const url = `/api/feedback-comment/${comment.pk}/` - return ax.delete(url) -} - -export async function activateAllStudentAccess (): Promise<AxiosResponse<void>> { - return ax.post('/api/student/activate/') -} - -export async function deactivateAllStudentAccess (): Promise<AxiosResponse<void>> { - return ax.post('/api/student/deactivate/') -} - -export async function changePassword (userPk: string, data: {password: string}): Promise<UserAccount> { - return (await ax.patch(`/api/user/${userPk}/change_password/`, data)).data -} - -export async function getOwnUser (): Promise<UserAccount> { - return (await ax.get('/api/user/me/')).data -} - -export async function changeActiveForUser (userPk: string, active: boolean): Promise<UserAccount> { - return (await ax.patch(`/api/user/${userPk}/change_active/`, { 'is_active': active })).data -} - -export async function changeUserRole (userPk: string, role: UserAccount.RoleEnum): Promise<UserAccount> { - return (await ax.patch(`/api/user/${userPk}/change_role/`, { role })).data -} - -export async function fetchUsers (): Promise<UserAccount[]> { - return (await ax.get('api/user/')).data -} - -export async function fetchUser(userPk: string): Promise<UserAccount> { - return (await ax.get(`/api/user/${userPk}`)).data -} - -export async function getLabels (): Promise<FeedbackLabel[]> { - return (await ax.get('/api/label/')).data -} - -export async function createLabel (payload: Partial<FeedbackLabel>) { - return (await ax.post('/api/label/', payload)).data -} - -export async function updateLabel (payload: FeedbackLabel) { - return (await ax.put('/api/label/' + payload.pk + '/', payload)).data -} - -export async function fetchSubmissionCounts () { - return (await ax.get('/api/submissiontype/available_counts/')).data -} - -export async function releaseUndoneAssignments () { - return (await ax.delete('/api/assignment/release')).data -} - -export async function patchInstanceSettings(config: { [config: string]: boolean }) { - return (await ax.patch('/api/config/change_config/', config)).data -} - -/** - * Issues a synchronized request to release all undone assignments of given user - * @param accessToken The access token to authenticate against the backend - */ -export function releaseUndoneAssignmentsSynchronized (accessToken: string) { - var request = new XMLHttpRequest() - request.open('DELETE', getInstanceBaseUrl() + 'api/assignment/release/', false) - request.setRequestHeader('Authorization', 'JWT ' + accessToken) - request.send() -} - -/** - * Issues a synchronized request to disable the account for the given details - * @param accessToken The access token to authenticate against the backend - * @param userPk The pk of the user account to disable - */ -export function disableAccount (accessToken: string, userPk: string) { - var request = new XMLHttpRequest() - request.open('PATCH', getInstanceBaseUrl() + `api/user/${userPk}/change_active/`, false) - request.setRequestHeader('Authorization', 'JWT ' + accessToken) - request.setRequestHeader('Content-Type', 'application/json') - request.send('{ "is_active": false }') -} - -export async function fetchReleases () { - const id = 'j.michal%2Fgrady' - const url = `https://gitlab.gwdg.de/api/v4/projects/${id}/releases` - return (await ax.get(url)).data as GitlabRelease[] -} - -export interface StudentExportOptions { setPasswords?: boolean } -export interface StudentExportItem { - Matrikel: string, - Name: string, - Username: string, - Sum: number, - Exam: string, - Password: string, - Email: string, - Scores: { type: string, score: number }[] -} -export async function fetchStudentExportData (options: StudentExportOptions): Promise<StudentExportItem[]> { - return (await ax.post('/api/export/json/', options)).data -} - -export async function importData (data: Object): Promise<AxiosResponse<void>> { - return ax.post('/api/import/', data) -} - -// Note, this interface does not represent all of the returned data, -// but only the fields which have to be transformed for deanonymisation -export interface InstanceExportData { - students: { - name: string, - matrikelNo: string - }[] -} -export async function fetchInstanceExportData (): Promise<InstanceExportData> { - return (await ax.get('/api/instance/export')).data -} - -ax.interceptors.response.use(undefined, errorInterceptor) - -export default ax diff --git a/grady/frontend/src/assets/brand.svg b/grady/frontend/src/assets/brand.svg deleted file mode 100644 index b245aec7..00000000 --- a/grady/frontend/src/assets/brand.svg +++ /dev/null @@ -1,241 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - inkscape:version="0.91 r13725" - version="1.1" - id="svg2" - viewBox="0 0 1500 400.00001" - height="400" - width="1500" - sodipodi:docname="brand.svg"> - <sodipodi:namedview - inkscape:window-maximized="1" - inkscape:window-y="19" - inkscape:window-x="0" - inkscape:window-height="1059" - inkscape:window-width="1918" - units="px" - showgrid="false" - inkscape:current-layer="layer1" - inkscape:document-units="px" - inkscape:cy="147.05606" - inkscape:cx="546.48529" - inkscape:zoom="0.5" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" - borderopacity="1.0" - bordercolor="#666666" - pagecolor="#ffffff" - id="base" - inkscape:object-paths="true" - inkscape:snap-intersection-paths="true" - inkscape:object-nodes="true" - inkscape:snap-smooth-nodes="true" - inkscape:snap-midpoints="true" - inkscape:snap-center="true" - inkscape:snap-grids="true" - inkscape:snap-to-guides="true"> - <inkscape:grid - type="xygrid" - id="grid7530" /> - </sodipodi:namedview> - <defs - id="defs4" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="translate(0,-652.36216)" - id="layer1" - inkscape:groupmode="layer" - inkscape:label="Layer 1"> - <text - sodipodi:linespacing="125%" - id="text4155" - y="785.93359" - x="40" - style="font-style:normal;font-weight:normal;font-size:18.75px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="785.93359" - x="40" - id="tspan4157" - sodipodi:role="line" /></text> - <g - transform="matrix(1.1234412,0,0,1.1234412,13.803675,-49.587352)" - id="g4148"> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:49.09632111px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="43.577591" - y="769.30743" - id="text4136" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4138" - x="43.577591" - y="769.30743" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:45px;font-family:monospace;-inkscape-font-specification:monospace">free(buf);</tspan></text> - <g - id="g4144" - transform="translate(0.9074132,-22.142857)"> - <rect - y="828.83081" - x="51.259876" - height="90.981384" - width="466.75812" - id="rect4140" - style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3d8fc1;stroke-width:7.82999992;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <path - transform="matrix(0.95142245,0.00906165,-0.01875887,0.45959361,40.435709,459.17271)" - inkscape:transform-center-y="-3.3172406" - inkscape:transform-center-x="-0.10382355" - d="M 102.5,802.71928 51.866074,804.09565 75.991067,759.5572 Z" - inkscape:randomized="0" - inkscape:rounded="0" - inkscape:flatsided="true" - sodipodi:arg2="1.5436203" - sodipodi:arg1="0.49642275" - sodipodi:r2="14.622154" - sodipodi:r1="29.244308" - sodipodi:cy="788.79071" - sodipodi:cx="76.785713" - sodipodi:sides="3" - id="path4142" - style="opacity:1;fill:#3d8fc1;fill-opacity:1;fill-rule:nonzero;stroke:#3d8fc1;stroke-width:7.83047009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - sodipodi:type="star" /> - </g> - <text - sodipodi:linespacing="125%" - id="text4217" - y="576.64789" - x="395.71426" - style="font-style:normal;font-weight:normal;font-size:18.75px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="576.64789" - x="395.71426" - id="tspan4219" - sodipodi:role="line" /></text> - </g> - <text - sodipodi:linespacing="125%" - id="text4159" - y="817.44897" - x="27.760962" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.55485535px;line-height:125%;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="817.44897" - x="27.760962" - id="tspan4161" - sodipodi:role="line" - style="-inkscape-font-specification:'monospace Bold';font-family:monospace;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal">7</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4159-3" - y="752.0816" - x="28.401009" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.0922699px;line-height:125%;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0.31606218;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="752.0816" - x="28.401009" - id="tspan4161-6" - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Bold'">6</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4159-3-7" - y="1030.8582" - x="28.442116" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.0922699px;line-height:125%;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0.31606218;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="1030.8582" - x="28.442116" - id="tspan4161-6-5" - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Bold'">8</tspan></text> - <text - sodipodi:linespacing="125%" - id="text4159-3-3" - y="703.95551" - x="27.846083" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.0922699px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0.31606218;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - y="703.95551" - x="27.846083" - id="tspan4161-6-56" - sodipodi:role="line">5</tspan></text> - <path - id="path6554" - title="sin(x)" - d="m 93.74644,911.92137 c 7.84438,-6.96836 15.68876,-13.29074 23.53314,-13.23944 7.84438,0.0513 15.68877,6.48775 23.53315,13.45526 7.84437,6.96753 15.68875,13.18498 23.53314,13.0201 7.84438,-0.16489 15.68875,-6.7027 23.53314,-13.66753 7.84438,-6.96483 15.68876,-13.07571 23.53315,-12.79728 7.84437,0.27842 15.68875,6.91584 23.53313,13.87614 7.84439,6.9603 15.68876,12.96297 23.53314,12.57108 7.84439,-0.39188 15.68877,-7.12717 23.53314,-14.08107 7.84438,-6.95391 15.68877,-12.84678 23.53315,-12.34154 7.84438,0.50526 15.68876,7.3366 23.53314,14.28226 7.84438,6.94568 15.68877,12.72719 23.53314,12.10871 7.84438,-0.61848 15.68876,-7.54407 23.53315,-14.47966 7.84437,-6.93558 15.68875,-12.60419 23.53314,-11.87265 7.84438,0.73154 15.68876,7.74954 23.53314,14.6732 7.84438,6.92366 15.68876,12.47787 23.53314,11.63346 7.84438,-0.84441 15.68876,-7.95296 23.53314,-14.86285 7.84439,-6.90989 15.68877,-12.34823 23.53314,-11.39117 7.84439,0.95705 15.68877,8.15427 23.53315,15.04855 7.84437,6.89429 15.68876,12.21529 23.53314,11.14584" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:0.31606218;fill-rule:nonzero;stroke:#ff0000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.7150259;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - inkscape:connector-curvature="0" /> - <g - transform="scale(0.98991789,1.0101848)" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:167.73872375px;line-height:125%;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="text6581"> - <path - d="m 711.55349,918.83164 q -1.34191,-1.00644 -3.0193,-1.34191 -1.50965,-0.33548 -3.18704,-0.67096 -1.50964,-0.33548 -3.01929,-0.67095 -1.50965,-0.33548 -2.68382,-1.34191 l -1.00644,-2.01287 q -0.50321,-0.33548 -2.51608,-0.67095 -1.84512,-0.33548 -2.51608,-0.33548 -4.02573,-3.35477 -8.72241,-7.54824 -4.52895,-4.36121 -6.03859,-9.22563 -0.8387,-2.68382 -1.00644,-3.69025 0,-1.17418 -2.01286,-3.18704 -0.33548,-0.83869 -1.00643,-3.0193 -0.50322,-2.34834 -1.17417,-4.86442 -0.50322,-2.51608 -1.00644,-4.69668 -0.50321,-2.34835 -0.67095,-3.35478 -0.16774,-0.83869 -0.16774,-1.50965 l 0,-2.51608 q 0,-7.54824 1.67739,-14.76101 1.84512,-7.3805 3.35477,-14.761 0,-0.50322 0.33548,-2.01287 0.33548,-1.67739 0.67095,-3.52251 0.33548,-1.84513 0.50322,-3.35478 0.33548,-1.67738 0.50322,-2.01286 0,-0.33548 0.50321,-1.67739 0.50322,-1.34191 1.00643,-2.85156 0.50322,-1.50964 1.00644,-2.68382 0.50321,-1.34191 0.50321,-1.67738 0.16774,-0.67096 0.50322,-3.0193 0.50321,-2.34834 1.00643,-4.86442 0.50322,-2.68382 0.83869,-5.03216 0.50322,-2.34835 0.50322,-3.0193 1.00643,-4.69669 4.19347,-10.3998 3.35477,-5.70312 7.54824,-11.2385 4.36121,-5.53537 9.05789,-10.23206 4.86443,-4.86442 8.89015,-7.71598 16.27066,-5.36764 32.37358,-7.21277 16.27065,-2.01286 33.21227,-2.01286 1.34191,0 3.52251,0 2.1806,0 4.19347,0.16774 2.1806,0 3.69025,0 1.67739,0 2.01286,0 0.67096,0 3.69026,0.33548 3.18703,0.33547 7.04502,0.67095 3.85799,0.33548 7.54824,0.67096 3.69026,0.33547 5.70312,0.50321 0.50322,0 2.01287,0.16774 1.50964,0.16774 3.18703,0.67096 1.67739,0.33547 3.0193,1.17417 1.50965,0.83869 1.67739,2.01286 0,0.33548 0,0.67096 0.16773,0.16773 0.16773,0.50321 0,3.0193 -1.17417,8.72242 -1.17417,5.70311 -2.68382,11.90945 -1.50964,6.03859 -3.18703,11.40623 -1.50965,5.36764 -2.34834,7.54824 l -7.54825,0 q -3.35477,0 -6.37407,-0.50322 -3.01929,-0.50321 -6.37407,-1.50964 l -33.54774,0 q -2.34835,1.67738 -5.1999,2.51608 -2.68382,0.67095 -5.03217,2.1806 -5.87085,3.85799 -10.23206,10.90302 -4.19347,6.87729 -7.04502,14.92874 -2.68382,7.88372 -4.19347,15.93518 -1.34191,8.05146 -1.34191,14.25779 0,0.33548 0,1.50965 0,1.00644 0,2.18061 0,1.17417 0,2.1806 0.16774,1.00643 0.16774,1.50965 0.83869,3.35477 3.35477,6.20633 2.68382,2.68382 6.54181,2.68382 l 15.76744,0 q 1.50965,0 2.34834,-1.34191 0.8387,-1.34191 1.17417,-3.0193 0.33548,-1.84512 0.33548,-3.52251 0.16774,-1.84513 0.16774,-2.85156 l 0,-0.16774 q 0,-2.34834 -1.17417,-3.52251 -1.00643,-1.17417 -2.34834,-1.84513 -1.34191,-0.83869 -2.51608,-1.34191 -1.00644,-0.50321 -1.00644,-1.67738 l 0,-0.50322 q 2.01287,-6.37407 3.69026,-12.91588 1.84512,-6.70955 4.19346,-12.74814 0.67096,-2.01287 1.17417,-2.85156 0.50322,-0.8387 0.8387,-1.50965 0.33548,-0.67096 0.50321,-1.50965 0.33548,-1.00643 0.50322,-3.35477 l 60.55368,0 q 0,1.84512 -0.83869,3.69025 -0.8387,1.67739 -1.34191,3.52251 l -3.85799,15.76744 q -0.16774,0.33548 -0.67096,1.67739 -0.33548,1.34191 -0.83869,2.85156 -0.50322,1.50965 -1.00643,2.85156 -0.50322,1.17417 -0.50322,1.50964 -0.16774,0.67096 -0.83869,3.18704 -0.50322,2.34834 -1.17418,5.1999 -0.67095,2.85156 -1.34191,5.36764 -0.50321,2.51608 -0.67095,3.18704 0,0.50321 -0.50322,1.67738 -0.33547,1.17417 -0.83869,2.68382 -0.50322,1.34191 -1.00643,2.68382 -0.33548,1.34191 -0.50322,1.84513 -1.50965,3.85799 -2.1806,7.88372 -0.67096,4.02573 -1.84513,8.05146 -1.34191,4.3612 -3.18703,8.38693 -1.84513,4.02573 -3.69026,8.2192 -1.00643,2.1806 -1.34191,4.52895 -0.33547,2.34834 -1.67738,4.3612 -0.67096,0.8387 -3.52252,1.50965 -2.85155,0.67096 -6.87728,1.17417 -4.02573,0.50322 -8.89016,0.67096 -4.69668,0.33547 -9.22563,0.50321 -4.52894,0.16774 -8.38693,0.16774 -3.85799,0.16774 -5.87086,0.16774 -5.36764,0 -10.06432,-0.50322 -4.69669,-0.33547 -9.22563,-1.00643 -4.52895,-0.67095 -9.22563,-1.67739 -4.52895,-1.00643 -9.89659,-2.1806 -0.67095,-0.16774 -1.3419,-0.33548 -0.67096,-0.16773 -1.50965,-0.33547 z" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic'" - id="path4253" /> - <path - d="m 908.82472,811.47885 q 0.16774,2.51608 0.67095,3.0193 0.50322,0.33548 1.34191,0.33548 6.0386,0 11.2385,-0.16774 5.36764,-0.33548 9.22563,-1.17417 4.02573,-1.00643 6.20633,-2.85156 2.34834,-2.01287 2.34834,-5.53538 0,-2.34834 -1.34191,-4.02573 -1.17417,-1.67738 -3.18703,-2.68382 -2.01287,-1.17417 -4.36121,-1.67738 -2.34834,-0.50322 -4.52895,-0.50322 -5.36764,0 -9.72884,0.67095 -4.36121,0.50322 -4.69669,2.68382 l -3.18703,11.90945 z m -44.45076,-55.52151 q 11.90944,-2.68382 24.82533,-4.02573 13.08362,-1.50965 27.67689,-1.50965 3.52251,0 7.04502,0 3.69025,0 7.54824,0.33548 0.33548,0 3.52252,0.16773 3.35477,0.16774 7.71598,0.67096 4.36121,0.33548 8.89015,0.83869 4.69669,0.50322 7.71598,1.17417 10.23206,2.34835 17.94805,6.37408 7.71598,3.85799 12.74814,9.89658 5.1999,6.03859 7.71598,14.25779 2.51606,8.2192 2.51606,19.28995 0,12.91589 -7.04501,22.30925 -7.04502,9.22563 -18.45125,15.59971 -5.19991,3.01929 -11.74172,5.1999 -6.54181,2.01286 -12.41266,3.35477 2.1806,10.3998 4.52894,19.62543 0,0.16774 0.33548,2.34834 0.33548,2.01287 1.00643,5.03217 0.67096,3.01929 1.34191,6.70954 0.67096,3.52252 1.34191,6.54181 0.67096,3.0193 1.00644,5.19991 0.50321,2.01286 0.50321,2.01286 1.67739,6.20633 2.51608,9.39337 0.8387,3.18703 1.17417,4.52894 0.50322,1.34191 0.50322,1.50965 0.16774,0 0.16774,0.16774 0.16774,0 0.33548,0.67096 0.16774,0.67095 0.83869,3.01929 0.67096,2.34835 1.84513,6.87729 1.17417,4.69668 3.18703,12.91588 -0.33548,0 -0.67095,0.33548 -0.33548,0.33548 -0.8387,0.33548 -0.33547,0 -0.50321,-0.16774 l -45.28946,0 q -2.34834,0 -4.3612,-0.50322 -2.01287,-0.50321 -3.0193,-2.34834 l -5.03216,-15.5997 q -2.18061,-8.38694 -3.69026,-16.4384 -1.50964,-8.21919 -3.35477,-16.60613 -0.50322,-2.1806 -1.00643,-7.21276 -0.33548,-5.03217 -1.00643,-10.23207 -0.50322,-5.1999 -1.50965,-9.22563 -1.00644,-4.02573 -2.51608,-4.02573 -0.67096,0 -1.67739,2.01287 -1.00643,1.84512 -2.01287,4.19347 -1.00643,2.34834 -2.01286,4.69668 -0.83869,2.34834 -1.00643,3.0193 0,0.50321 -0.67096,2.34834 -0.67095,1.84513 -1.50965,4.36121 -0.67095,2.34834 -1.50964,4.69668 -0.67096,2.1806 -1.17418,3.35478 -0.16773,0.50321 -0.83869,2.34834 -0.67095,1.67739 -1.50965,4.3612 -0.83869,2.51609 -2.01286,5.70312 -1.00644,3.18704 -2.01287,6.54181 -1.17417,3.85799 -2.01286,7.38051 -0.8387,3.35477 -2.01287,6.20633 -0.83869,2.51608 -1.84512,4.02573 -1.00644,1.34191 -1.50965,1.34191 l -58.20534,0 q -0.16774,0 -0.67095,-0.50322 -0.50322,-0.50322 -0.67096,-0.67095 l 0,-1.00644 q 4.36121,-13.08362 8.55468,-26.50271 4.3612,-13.4191 9.05789,-26.16725 2.68382,-7.21276 5.53538,-15.76744 2.85155,-8.55467 5.70311,-17.27708 3.0193,-8.89016 5.70312,-17.44483 2.68382,-8.72241 4.86442,-16.27066 l 11.40624,-43.7798 z" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic'" - id="path4255" /> - <path - d="m 1076.4219,834.6268 q -0.3355,-4.19347 -1.0064,-10.06433 -0.671,-6.03859 -1.5097,-11.57397 -0.8387,-5.53538 -1.6774,-9.39337 -0.8387,-3.85799 -1.5096,-3.85799 -0.671,0 -2.0129,3.85799 -1.1741,3.85799 -2.5161,9.39337 -1.1741,5.53538 -2.3483,11.57397 -1.1742,5.87086 -1.8451,10.06433 l 14.4255,0 z m 69.1084,86.38544 q -1.3419,0.16774 -2.8516,0.16774 -1.3419,0 -2.8516,0 -4.6966,0 -10.3998,-0.33548 -5.7031,-0.33548 -11.5739,-0.67095 -5.7031,-0.50322 -11.2385,-0.8387 -5.5354,-0.33547 -9.8966,-0.33547 -1.0064,0 -3.0193,0 -2.0129,-0.16774 -2.1806,-0.16774 l -2.0129,-1.00644 q 0,0 -0.5032,-1.34191 -0.5032,-1.34191 -1.1742,-3.18703 -0.6709,-2.01287 -1.3419,-4.02573 -0.5032,-2.01287 -0.6709,-3.35478 l -4.6967,-21.63829 q -0.3355,-1.34191 -0.5032,-2.51608 -0.1678,-1.17417 -0.5032,-2.01287 -0.1678,-1.00643 -1.0065,-1.50964 -0.6709,-0.67096 -2.1806,-0.67096 l -17.2771,0 q -3.3547,0 -5.0321,1.67739 -1.6774,1.50965 -3.3548,5.36764 -1.5096,3.69025 -3.6902,10.06432 -2.0129,6.20633 -6.0386,15.43196 -0.3355,0.33548 -0.8387,0.50322 -0.3355,0.16774 -0.671,0.33548 -0.3355,0.16774 -0.5032,0.16774 l -50.99258,0 q -0.83869,0 -1.00643,-1.00644 0,-1.17417 0,-1.67738 l 0,-0.33548 q 0,-2.34834 1.34191,-7.54824 1.50965,-5.36764 3.69025,-12.07719 2.34834,-6.87729 4.86442,-14.09006 2.51608,-7.21276 4.69673,-13.41909 2.3483,-6.37407 3.6902,-10.56754 1.5097,-4.36121 1.5097,-5.1999 0,-3.35478 0.8387,-5.53538 1.0064,-2.1806 2.1806,-6.20633 0.3354,-0.67096 1.0064,-3.0193 0.8387,-2.51608 2.0129,-5.70312 1.1741,-3.18703 2.3483,-6.87729 1.3419,-3.69025 2.3483,-6.87728 1.1742,-3.18704 2.0129,-5.53538 0.8387,-2.51608 1.0064,-3.35478 0,-0.16773 0.3355,-0.83869 0.3355,-0.67095 0.671,-1.50965 0.3354,-0.83869 0.6709,-1.50965 0.3355,-0.83869 0.3355,-1.00643 0.5032,-1.50965 1.3419,-4.52894 1.0064,-3.18704 2.8516,-8.05146 1.8451,-4.86443 5.0321,-11.74171 3.1871,-7.04503 8.2192,-16.27066 0.1678,-0.16774 0.8387,-0.83869 0.8387,-0.67096 1.1742,-2.18061 l 65.4181,0 37.5735,167.40325 z" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic'" - id="path4257" /> - <path - d="m 1210.5552,875.05183 0.8387,5.53538 13.2514,-0.8387 q 2.3483,-1.67738 5.0321,-2.34834 2.8516,-0.83869 5.1999,-2.34834 5.7031,-3.85799 10.0643,-10.06432 4.3613,-6.20634 7.0451,-13.4191 2.8515,-7.21277 4.1934,-14.59327 1.5097,-7.3805 1.5097,-13.58684 0,-0.33547 0,-1.34191 0,-1.17417 0,-2.34834 0,-1.17417 -0.1677,-2.1806 0,-1.00644 0,-1.50965 -0.8387,-3.35478 -3.5226,-6.0386 -2.516,-2.68381 -6.374,-2.85155 l -12.9159,-0.50322 q -0.671,0.33548 -1.3419,1.67739 -0.671,1.34191 -1.3419,3.01929 -0.5032,1.67739 -1.0065,3.35478 -0.3354,1.67739 -0.3354,2.68382 l 0,0.16774 -20.1287,57.53438 z m 65.5859,-112.88816 q 2.8515,1.84512 6.7095,3.18703 4.0257,1.34191 6.3741,3.18704 l 1.0064,2.01286 q 0.5032,0.33548 2.3483,0.67096 2.0129,0.33548 2.6839,0.33548 4.0257,3.35477 8.5546,7.71598 4.6967,4.19347 6.2064,9.05789 0.8387,2.68382 0.8387,3.85799 0.1677,1.00643 2.1806,3.0193 0.1677,0.83869 0.6709,3.18703 0.671,2.18061 1.3419,4.69669 0.671,2.51608 1.1742,4.86442 0.5032,2.1806 0.671,3.18704 l 0,1.50964 q 0,0.67096 0,1.50965 0.1677,0.67096 0.1677,1.00644 0,3.85799 -0.5032,6.87728 -0.5032,3.0193 -1.3419,5.87086 -0.671,2.85156 -1.6774,5.87085 -0.8387,2.85156 -1.5097,6.54181 0,0.50322 -0.3354,2.18061 -0.3355,1.50965 -0.671,3.35477 -0.3355,1.84513 -0.6709,3.52251 -0.1678,1.50965 -0.3355,1.84513 0,0.33548 -0.5032,1.67739 -0.5033,1.34191 -1.0065,2.85156 -0.5032,1.50964 -1.0064,2.85155 -0.5032,1.17418 -0.5032,1.50965 -0.1678,0.67096 -0.671,2.34835 -0.3355,1.50964 -0.8387,3.35477 -0.3354,1.67739 -0.8387,3.18704 -0.3354,1.50964 -0.3354,2.1806 -1.0065,4.69668 -3.858,10.06432 -2.6839,5.1999 -6.3741,10.23206 -3.5225,5.03217 -7.716,9.39337 -4.1935,4.19347 -8.2192,7.04503 -9.0579,4.52894 -15.5997,6.87729 -6.3741,2.34834 -12.5804,3.69025 -6.2063,1.17417 -13.4191,1.67739 -7.045,0.50321 -17.4448,1.17417 l -71.7922,0 q 0,-0.50322 0.8387,-3.85799 0.8387,-3.35478 2.0129,-8.05146 1.3419,-4.69669 2.8515,-10.06433 1.5097,-5.53537 2.8516,-10.23206 1.3419,-4.69668 2.1806,-7.88372 1.0064,-3.35477 1.1742,-4.02573 l 3.858,-15.76744 11.0707,-33.54774 q 1.8451,-5.1999 3.187,-9.39337 1.342,-4.36121 2.5161,-7.71598 1.6774,-5.53538 2.6838,-9.22563 1.1742,-3.85799 1.8452,-6.37407 0.6709,-2.68382 1.0064,-4.36121 0.3355,-1.67739 0.8387,-3.18704 1.3419,-4.3612 3.187,-8.38693 1.8452,-4.02573 3.6903,-8.2192 1.0064,-2.1806 1.3419,-4.52894 0.3355,-2.34835 1.6774,-4.36121 l 0.1677,-0.16774 q 0.5032,-0.83869 1.5097,-1.84513 1.0064,-1.17417 4.3612,-1.67738 l 50.9925,0 q 0.5033,-0.16774 1.6774,-0.16774 2.8516,0 7.8838,1.17417 5.1999,1.17417 13.4191,2.68382 z" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic'" - id="path4259" /> - <path - d="m 1325.2545,919.67033 q 2.8515,-20.12865 7.5482,-39.58634 4.6967,-19.45769 9.3934,-39.25086 -4.6967,-10.23206 -8.7224,-20.63186 -3.858,-10.56754 -7.716,-20.96734 -3.858,-10.56754 -8.0515,-20.79961 -4.1934,-10.3998 -9.3933,-20.46412 4.0257,-1.00643 8.3869,-1.34191 4.5289,-0.50322 9.2256,-0.50322 l 15.7675,0 q 2.8515,0 5.7031,0 2.8515,0 5.5354,-0.33547 l 4.8644,-0.67096 2.0128,0.67096 q 1.0065,1.34191 1.5097,3.35477 0.6709,1.84513 1.1742,4.02573 0.5032,2.01287 1.0064,4.02573 0.5032,1.84513 1.5096,3.35477 2.1806,6.37408 3.1871,11.74172 1.1741,5.36763 3.6902,11.57397 1.6774,-2.85156 2.8516,-5.36764 1.1742,-2.68382 2.5161,-5.53538 l 10.232,-20.63186 6.0386,-5.70312 q 3.858,0.16774 7.716,0.33548 4.0257,0.16774 7.8837,0.50321 l 12.7482,0.8387 19.9609,-1.17417 1.0064,1.50965 q 0.1677,0.67095 0.1677,1.84512 -0.8386,9.56111 -5.1999,17.94804 -4.1934,8.2192 -9.0578,16.27066 l -2.0129,3.35478 q -3.3548,5.87085 -6.7096,11.57397 -3.187,5.70311 -6.5418,11.57397 -3.3547,5.87085 -6.5418,12.07719 -3.0193,6.03859 -6.5418,11.90945 -0.8387,6.20633 -1.6774,12.41266 -0.6709,6.0386 -1.6774,12.07719 -1.3419,7.3805 -3.0193,14.59327 -1.1741,4.36121 -2.1806,8.89015 -1.0064,4.36121 -2.0128,8.72242 -0.671,7.21276 -2.5161,14.25779 -0.671,1.34191 -1.1742,3.01929 -0.3355,1.50965 -1.5096,2.68382 l -29.6898,0 -0.6709,0.16774 q -3.6903,0.16774 -7.3805,0 -3.5226,0 -7.2128,0.33548 l 0,-0.50322 -12.7481,0 -1.5097,-1.17417 -0.1677,-1.00643 z" - style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Shining NFI Demo';-inkscape-font-specification:'Shining NFI Demo Italic'" - id="path4261" /> - </g> - <path - inkscape:connector-curvature="0" - id="path4221-1-0-3" - d="m 68.775738,1012.3622 311.224262,0" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.31606218;fill-rule:nonzero;stroke:none;stroke-width:9.52231693px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.31764706;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> - <rect - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.31764706;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.7150259;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="rect7532" - width="225" - height="10" - x="67.574112" - y="1010.536" /> - <rect - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.31764706;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.7150259;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="rect7532-6" - width="342.5" - height="10" - x="67.574112" - y="731.80054" /> - <rect - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.31764706;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.7150259;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="rect7532-0" - width="250" - height="10" - x="67.574112" - y="683.91083" /> - </g> -</svg> diff --git a/grady/frontend/src/assets/fonts.css b/grady/frontend/src/assets/fonts.css deleted file mode 100644 index 4a3b402e..00000000 --- a/grady/frontend/src/assets/fonts.css +++ /dev/null @@ -1,48 +0,0 @@ -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), url(fonts/roboto-thin.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(fonts/roboto-light.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url(fonts/roboto-regular.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), url(fonts/roboto-medium.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), url(fonts/roboto-bold.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 900; - src: local('Roboto Black'), local('Roboto-Black'), url(fonts/roboto-black.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/grady/frontend/src/assets/fonts/Material-Icons.woff2 b/grady/frontend/src/assets/fonts/Material-Icons.woff2 deleted file mode 100644 index 34cdd2afba56b9dd3c7f0e3b758069a92db6b7bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60840 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<390@bYU$u= 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 diff --git a/grady/frontend/src/assets/fonts/roboto-black.woff2 b/grady/frontend/src/assets/fonts/roboto-black.woff2 deleted file mode 100644 index 689d7cb05c69ab723eb3a7a8140ef2c900699f2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11012 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 M^0C~n0so>H0Qp$4&;S4c diff --git a/grady/frontend/src/assets/fonts/roboto-bold.woff2 b/grady/frontend/src/assets/fonts/roboto-bold.woff2 deleted file mode 100644 index 1cdd68c821394eaf0e4a87e1dd9c4df1c6e8bf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11020 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 O^VRv-C+o|~w;2Fg8=b8H diff --git a/grady/frontend/src/assets/fonts/roboto-light.woff2 b/grady/frontend/src/assets/fonts/roboto-light.woff2 deleted file mode 100644 index dc034ba45e32b5faee7612dc47a216feefe63f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11180 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 diff --git a/grady/frontend/src/assets/fonts/roboto-medium.woff2 b/grady/frontend/src/assets/fonts/roboto-medium.woff2 deleted file mode 100644 index 5ab8a6561a35603d2223a320e335561134c3529e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11056 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 diff --git a/grady/frontend/src/assets/fonts/roboto-regular.woff2 b/grady/frontend/src/assets/fonts/roboto-regular.woff2 deleted file mode 100644 index 4fc449afdba7aeb19b03c1f216e369f20a3e2191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11016 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 R8yER1Y_!;0@OT9i0|33bh<pG5 diff --git a/grady/frontend/src/assets/fonts/roboto-thin.woff2 b/grady/frontend/src/assets/fonts/roboto-thin.woff2 deleted file mode 100644 index 32fd373c3f4b4a1e8dd61f3c3eb7867b596efd14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10984 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 SJw@P`XJKW#-y0DI1_l5p%1cWC diff --git a/grady/frontend/src/assets/material-icons.css b/grady/frontend/src/assets/material-icons.css deleted file mode 100644 index d380d74c..00000000 --- a/grady/frontend/src/assets/material-icons.css +++ /dev/null @@ -1,23 +0,0 @@ -/* fallback */ -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - src: url(fonts/Material-Icons.woff2) format('woff2'); -} - -.material-icons { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -moz-font-feature-settings: 'liga'; - -moz-osx-font-smoothing: grayscale; -} \ No newline at end of file diff --git a/grady/frontend/src/class-component-hooks.ts b/grady/frontend/src/class-component-hooks.ts deleted file mode 100644 index 2518b8b6..00000000 --- a/grady/frontend/src/class-component-hooks.ts +++ /dev/null @@ -1,8 +0,0 @@ -import Component from 'vue-class-component' - -// Register the router hooks with their names -Component.registerHooks([ - 'beforeRouteEnter', - 'beforeRouteLeave', - 'beforeRouteUpdate' // for vue-router 2.2+ -]) diff --git a/grady/frontend/src/components/AutoLogout.vue b/grady/frontend/src/components/AutoLogout.vue deleted file mode 100644 index 2d4d662b..00000000 --- a/grady/frontend/src/components/AutoLogout.vue +++ /dev/null @@ -1,117 +0,0 @@ -<template> - <v-dialog - v-model="logoutDialog" - persistent - max-width="30%" - > - <v-card id="logout-dialog"> - <v-card-title class="headline"> - You'll be logged out! - </v-card-title> - <v-card-text> - Due to inactivity you'll be logged out in a couple of moments.<br> - Any unsaved work will be lost. - Click Continue to stay logged in. - </v-card-text> - <v-card-actions> - <v-btn - id="logout-btn" - text - color="grey lighten-0" - @click="logout" - > - Logout now - </v-btn> - <v-spacer /> - <v-btn - id="continue-btn" - text - color="blue darken-2" - @click="continueWork" - > - Continue - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component, { mixins } from 'vue-class-component' -import { Watch } from 'vue-property-decorator' -import { mapState } from 'vuex' -import { Authentication } from '@/store/modules/authentication' -import { actions } from '@/store/actions' -import { getters } from '@/store/getters' -import { ConfigModule } from '../store/modules/config' -import * as api from '@/api' - -@Component({ - name: 'auto-logout' -}) -export default class AutoLogout extends Vue { - timer = 0 - logoutDialog = false - - get lastTokenRefreshTry () { return Authentication.state.lastTokenRefreshTry } - get refreshingToken () { return Authentication.state.refreshingToken } - get jwtTimeDelta () { return ConfigModule.state.config.timeDelta } - get lastAppInteraction () { return getters.state.lastAppInteraction } - get accessToken () { return Authentication.state.token } - - logout () { - this.logoutDialog = false - actions.logout('You have been logged out due to inactivity.') - } - - continueWork () { - Authentication.refreshJWT() - this.logoutDialog = false - } - - @Watch('lastAppInteraction') - onLastInteractionChange () { - const timeSinceLastRefresh = Date.now() - this.lastTokenRefreshTry - const timeDelta = this.jwtTimeDelta - // refresh jwt if it's older than 20% of his maximum age - if (this.$route.name !== 'login' && timeSinceLastRefresh > timeDelta * 0.2 && - !this.refreshingToken) { - Authentication.refreshJWT() - } - } - - mounted () { - // release locked assignments when user is logged in and page is closed - window.addEventListener('unload', (event: Event) => { - // we use synchronous xhr's here to prevent the page from unloading before the request was finished - if (this.accessToken !== '' && Authentication.isTutorOrReviewer) { - api.releaseUndoneAssignmentsSynchronized(this.accessToken) - } - if (this.accessToken !== '' && Authentication.isStudent && !ConfigModule.state.config.instanceSettings.exerciseMode) { - api.disableAccount(this.accessToken, Authentication.state.user.pk) - } - }, false) - - this.timer = setInterval(() => { - const timeDialogAppearsBeforeLogout = Math.min(600 * 1e3, - this.jwtTimeDelta ? this.jwtTimeDelta * 0.5 : Infinity) - if (this.$route.name !== 'login' && Authentication.isLoggedIn) { - if (Date.now() > this.lastTokenRefreshTry + this.jwtTimeDelta) { - this.logoutDialog = false - actions.logout('You\'ve been logged out due to inactivity.') - } else if (Date.now() + timeDialogAppearsBeforeLogout > this.lastTokenRefreshTry + this.jwtTimeDelta) { - this.logoutDialog = true - } - } - }, 1 * 1e3) - } - - beforeDestroy () { - clearInterval(this.timer) - } -} -</script> - -<style> -</style> diff --git a/grady/frontend/src/components/BaseLayout.vue b/grady/frontend/src/components/BaseLayout.vue deleted file mode 100644 index 6ba26e3d..00000000 --- a/grady/frontend/src/components/BaseLayout.vue +++ /dev/null @@ -1,199 +0,0 @@ -<template> - <div> - <v-navigation-drawer - fixed - clipped - app - permanent - width="300" - :mini-variant="mini" - > - <v-toolbar> - <v-list> - <v-list-item> - <v-list-item-action v-if="mini"> - <v-btn - icon - @click.native.stop="mini = !mini" - > - <v-icon>chevron_right</v-icon> - </v-btn> - </v-list-item-action> - <v-list-item-content - class="title" - > - {{ currentExam }} - </v-list-item-content> - <v-list-item-action v-if="!mini"> - <v-btn - icon - @click.native.stop="mini = !mini" - > - <v-icon>chevron_left</v-icon> - </v-btn> - </v-list-item-action> - </v-list-item> - </v-list> - </v-toolbar> - <slot name="sidebar-content" /> - <div class="sidebar-footer"> - <v-btn - id="feedback-btn" - href="https://gitlab.gwdg.de/j.michal/grady/issues" - target="_blank" - :block="!mini" - :fab="mini" - :text="mini" - :tile="!mini" - depressed - :class="{ 'fab-button': mini }" - > - <v-icon :left="!mini"> - feedback - </v-icon> - <div v-show="!mini"> - Feedback - </div> - </v-btn> - </div> - </v-navigation-drawer> - <v-app-bar - app - dense - clipped-left - fixed - dark - color="indigo darken-4" - class="grady-toolbar" - > - <router-link to="/home"> - <v-app-bar-title>Grady</v-app-bar-title> - </router-link> - <v-tooltip - v-if="multipleExams" - bottom - > - <template #activator="{ on }"> - <v-btn - id="examsButton" - color="cyan" - @click="changeExamSelection" - v-on="on" - > - Exams - </v-btn> - </template> - <span>Change selected Exam</span> - </v-tooltip> - <span class="pl-2 grady-speak">{{ gradySpeak }}</span> - <v-spacer /> - <instance-actions /> - <v-divider vertical /> - <user-options /> - </v-app-bar> - </div> -</template> - -<script> -import { mapGetters, mapState } from 'vuex' -import { UI } from '@/store/modules/ui' -import { mapStateToComputedGetterSetter } from '@/util/helpers' -import UserOptions from '@/components/UserOptions' -import InstanceActions from '@/components/InstanceActions' -import { Authentication } from '@/store/modules/authentication' -import { ConfigModule } from '../store/modules/config' -import ax, { fetchExamTypes } from '@/api' - - -export default { - name: 'BaseLayout', - components: { InstanceActions, UserOptions }, - data () { - return { - examTypes: [], - } - }, - computed: { - gradySpeak () { return Authentication.gradySpeak }, - currentExam () { return ConfigModule.state.config.currentExam }, - multipleExams () { - return this.examTypes.length > 1 - }, - isStudent () { return Authentication.isStudent }, - ...mapStateToComputedGetterSetter({ - pathPrefix: 'UI', - items: [ - { - name: 'mini', - path: 'sideBarCollapsed', - mutation: UI.SET_SIDEBAR_COLLAPSED - } - ] - }) - }, - created () { - this.loadExamTypes() - }, - methods: { - logFeedbackClick () { - this.darkModeUnlocked = true - }, - changeExamSelection () { - this.$router.push({ name: 'exam-selection' }) - }, - async loadExamTypes () { - try { - const response = (await ax.get('/api/examtype/')).data - this.examTypes = response - console.log('loaded examtypes') - } catch (ex) { - console.log(ex) - } - } - } -} -</script> - -<style scoped> - .sidebar-footer { - width: 100%; - bottom: 0px; - } - - .grady-toolbar { - font-weight: bold; - } - - .title { - color: gray; - white-space: nowrap; - } - - .fab-button { - margin: 0 12px; - } - - .fab-button-white { - color: grey !important; - } - - .dark-mode-switch { - margin-left: 22px; - } - - .v-btn { - margin: 15px; - } - -</style> - -<style> - .grady-toolbar > div { - padding-right: 0; - } - - .grady-toolbar .v-btn { - letter-spacing: initial; - text-transform: none; - } -</style> diff --git a/grady/frontend/src/components/ChangeLog.vue b/grady/frontend/src/components/ChangeLog.vue deleted file mode 100644 index a1785ab2..00000000 --- a/grady/frontend/src/components/ChangeLog.vue +++ /dev/null @@ -1,91 +0,0 @@ -<template> - <v-card name="change-log"> - <v-toolbar - color="teal" - > - <v-toolbar-title - style="min-width: fit-content;" - > - Change Log - </v-toolbar-title> - <v-spacer /> - <span style="font-size:16px;"> - Current version: {{ version }} - </span> - <v-btn - icon - @click="sendReq" - > - <v-icon v-if="!updating"> - refresh - </v-icon> - <v-progress-circular - v-else - indeterminate - color="black" - size="20" - /> - </v-btn> - </v-toolbar> - <ul id="releaseList"> - <li - v-for="release in releases" - :key="release.tag_name" - > - <h2 style="margin: 2%;"> - Release: {{ release.tag_name }} - </h2> - <!-- eslint-disable-next-line --> - <span class="releaseInfo" v-html="release.description_html"/> - <v-divider /> - </li> - </ul> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import * as api from '@/api' -import { GitlabRelease } from '@/models' - -const Changelog = Vue.extend({ - name: 'Changelog', - data() { - return { - releases: [] as GitlabRelease[], - version: '', - updating: false, - } - }, - mounted() { - this.sendReq() - }, - methods: { - async sendReq() { - this.updating = true - - try { - this.releases = await api.fetchReleases() - this.version = (await api.fetchConfig()).version - } - catch (ex) { - throw new Error('Error fetching grady version.') - } finally { - this.updating = false - } - } - } -}) - -export default Changelog -</script> - -<style> - .releaseInfo h2 { - font-size: 19px; - } - ul { - max-height: 350px; - overflow: auto; - } -</style> diff --git a/grady/frontend/src/components/CorrectionStatistics.vue b/grady/frontend/src/components/CorrectionStatistics.vue deleted file mode 100644 index 6defa04c..00000000 --- a/grady/frontend/src/components/CorrectionStatistics.vue +++ /dev/null @@ -1,73 +0,0 @@ -<template> - <v-card - id="correction-statistics" - class="py-2" - > - <v-card-title> - <span class="title">Statistics</span> - </v-card-title> - <div v-if="loaded"> - <ul class="inline-list mx-3"> - <li>Submissions per participant: <span>{{ statistics.submissionsPerStudent }}</span></li> - <li>Submissions per type: <span>{{ statistics.submissionsPerType }}</span></li> - <li> - Curr. mean score: - <span> - {{ statistics.currentMeanScore === null ? 'N.A.' : statistics.currentMeanScore.toFixed(2) }} - </span> - </li> - </ul> - <v-divider class="mx-2 my-2" /> - <div - v-for="(progress, index) in statistics.submissionTypeProgress" - :key="index" - > - <v-card-title class="py-0"> - {{ progress.name }} - </v-card-title> - <div class="mx-3"> - <v-progress-linear - :value="progress.feedbackFinal / progress.submissionCount * 100" - buffer - :buffer-value="(progress.feedbackInValidation + progress.feedbackFinal) * 100 / progress.submissionCount" - :color="progress.feedbackFinal === progress.submissionCount ? 'green' : 'blue'" - /> - </div> - </div> - </div> - </v-card> -</template> - -<script> -import { actions } from '@/store/actions' -import { ConfigModule } from '@/store/modules/config' - -export default { - name: 'CorrectionStatistics', - data () { - return { - loaded: false - } - }, - computed: { - statistics () { - return this.$store.state.statistics - } - }, - created () { - if (ConfigModule.state.config.examId !== '') { - actions.getStatistics().then(() => { this.loaded = true }) - } - } -} -</script> - -<style scoped> - .inline-list li { - display: inline; - margin: 0px 5px; - } - .inline-list span { - font-weight: bolder; - } -</style> diff --git a/grady/frontend/src/components/FreeLocksButton.vue b/grady/frontend/src/components/FreeLocksButton.vue deleted file mode 100644 index df5bb258..00000000 --- a/grady/frontend/src/components/FreeLocksButton.vue +++ /dev/null @@ -1,54 +0,0 @@ -<template> - <v-tooltip bottom> - <template #activator="{ on }"> - <v-btn - text - icon - :disabled="!activeAssignmentsExist" - :loading="loading" - @click="freeLocks" - v-on="on" - > - <v-icon>vpn_key</v-icon> - </v-btn> - </template> - <span>Free all locked Submissions</span> - </v-tooltip> -</template> - -<script> -import { deleteAllActiveAssignments, fetchActiveAssignments } from '@/api' -import { TutorOverview } from '@/store/modules/tutor-overview' - -export default { - name: 'FreeLocksButton', - data () { - return { - activeAssignmentsExist: false, - loading: false, - shortPollInterval: null - } - }, - async created () { - this.activeAssignmentsExist = await this.checkForActiveAssignments() - this.shortPollInterval = setInterval(async () => { - this.activeAssignmentsExist = await this.checkForActiveAssignments() - } , 5e3) - }, - beforeDestroy () { - clearInterval(this.shortPollInterval) - }, - methods: { - async checkForActiveAssignments () { - return (await fetchActiveAssignments()).length > 0 - }, - async freeLocks () { - this.loading = true - await deleteAllActiveAssignments() - this.loading = false - // Just lie to the user for now. The actual value will be fetched by the timeout soon. - this.activeAssignmentsExist = false - } - } -} -</script> diff --git a/grady/frontend/src/components/GDPRNotice.vue b/grady/frontend/src/components/GDPRNotice.vue deleted file mode 100644 index 48271010..00000000 --- a/grady/frontend/src/components/GDPRNotice.vue +++ /dev/null @@ -1,151 +0,0 @@ -<template> - <div> - <h4>Allgemeiner Hinweis und Pflichtinformationen</h4> - <p /> - - <h4>Benennung der verantwortlichen Stelle</h4> - <p>Die verantwortliche Stelle für die Datenverarbeitung auf dieser Website ist:</p> - <p> - <span id="s3-t-firma">Institut für Informatik - Georg-August-Universität Göttingen</span><br> - <span id="s3-t-ansprechpartner">Dr. Henrik Brosenne</span><br><span id="s3-t-strasse">Goldschmidtstraße 7</span><br> - <span id="s3-t-plz">37077</span> <span id="s3-t-ort">Göttingen</span> - </p> - <p> - Die verantwortliche Stelle entscheidet allein oder gemeinsam mit anderen über die Zwecke und Mittel der - Verarbeitung von personenbezogenen Daten (z.B. Namen, Kontaktdaten o. Ä.). - </p> - - <h4>Recht auf Beschwerde bei der zuständigen Aufsichtsbehörde</h4> - <p> - Als Betroffener steht Ihnen im Falle eines datenschutzrechtlichen Verstoßes ein Beschwerderecht bei der zuständigen - Aufsichtsbehörde zu. Zuständige Aufsichtsbehörde bezüglich datenschutzrechtlicher Fragen ist: - </p> - <p> - Die Landesbeauftragte für den Datenschutz Niedersachsen<br> - Prinzenstraße 5<br> - 30159 Hannover<br> - </p> - - <h4>Recht auf Datenübertragbarkeit</h4> - <p> - Ihnen steht das Recht zu, Daten, die wir auf Grundlage der Erfüllung eines Vertrags - automatisiert verarbeiten, an sich oder an Dritte aushändigen zu lassen. Die Bereitstellung erfolgt in einem - maschinenlesbaren Format. Sofern Sie die direkte Übertragung der Daten an einen anderen Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist. - </p> - - <h4>Recht auf Auskunft, Berichtigung, Sperrung, Löschung</h4> - <p> - Sie haben jederzeit im Rahmen der geltenden gesetzlichen Bestimmungen das Recht auf unentgeltliche Auskunft über - Ihre gespeicherten personenbezogenen Daten, Herkunft der Daten, deren Empfänger und den Zweck der - Datenverarbeitung und ggf. ein Recht auf Berichtigung, Sperrung oder Löschung dieser Daten. Diesbezüglich und - auch zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit über die im Impressum aufgeführten Kontaktmöglichkeiten an uns wenden. - </p> - - <h4>SSL- bzw. TLS-Verschlüsselung</h4> - <p> - Aus Sicherheitsgründen und zum Schutz der Übertragung vertraulicher Inhalte, die Sie an uns als Seitenbetreiber - senden, nutzt unsere Website eine SSL-bzw. TLS-Verschlüsselung. Damit sind Daten, die Sie über diese Website - übermitteln, für Dritte nicht mitlesbar. Sie erkennen eine verschlüsselte Verbindung an der „https://“ - Adresszeile Ihres Browsers und am Schloss-Symbol in der Browserzeile. - </p> - - <h4>Datenschutzbeauftragter</h4> - <p>Wir haben einen Datenschutzbeauftragten bestellt.</p> - <p> - Datenschutzbeauftragter der Universität<br> - Prof. Dr. Andreas Wiebe<br> - Lehrstuhl für Bürgerliches Recht, Wettbewerbs- und Immaterialgüterrecht, Medien- und Informationsrecht<br> - Platz der Göttinger Sieben 6<br> - 37073 Göttingen<br> - Tel.: 0551 39 - 7381<br> - Fax: 0551 39 - 4437<br> - E-Mail: lehrstuhl.wiebe@jura.uni-goettingen.de - </p> - - <h4>Server-Log-Dateien</h4> - <p>Der Provider der Website erhebt automatisch Informationen, die Ihr Browser automatisch an uns übermittelt. Dies sind:</p> - <p> - <ul> - <li>Besuchte Seite auf unserer Domain</li> - <li>Datum und Uhrzeit der Serveranfrage</li> - <li>Browsertyp und Browserversion</li> - <li>Verwendetes Betriebssystem</li> - <li>Referrer URL</li> - <li>Hostname des zugreifenden Rechners</li> - <li>IP-Adresse</li> - </ul> - </p> - <p> - Es findet keine Zusammenführung dieser Daten mit anderen Datenquellen statt. Grundlage der Datenverarbeitung - bildet Art. 6 Abs. 1 lit. b DSGVO, der die Verarbeitung von Daten zur Erfüllung eines Vertrags oder - vorvertraglicher Maßnahmen gestattet. - </p> - - <h4>Registrierung auf dieser Website</h4> - <p> - Zur Nutzung bestimmter Funktionen müssen Sie sich auf unserer Website registrieren. Die übermittelten Daten - dienen ausschließlich zum Zwecke der Nutzung des jeweiligen Angebotes oder Dienstes. Bei der Registrierung - abgefragte Pflichtangaben sind vollständig anzugeben. Andernfalls werden wir die Registrierung ablehnen. - </p> - <p>Im Falle wichtiger Änderungen, etwa aus technischen Gründen, informieren wir Sie</p> - <p> - Wir speichern die bei der Registrierung erfassten Daten während des Zeitraums, den Sie auf unserer Website - registriert sind. - Gesetzliche Aufbewahrungsfristen bleiben unberührt. - </p> - - <h4>Speicherdauer von Beiträgen und Kommentaren</h4> - <p> - Beiträge und Kommentare sowie damit in Verbindung stehende Daten, wie beispielsweise der Benutzername, - werden gespeichert. Der Inhalt verbleibt auf unserer Website, bis er vollständig gelöscht wurde oder aus - rechtlichen Gründen gelöscht werden musste. - </p> - <p> - Die Speicherung der Beiträge und Kommentare erfolgt auf Grundlage Art. 6 Abs. 1 lit. b DSGVO zur Erfüllung des - Arbeitsvertrages. - </p> - - <h4>Session storage</h4> - <p> - Unsere Website verwendet den Session storage des Browsers. In diesem werden für die Dauer einer Sitzun (Session) - Daten auf Ihrem Endgerät gespeichert. - </p> - - <h4>Google Web Fonts</h4> - <p>Unsere Website verwendet Web Fonts von Google. Anbieter ist die Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA.</p> - <p> - Durch den Einsatz dieser Web Fonts wird es möglich Ihnen die von uns gewünschte Darstellung unserer Website - zu präsentieren, unabhängig davon welche Schriften Ihnen lokal zur Verfügung stehen. Dies erfolgt über - den Abruf der Google Web Fonts von einem Server von Google in den USA und der damit verbundenen Weitergabe - Ihrer Daten an Google. Dabei handelt es sich um Ihre IP-Adresse und welche Seite Sie bei uns besucht haben. - Der Einsatz von Google Web Fonts erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO. Als Betreiber dieser - Website haben wir ein berechtigtes Interesse an der optimalen Darstellung und Übertragung unseres Webauftritts. - </p> - <p> - Das Unternehmen Google ist für das us-europäische Datenschutzübereinkommen "Privacy Shield" zertifiziert. - Dieses Datenschutzübereinkommen soll die Einhaltung des in der EU geltenden Datenschutzniveaus gewährleisten. - </p> - <p> - Einzelheiten über Google Web Fonts finden Sie unter: - <a href="https://www.google.com/fonts#AboutPlace:about">https://www.google.com/fonts#AboutPlace:about</a> - und weitere Informationen in den Datenschutzbestimmungen von Google: - <a href="https://policies.google.com/privacy/partners?hl=de">https://policies.google.com/privacy/partners?hl=de</a> - </p> - <p> - <small>Quelle: Datenschutz-Konfigurator von <a - href="http://www.mein-datenschutzbeauftragter.de" - target="_blank" - >mein-datenschutzbeauftragter.de</a></small> - </p> - </div> -</template> - -<script> -export default { - name: 'GDPRNotice' -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/ImportDialog.vue b/grady/frontend/src/components/ImportDialog.vue deleted file mode 100644 index ef9aeddb..00000000 --- a/grady/frontend/src/components/ImportDialog.vue +++ /dev/null @@ -1,108 +0,0 @@ -<template> - <v-dialog - v-model="show" - width="30%" - > - <v-card> - <v-card-title class="title"> - Import data - </v-card-title> - <v-card-text> - <p> - You can use this component to import data into Grady. - You can use - <a - href="https://gitlab.gwdg.de/grady-corp/rusty-hektor" - target="_blank" - >rusty-hektor</a> to convert - and pseudonomize ILIAS output. - </p> - <v-file-input - id="file-input" - v-model="hektorFile" - label="Select file" - accept="application/JSON" - /> - </v-card-text> - <v-card-actions> - <v-btn - id="submit-import" - :loading="loading" - @click="submitData" - > - Import - </v-btn> - <v-btn - color="red" - @click="$emit('hide')" - > - Cancel - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> -</template> - -<script> - import { importData } from '@/api' - - export default { - name: 'ImportDialog', - data: () => { - return { - show: true, - loading: false, - hektorFile: null - } - }, - watch: { - show(val) { - if (!val) { - this.$emit('hide') - } - } - }, - methods: { - async submitData() { - this.loading = true - let data - try { - data = await this.readFile() - data = JSON.parse(data) - } catch (error) { - this.$notify({ - type: 'error', - title: 'Error reading import file', - text: error.message - }) - this.loading = false - return - } - - try { - await importData(data) - this.$emit('imported') - this.$notify({ - title: 'Successfully imported data. Please log out and in again.', - type: 'success' - }) - } finally { - this.loading = false - } - }, - readFile() { - const fileReader = new FileReader() - return new Promise((resolve, reject) => { - fileReader.onload = event => { - resolve(event.target.result) - } - fileReader.onerror = () => { - fileReader.abort() - reject(new Error('Problem parsing input file.')) - } - fileReader.readAsText(this.hektorFile) - }) - } - } - } -</script> diff --git a/grady/frontend/src/components/InstanceActions.vue b/grady/frontend/src/components/InstanceActions.vue deleted file mode 100644 index 694e557b..00000000 --- a/grady/frontend/src/components/InstanceActions.vue +++ /dev/null @@ -1,75 +0,0 @@ -<template> - <div> - <export-dialog v-if="isReviewer" /> - <template v-for="(a, i) in actions"> - <v-tooltip - v-if="a.condition()" - :key="i" - bottom - > - <template #activator="{ on }"> - <v-btn - :id="a.id" - text - icon - @click="a.action" - v-on="on" - > - <v-icon>{{ a.icon }}</v-icon> - </v-btn> - </template> - {{ a.text }} - </v-tooltip> - </template> - <free-locks-button v-if="isReviewer" /> - <component - :is="displayComponent" - v-if="displayComponent" - @hide="hideComponent" - /> - </div> -</template> - -<script> -import ExportDialog from '@/components/export/ExportDialog' -import ImportDialog from '@/components/ImportDialog' -import ConfigDialog from '@/components/instance_config/ConfigDialog' -import FreeLocksButton from '@/components/FreeLocksButton' -import { Authentication } from '@/store/modules/authentication' -export default { - name: 'InstanceActions', - components: { ExportDialog, ImportDialog, FreeLocksButton }, - data () { - return { - displayComponent: null, - actions: [ - { - icon: 'publish', - text: 'Import exam data', - action: () => { this.displayComponent = ImportDialog }, - condition: () => Authentication.isReviewer, - id: 'import-data-list-item' - }, - { - icon: 'settings', - text: 'Instance settings', - action: () => { this.displayComponent = ConfigDialog }, - condition: () => Authentication.isReviewer, - id: 'configure-instance-item', - }, - ] - } - }, - computed: { - isReviewer: () => Authentication.isReviewer, - }, - methods: { - hideComponent () { - this.displayComponent = null - }, - logout () { - actions.logout() - } - } -} -</script> diff --git a/grady/frontend/src/components/LabelStatistics.vue b/grady/frontend/src/components/LabelStatistics.vue deleted file mode 100644 index 343958ba..00000000 --- a/grady/frontend/src/components/LabelStatistics.vue +++ /dev/null @@ -1,159 +0,0 @@ -<template> - <v-card> - <v-card-title class="title"> - Accumulated Label Statistics - </v-card-title> - <v-data-table - :headers="headers" - :items-per-page="-1" - sort-by="count" - sort-desc - :loading="loading" - :items="summedLabelCounts" - hide-default-footer - /> - - <div - v-for="([subType, labelCounts]) in mappedLabelCounts" - :key="subType" - > - <v-card-title class="title"> - Statistics for: {{ subType }} - </v-card-title> - <v-data-table - :headers="headers" - :items-per-page="-1" - sort-by="count" - sort-desc - :loading="loading" - :items="labelCounts" - hide-default-footer - /> - </div> - </v-card> -</template> - - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import * as api from '@/api' -import { LabelStatisticsForSubType, SubmissionType} from '../models' -import { getters } from '../store/getters' -import { FeedbackLabels } from '../store/modules/feedback-labels' -import { ConfigModule } from '@/store/modules/config' - - -@Component -export default class LabelStatistics extends Vue{ - labelStatistics: LabelStatisticsForSubType[] = [] - submissionTypes: SubmissionType[] = [] - timer = 0 - - headers = [ - { - text: 'Label', - align: 'left', - value: 'name' - }, - { - text: 'Count', - align: 'center', - value: 'count' - } - ] - - get loading(): boolean { - return this.labelStatistics.length === 0 - } - - /** - * Returns total count for all existing labels for the currently selected exam - */ - get summedLabelCounts () { - // list of subtype IDs filtered by the selected exam - const subTypeIDs = this.submissionTypes.filter(subType => { - return subType.examType.pk === ConfigModule.state.config.examId - }).map(subType => { - return subType.pk - }) - // filter the statistics - const filteredStatistics = this.labelStatistics.filter(subType => { - return subTypeIDs.includes(subType.pk) - }) - const summedLabelCounts = filteredStatistics - .reduce((acc: {[labelPk: string]: number}, curr) => { - Object.entries(curr) - .filter(([key, val]) => key !== 'pk') - .forEach(([labelPk, count]: [string, number]) => { - if (!acc[labelPk]) { - acc[labelPk] = 0 - } - acc[labelPk] += count - }) - return acc - }, {}) - // TODO map label pks to names - const mappedLabelCounts = this.mapLabelList(Object - .entries(summedLabelCounts)) - return mappedLabelCounts - } - - /** - * - * Returns Label Names and number of occurances for each Submission Type of the currently selected Exam. - */ - get mappedLabelCounts () { - var allowedTypes: string[] = [] // needed to filter if submissionType belongs to current selected Exam - const counts = this.labelStatistics.map(labelStatistics => { - const labelValues = Object - .entries(labelStatistics) - .filter(([key, val]) => key !== 'pk') - const subType = getters.submissionType(labelStatistics.pk) - - // determine which submissionTypes belong to current selected exam - if (subType.examType.moduleReference === ConfigModule.state.config.currentExam) { - allowedTypes.push(subType.name) - } - - const subTypeName = subType.name - return [subTypeName, this.mapLabelList(labelValues)] - // it seems the typechecker has a bug here... - }).sort((a: any, b: any) => a[0].localeCompare(b[0])) - return counts.filter(tmp => { // filter submissionTypes by current selected Exam - return allowedTypes.includes(tmp[0].toString()) - }) - } - - mapLabelList (labelList: [string, number][]) { - return labelList.map(entry => { - const label = FeedbackLabels.state.labels.find(label => { - return String(label.pk) === entry[0] - }) - const labelName = label ? label.name : 'Unknown label' - return {name: labelName, count: entry[1]} - }) - } - - async loadLabelStatistics () { - this.labelStatistics = await api.fetchLabelStatistics() - } - - async loadSubmissionTypes () { - this.submissionTypes = await api.fetchSubmissionTypes() - } - - created () { - this.timer = setInterval(() => { - this.loadLabelStatistics() - }, 10 * 1e3) - this.loadLabelStatistics() - this.loadSubmissionTypes() - } - - beforeDestroy () { - clearInterval(this.timer) - } - -} -</script> diff --git a/grady/frontend/src/components/MathRenderer.vue b/grady/frontend/src/components/MathRenderer.vue deleted file mode 100644 index 667a5987..00000000 --- a/grady/frontend/src/components/MathRenderer.vue +++ /dev/null @@ -1,51 +0,0 @@ -<template> - <div - ref="wrapper" - :key="key" - > - <slot /> - </div> -</template> - -<script lang="ts"> -import { Vue, Component, Prop, Watch } from 'vue-property-decorator' - -@Component -export default class MathRenderer extends Vue { - @Prop({ type: Boolean, default: true }) enabled!: boolean - - key: Boolean = false - - forceRefresh() { - this.key = !this.key - } - - renderMath() { - window.MathJax.typeset([this.$refs.wrapper]) - } - - resetMath() { - window.MathJax.typesetClear([this.$refs.wrapper]) - // typesetClear only clears the cache but leaves the DOM untouched, so we - // need to force it to rerender. - this.forceRefresh() - } - - mounted() { - if (this.enabled) - this.renderMath() - } - - beforeDestroy() { - this.resetMath() - } - - @Watch('enabled') - onEnabledChanged(changedToEnabled: boolean) { - if (changedToEnabled) - this.renderMath() - else - this.resetMath() - } -} -</script> diff --git a/grady/frontend/src/components/PasswordChangeDialog.vue b/grady/frontend/src/components/PasswordChangeDialog.vue deleted file mode 100644 index 547fc8a2..00000000 --- a/grady/frontend/src/components/PasswordChangeDialog.vue +++ /dev/null @@ -1,147 +0,0 @@ -<template> - <v-dialog - v-model="show" - max-width="400" - > - <v-card> - <v-form - ref="form" - v-model="formIsValid" - lazy-validation - @submit.prevent="submitChange" - > - <v-card-title class="title"> - Change your password - </v-card-title> - <v-card-text> - <v-text-field - v-model="currentPassword" - label="Current password" - type="password" - autofocus - required - :error-messages="oldPasswordRejected ? 'Wrong password.' : undefined" - :rules="[ rules.required ]" - @input="oldPasswordRejected = false" - /> - <v-text-field - v-model="newPassword" - label="New password" - type="password" - required - :error-messages="newPasswordErrors" - :rules="[ rules.required ]" - @input="newPasswordErrors = null" - /> - <v-text-field - v-model="newPasswordRepeated" - label="Repeat new password" - type="password" - required - :rules="[ rules.required, rules.matchesPassword ]" - /> - <v-alert - type="error" - :value="errorAlert !== null" - > - {{ errorAlert }} - </v-alert> - </v-card-text> - <v-card-actions class="justify-end"> - <v-btn - text - color="primary" - @click="$emit('hide')" - > - Cancel - </v-btn> - <v-btn - :disabled="!formIsValid" - text - color="primary" - type="submit" - > - Change password - </v-btn> - </v-card-actions> - </v-form> - </v-card> - </v-dialog> -</template> - -<script> -import { mapState } from 'vuex' -import { changePassword } from '@/api' -import { Authentication } from '@/store/modules/authentication' -import { required } from '@/util/form-rules' - -export default { - name: 'PasswordChangeDialog', - data () { - return { - show: true, - currentPassword: '', - newPassword: '', - newPasswordRepeated: '', - formIsValid: false, - rules: { - required, - matchesPassword: v => v === this.newPassword || 'Passwords do not match.', - }, - errorAlert: null, - oldPasswordRejected: false, - newPasswordErrors: null - } - }, - computed: { - userPk () { return Authentication.state.user.pk } - }, - watch: { - show (val) { - if (!val) { - this.$emit('hide') - } - }, - newPassword () { - if (this.newPasswordRepeated !== '') - this.$refs.form.validate() - } - }, - methods: { - submitChange () { - if (!this.$refs.form.validate()) - return - - const data = { - oldPassword: this.currentPassword, - newPassword: this.newPassword - } - changePassword(this.userPk, data).then(() => { - this.$notify({ - title: 'Success!', - text: 'Successfully changed password!', - type: 'success' - }) - this.$emit('hide') - }).catch(error => { - if (error.response && error.response.status === 401) { - this.oldPasswordRejected = true - this.$refs.form.validate() - return - } - - if (error.response && error.response.data && error.response.data.newPassword) { - this.newPasswordErrors = error.response.data.newPassword - return - } - - this.errorAlert = error.toString() - }) - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/RegisterDialog.vue b/grady/frontend/src/components/RegisterDialog.vue deleted file mode 100644 index 75f212dc..00000000 --- a/grady/frontend/src/components/RegisterDialog.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <v-card v-if="!acceptedGDPR"> - <v-card-title class="title"> - Datenschutzerklärung - </v-card-title> - <v-divider /> - <v-card-text class="content"> - <GDPRNotice id="gdpr-notice" /> - </v-card-text> - <v-divider /> - <v-card-actions class="justify-end"> - <v-btn - id="accept-gdpr-notice" - color="primary" - text - @click="acceptedGDPR = true" - > - Einwilligen - </v-btn> - </v-card-actions> - </v-card> - <v-card v-else> - <v-form - ref="registrationForm" - v-model="registrationFormIsValid" - lazy-validation - @submit.prevent="register" - > - <v-card-title class="title"> - Register - </v-card-title> - <v-card-text> - <v-text-field - id="input-register-username" - v-model="credentials.username" - label="Username" - required - :error-messages="usernameErrors" - :rules="[ required ]" - autofocus - @input="usernameErrors = null" - /> - <v-text-field - id="input-register-instance-password" - v-model="credentials.registrationPassword" - label="Instance-Password" - required - :rules="[ required ]" - type="password" - /> - <v-text-field - id="input-register-password" - v-model="credentials.password" - label="Password" - required - :rules="[ required ]" - type="password" - :error-messages="passwordErrors" - @input="passwordErrors = null" - /> - <v-text-field - id="input-register-password-repeat" - v-model="credentials.passwordRepeat" - label="Repeat Password" - required - :rules="[ required, checkPasswordsMatch ]" - type="password" - /> - <v-alert - type="error" - :value="errorAlert !== null" - > - {{ errorAlert }} - </v-alert> - </v-card-text> - <v-card-actions class="justify-center"> - <v-btn - id="register-submit" - text - :loading="loading" - :disabled="!registrationFormIsValid" - type="submit" - > - submit - </v-btn> - </v-card-actions> - </v-form> - </v-card> -</template> - -<script> -import { registerTutor } from '@/api' -import GDPRNotice from '@/components/GDPRNotice' -import { required } from '@/util/form-rules' - -export default { - name: 'RegisterDialog', - components: { GDPRNotice }, - data () { - return { - credentials: { - username: '', - password: '', - passwordRepeat: '', - registrationPassword: '' - }, - loading: false, - acceptedGDPR: false, - registrationFormIsValid: false, - required, - checkPasswordsMatch: v => v === this.credentials.password || 'Passwords do not match.', - errorAlert: null, - usernameErrors: null, - passwordErrors: null, - } - }, - watch: { - credentials: { - handler() { - if (this.credentials.passwordRepeat !== '') - this.$refs.registrationForm.validate() - }, - deep: true - } - }, - methods: { - register () { - if (!this.$refs.registrationForm.validate()) - return - - this.loading = true - registerTutor(this.credentials).then(() => { - this.$emit('registered', this.credentials) - }).catch(error => { - this.usernameErrors = error.response && error.response.data && error.response.data.username - this.passwordErrors = error.response && error.response.data && error.response.data.password - if (!this.usernameErrors && !this.passwordErrors) - this.errorAlert = `Couldn't register a tutor account: ${error}` - }).finally(() => { this.loading = false }) - } - }, -} -</script> - -<style scoped> - .content { - height: 50vh; - } -</style> diff --git a/grady/frontend/src/components/SubmissionTests.vue b/grady/frontend/src/components/SubmissionTests.vue deleted file mode 100644 index 4ad1287a..00000000 --- a/grady/frontend/src/components/SubmissionTests.vue +++ /dev/null @@ -1,72 +0,0 @@ -<template> - <v-card id="submission-tests"> - <v-card-title - v-if="tests.length > 0" - class="title py-0" - > - Tests - <v-spacer /> - <v-btn - icon - @click="expanded = !expanded" - > - <v-icon v-if="expanded"> - keyboard_arrow_up - </v-icon> - <v-icon v-else> - keyboard_arrow_down - </v-icon> - </v-btn> - </v-card-title> - <v-card-title v-else> - No Tests available - </v-card-title> - <v-card-text v-if="expanded"> - <v-col - v-for="item in tests" - :key="item.pk" - sm="12" - > - <div name="test-name-label"> - <v-row - - class="pr-4" - > - <h3>{{ item.name }}</h3> - <v-spacer /> - <h3>{{ item.label }}</h3> - </v-row> - </div> - <span class="test-output">{{ item.annotation }}</span> - </v-col> - </v-card-text> - </v-card> -</template> - -<script> -export default { - name: 'SubmissionTests', - props: { - tests: { - type: Array, - default: () => [] - }, - expand: { - type: Boolean, - default: true - } - }, - data () { - return { - expanded: this.expand, - panels: this.tests.map(_ => true) - } - } -} -</script> - -<style scoped> - .test-output { - white-space: pre-wrap; - } -</style> diff --git a/grady/frontend/src/components/TwoPaneLayout.vue b/grady/frontend/src/components/TwoPaneLayout.vue deleted file mode 100644 index 90dc2c6c..00000000 --- a/grady/frontend/src/components/TwoPaneLayout.vue +++ /dev/null @@ -1,52 +0,0 @@ -<template> - <v-row - class="pane-wrapper" - no-gutters - > - <v-col - ref="leftPane" - class="pane" - > - <slot name="left" /> - </v-col> - <v-divider - v-if="showRightPane" - vertical - /> - <v-col - v-if="showRightPane" - ref="rightPane" - class="pane" - > - <slot name="right" /> - </v-col> - </v-row> -</template> - -<script lang="ts"> -import { Vue, Component, Prop } from 'vue-property-decorator' - -@Component -export default class TwoPaneLayout extends Vue { - @Prop({ type: Boolean, default: true }) showRightPane!: boolean - - leftPane(): HTMLElement { - return this.$refs.leftPane as HTMLElement - } - - rightPane(): HTMLElement { - return this.$refs.rightPane as HTMLElement - } -} -</script> - -<style scoped> - .pane-wrapper { - height: 100%; - } - - .pane { - height: 100%; - overflow: auto; - } -</style> diff --git a/grady/frontend/src/components/UserOptions.vue b/grady/frontend/src/components/UserOptions.vue deleted file mode 100644 index 5fffef87..00000000 --- a/grady/frontend/src/components/UserOptions.vue +++ /dev/null @@ -1,87 +0,0 @@ -<template> - <v-toolbar-items> - <v-menu - bottom - offset-y - left - > - <template #activator="{ on }"> - <v-btn - id="user-options" - text - v-on="on" - > - <v-icon left> - account_circle - </v-icon> - {{ username }} ({{ userRole }})<v-icon>arrow_drop_down</v-icon> - </v-btn> - </template> - <v-list> - <v-list-item - v-if="!isStudent" - @click="showPasswordChangeDialog" - > - Change password - </v-list-item> - <v-list-item @click.capture.stop="$vuetify.theme.dark = !$vuetify.theme.dark"> - <v-list-item-content> - <v-list-item-title> - Dark mode (experimental) - </v-list-item-title> - </v-list-item-content> - <v-list-item-action> - <v-switch v-model="$vuetify.theme.dark" /> - </v-list-item-action> - </v-list-item> - <v-divider class="my-2" /> - <v-list-item @click="logout"> - <v-icon left> - exit_to_app - </v-icon> - Logout - </v-list-item> - </v-list> - </v-menu> - <component - :is="displayComponent" - v-if="displayComponent" - @hide="hideComponent" - /> - </v-toolbar-items> -</template> - -<script> -import PasswordChangeDialog from '@/components/PasswordChangeDialog' -import { Authentication } from '@/store/modules/authentication' -import { actions } from '@/store/actions' -export default { - name: 'UserOptions', - components: { PasswordChangeDialog }, - data () { - return { - displayComponent: null, - } - }, - computed: { - isStudent() { return Authentication.isStudent }, - username() { return Authentication.state.user.username }, - userRole() { return Authentication.state.user.role }, - }, - methods: { - hideComponent () { - this.displayComponent = null - }, - logout () { - actions.logout() - }, - showPasswordChangeDialog () { - this.displayComponent = PasswordChangeDialog - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/export/DataExport.vue b/grady/frontend/src/components/export/DataExport.vue deleted file mode 100644 index 3cce92c4..00000000 --- a/grady/frontend/src/components/export/DataExport.vue +++ /dev/null @@ -1,116 +0,0 @@ -<template> - <v-dialog - v-model="exportDialog" - max-width="31vw" - @update:return-value="hide" - > - <v-card id="data-export-modal"> - <v-card-title class="title"> - Student Data Export - </v-card-title> - <v-card-text> - <div v-if="!mapFileLoaded"> - If you select a mapping file, the anonymized data - will be mapped back automatically and locally on your machine. - <v-row - - align="center" - > - <v-file-input - v-model="mapFile" - label="Map file" - accept="application/JSON" - /> - <span>Without the mapping, the data will still be obfuscated.</span> - </v-row> - </div> - <span> - <b>NOTE:</b> Mapping / setting passwords can take some time depending on course size. - </span> - <v-row> - <v-col cols="4"> - <v-tooltip top> - <template #activator="{ on }"> - <div v-on="on"> - <v-checkbox - v-model="setPasswords" - label="Set passwords" - /> - </div> - </template> - <span>Setting this will cause all student passwords - to be reset upon export. The new passwords will be contained in the - export file. - </span> - </v-tooltip> - </v-col> - <v-col - id="type-select" - cols="3" - offset="1" - > - <span>Export as <b>json</b> - </span> - </v-col> - </v-row> - <v-card-actions> - <v-btn - text - color="blue lighten-2" - @click="exportDialog = false" - > - close - </v-btn> - <v-spacer /> - <v-progress-circular - v-if="loading" - indeterminate - /> - <v-btn - v-else - id="export-data-download-btn" - text - outlined - @click="getExportFile('data')" - > - {{ mapFile || mapFileLoaded ? 'Download and apply mapping' : 'Download without mapping' }} - </v-btn> - </v-card-actions> - </v-card-text> - </v-card> - </v-dialog> -</template> - -<script lang="ts"> -import Component, { mixins } from 'vue-class-component' -import { getters } from '@/store/getters' -import ax, { StudentExportItem, fetchStudentExportData } from '@/api' -import { mutations as mut } from '@/store/mutations' -import { ExportType, exportMixin } from '@/components/mixins/exportMixin' - -@Component -export default class DataExport extends mixins(exportMixin) { - - get studentMap () { return getters.state.studentMap } - - applyMapping (studentExport: StudentExportItem[]) { - studentExport.forEach(student => { - if (this.studentMap[student.Matrikel]) { - student.Email = this.studentMap[student.Matrikel].email - student.Name = this.studentMap[student.Matrikel].name - student.Matrikel = this.studentMap[student.Matrikel].matrikelNo - } else { - this.$notify({ - title: `Unknown student: ${student.Name}`, - text: `Student ${student.Name} is missing in mapping file`, - type: 'error', - duration: -1 - }) - } - }) - } -} -</script> - -<style scoped> -</style> diff --git a/grady/frontend/src/components/export/ExportDialog.vue b/grady/frontend/src/components/export/ExportDialog.vue deleted file mode 100644 index 04708cf4..00000000 --- a/grady/frontend/src/components/export/ExportDialog.vue +++ /dev/null @@ -1,95 +0,0 @@ -<template> - <div id="container"> - <v-menu offset-y> - <template #activator="{ on: menu }"> - <v-tooltip left> - <template #activator="{ on: tooltip }"> - <v-btn - id="export-btn" - slot="activator" - :icon="!corrected" - :text="!corrected" - :color="corrected ? 'success' : undefined" - v-on="{ ...tooltip, ...menu }" - > - <v-icon :left="corrected"> - file_download - </v-icon> - <span v-if="corrected"> - Export - </span> - </v-btn> - </template> - Export - <span - v-if="corrected" - id="corrected-tooltip" - >(All submissions have been corrected!)</span> - <span - v-else - id="uncorrected-tooltip" - >(UNCORRECTED submissions left! Export will be incomplete.)</span> - </v-tooltip> - </template> - <v-list> - <v-list-item - v-for="(item, i) in menuItems" - :id="'export-list' + i" - :key="i" - @click="item.action" - > - {{ item.display }} - </v-list-item> - </v-list> - </v-menu> - <component - :is="displayComponent" - v-if="displayComponent" - @hide="displayComponent = null" - /> - </div> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import DataExport from '@/components/export/DataExport.vue' -import InstanceExport from '@/components/export/InstanceExport.vue' -import { getters } from '@/store/getters' - -@Component({ - components: { DataExport, InstanceExport } -}) -export default class ExportDialog extends Vue { - displayComponent: any = null - - menuItems = [ - { - display: 'Export student scores', - action: () => { - this.setDisplayComponent(DataExport) - } - }, - { - display: 'Export whole instance data', - action: () => { this.setDisplayComponent(InstanceExport) } - } - ]; - - get corrected () { - return getters.corrected - } - - // apparently `this` is not the same when used within a - // closure when defining data and within a method - setDisplayComponent (component: any) { - this.displayComponent = component - } -} -</script> - -<style scoped> - #container { - display: inline; - } -</style> diff --git a/grady/frontend/src/components/export/InstanceExport.vue b/grady/frontend/src/components/export/InstanceExport.vue deleted file mode 100644 index 8d81c9f7..00000000 --- a/grady/frontend/src/components/export/InstanceExport.vue +++ /dev/null @@ -1,94 +0,0 @@ -<template> - <v-dialog - v-model="exportDialog" - max-width="31vw" - @update:return-value="hide" - > - <v-card id="instance-export-modal"> - <v-card-title class="title"> - Instance Data Export - </v-card-title> - <v-card-text> - <div v-if="!mapFileLoaded"> - If you select a mapping file, the anonymized data - will be mapped back automatically and locally on your machine. - <v-row - - align="center" - > - <v-file-input - v-model="mapFile" - label="Map file" - accept="application/JSON" - /> - <span>Without the mapping, the data will still be obfuscated.</span> - </v-row> - </div> - <span> - <b>NOTE:</b> Mapping can take some time depending on course size. - </span> - <v-card-actions> - <v-btn - text - color="blue lighten-2" - @click="exportDialog = false" - > - close - </v-btn> - <v-spacer /> - <v-progress-circular - v-if="loading" - indeterminate - /> - <v-btn - v-else - id="instance-export-dl" - text - outlined - @click="getExportFile('instance')" - > - {{ mapFile || mapFileLoaded ? 'Download and apply mapping' : 'Download without mapping' }} - </v-btn> - </v-card-actions> - </v-card-text> - </v-card> - </v-dialog> -</template> - -<script lang="ts"> -import Component, { mixins } from 'vue-class-component' -import { getters } from '@/store/getters' -import ax, { StudentExportItem, fetchStudentExportData, fetchInstanceExportData, InstanceExportData } from '@/api' -import { mutations as mut } from '@/store/mutations' -import { ExportType, exportMixin } from '@/components/mixins/exportMixin' - -@Component -export default class DataExport extends mixins(exportMixin) { - exportDialog = true - mapFile: File | null = null - exportType = ExportType.JSON // instance export is only available as JSON - loading = false - - get studentMap () { return getters.state.studentMap } - - applyMapping (instanceExport: InstanceExportData) { - instanceExport.students.forEach(student => { - if (this.studentMap[student.matrikelNo]) { - const anonMatrikelNo = student.matrikelNo - student.name = this.studentMap[anonMatrikelNo].name - student.matrikelNo = this.studentMap[anonMatrikelNo].matrikelNo - } else { - this.$notify({ - title: `Unknown student: ${student.name}`, - text: `Student ${student.name} is missing in mapping file`, - type: 'error', - duration: -1 - }) - } - }) - } -} -</script> - -<style scoped> -</style> diff --git a/grady/frontend/src/components/feedback_labels/FeedbackLabel.vue b/grady/frontend/src/components/feedback_labels/FeedbackLabel.vue deleted file mode 100644 index bf95efa2..00000000 --- a/grady/frontend/src/components/feedback_labels/FeedbackLabel.vue +++ /dev/null @@ -1,38 +0,0 @@ -<template> - <v-tooltip top> - <template #activator="{ on }"> - <v-chip - :close="removable" - :color="colour" - v-on="on" - @click:close="onClose" - > - {{ name }} - </v-chip> - </template> - <span> {{ description }} </span> - </v-tooltip> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop } from 'vue-property-decorator' - -@Component -export default class FeedbackLabel extends Vue { - @Prop({ type: Number, required :true }) readonly pk!: number - @Prop({ type: String, required: true }) readonly name!: string - @Prop({ type: String, required: true }) readonly description!: string - @Prop({ type: String, required: true }) readonly colour!: string - @Prop({ type: Boolean, default: false }) readonly removable!: boolean - - onClose() { - this.$emit('remove-clicked', this.pk) - } -} -</script> - -<style> - -</style> diff --git a/grady/frontend/src/components/feedback_labels/FeedbackLabelForm.vue b/grady/frontend/src/components/feedback_labels/FeedbackLabelForm.vue deleted file mode 100644 index ec67b057..00000000 --- a/grady/frontend/src/components/feedback_labels/FeedbackLabelForm.vue +++ /dev/null @@ -1,175 +0,0 @@ -<template> - <div> - <v-text-field - id="label-name" - v-model="mutableName" - label="Name" - /> - <v-textarea - id="label-description" - v-model="mutableDescription" - label="Description" - placeholder="The description can be seen when hovering above the label" - auto-grow - /> - <v-color-picker - v-model="mutableColour" - show-swatches - hide-canvas - hide-inputs - hide-sliders - hide-mode-switch - :swatches="swatches" - /> - <v-btn - v-if="!is_update" - id="create-label-btn" - :loading="loading" - color="teal" - @click="createLabel" - > - Create - </v-btn> - <v-btn - v-else - id="update-label-btn" - color="teal" - :loading="loading" - @click="updateLabel" - > - Update - </v-btn> - </div> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop, Watch } from 'vue-property-decorator' -import * as api from '@/api' -import { FeedbackLabels } from '@/store/modules/feedback-labels' - -@Component -export default class FeedbackLabelForm extends Vue { - @Prop({ type: String, default: '' }) readonly name!: string - @Prop({ type: String, default: '' }) readonly description!: string - @Prop({ type: String, default: '#4D4D4D' }) readonly colour!: string - @Prop({ type: Number, required: false }) readonly pk!: number - @Prop({ type: Boolean, default: false }) readonly is_update!: boolean - - swatches = [['#4b4b4b', '#323232', '#000000'], - ['#969696', '#7d7d7d', '#646464'], - ['#fafafa', '#c8c8c8', '#afafaf'], - ['#ef4c3a', '#cf3015', '#9c0500'], - ['#f98f00', '#de7100', '#c04f00'], - ['#f7d800', '#f7c000', '#f69b00'], - ['#d7db00', '#adb800', '#7d8600'], - ['#a1d900', '#66b800', '#194d32'], - ['#66c8c6', '#16a2a2', '#0c777b'], - ['#71d4fa', '#0099dc', '#0060ae'], - ['#ab9efa', '#7962fa', '#633191'], - ['#f89efa', '#f527fa', '#a8149b']] - - mutableColour = this.colour - mutableName = this.name - mutableDescription = this.description - - loading = false - - @Watch('pk') - onPkChange() { this.resetFields() } - - resetFields () { - this.mutableName = this.name - this.mutableDescription = this.description - this.mutableColour = this.colour - } - - get label () { - return { - name: this.mutableName, - description: this.mutableDescription, - // @ts-ignore - colour: this.mutableColour.hex || this.mutableColour // hex may be undefined when colour comes from the updater - } - } - - get feedbackLabels () { - return FeedbackLabels.availableLabels - } - - async createLabel () { - this.loading = true - - const duplicate = this.feedbackLabels.find((val) => { - return val.name === this.label.name - }) - - if (duplicate) { - this.$notify({ - title: 'Label creation error', - text: 'A label with the same name already exists. ' + - 'You can, however, update the label', - type: 'error', - duration: -1 - }) - this.resetFields() - this.loading = false - return - } - - let res - try { - res = await api.createLabel(this.label) - this.notifySuccess() - } catch (ex) { - // user will be notified by the interceptor - this.resetFields() - this.loading = false - return - } - - FeedbackLabels.ADD_LABEL(res) - this.resetFields() - this.loading = false - } - - async updateLabel () { - this.loading = true - const label = { - ...this.label, - pk: this.pk, - } - - let res - try { - res = await api.updateLabel(label) - this.notifySuccess(true) - } catch (ex) { - // user will be notified by the interceptor - this.loading = false - return - } - - FeedbackLabels.UPDATE_LABEL(label) - this.$emit('label-updated', label.pk) - this.loading = false - } - - notifySuccess (updated = false) { - const msg = updated ? 'updated' : 'created' - - this.$notify({ - group: 'msg', - title: 'Success', - text: 'The label was <b>' + msg + '</b> successfully.', - type: 'success', - duration: 5 * 1e3, - }) - } -} -</script> - -<style> - -</style> diff --git a/grady/frontend/src/components/feedback_labels/FeedbackLabelList.vue b/grady/frontend/src/components/feedback_labels/FeedbackLabelList.vue deleted file mode 100644 index aad407c2..00000000 --- a/grady/frontend/src/components/feedback_labels/FeedbackLabelList.vue +++ /dev/null @@ -1,36 +0,0 @@ -<template> - <div> - <div - v-for="label in labels" - :key="label.pk" - class="label" - > - <feedback-label - v-bind="label" - class="label" - /> - </div> - </div> -</template> - -<script lang="ts"> - -import FeedbackLabel from './FeedbackLabel.vue' -import { FeedbackLabels } from '@/store/modules/feedback-labels' - -export default { - components: { - FeedbackLabel - }, - computed: { - labels: () => { return FeedbackLabels.availableLabels }, - } -} -</script> - -<style scoped> -div.label { - display: inline-block; - margin: 0 8px 8px 0; -} -</style> diff --git a/grady/frontend/src/components/feedback_labels/FeedbackLabelTab.vue b/grady/frontend/src/components/feedback_labels/FeedbackLabelTab.vue deleted file mode 100644 index 93da0293..00000000 --- a/grady/frontend/src/components/feedback_labels/FeedbackLabelTab.vue +++ /dev/null @@ -1,115 +0,0 @@ -<template> - <v-card> - <v-toolbar - color="teal" - :dense="sidebar" - > - <v-app-bar-nav-icon> - <v-icon>label</v-icon> - </v-app-bar-nav-icon> - <v-toolbar-title - v-if="showDetail" - style="min-width: fit-content;" - > - Labels - </v-toolbar-title> - <v-spacer /> - <v-btn - icon - @click="refreshLabels" - > - <v-icon v-if="!updating"> - refresh - </v-icon> - <v-progress-circular - v-else - indeterminate - color="black" - size="20" - /> - </v-btn> - </v-toolbar> - <v-tabs - v-if="showDetail" - grow - color="black" - background-color="teal lighten-1" - > - <v-tab id="list-labels-section"> - List - </v-tab> - <v-tab id="create-label-section"> - Create - </v-tab> - <v-tab id="update-label-section"> - Update - </v-tab> - <v-tab-item> - <v-container> - <feedback-label-list /> - </v-container> - </v-tab-item> - <v-tab-item> - <v-container> - <feedback-label-form /> - </v-container> - </v-tab-item> - <v-tab-item> - <v-container> - <feedback-label-updater /> - </v-container> - </v-tab-item> - </v-tabs> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop } from 'vue-property-decorator' -import { getLabels } from '@/api' -import { FeedbackLabels } from '@/store/modules/feedback-labels' -import { UI } from '@/store/modules/ui' -import FeedbackLabelList from './FeedbackLabelList.vue' -import FeedbackLabelForm from './FeedbackLabelForm.vue' -import FeedbackLabelUpdater from './FeedbackLabelUpdater.vue' - -@Component({ - components: { - FeedbackLabelList, - FeedbackLabelForm, - FeedbackLabelUpdater, - } -}) -export default class FeedbackLabelsList extends Vue { - @Prop({type: Boolean, default: false}) sidebar!: boolean - - updating = false - timerId = -1 - - get showDetail () { - return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed) - } - - // fetch labels once, then every 10 seconds - created () { - this.refreshLabels() - this.timerId = setInterval(this.refreshLabels, 10 * 1e3) - } - - destroyed () { - clearInterval(this.timerId) - } - - refreshLabels() { - this.updating = true - FeedbackLabels.getLabels().finally(() => { - this.updating = false - }) - } -} -</script> - -<style> - -</style> diff --git a/grady/frontend/src/components/feedback_labels/FeedbackLabelUpdater.vue b/grady/frontend/src/components/feedback_labels/FeedbackLabelUpdater.vue deleted file mode 100644 index b26e45af..00000000 --- a/grady/frontend/src/components/feedback_labels/FeedbackLabelUpdater.vue +++ /dev/null @@ -1,70 +0,0 @@ -<template> - <div> - <v-autocomplete - id="label-update-autocomplete" - :items="feedbackLabels" - item-text="name" - item-value="pk" - append-icon="search" - placeholder="search for keywords" - @input="setLabel" - > - <template #item="{ item }"> - <div class="label-updater-item"> - <feedback-label-component v-bind="item" /> - </div> - </template> - </v-autocomplete> - <feedback-label-form - v-if="label.pk !== -1" - is_update - v-bind="currentLabel" - @label-updated="setLabel" - /> - </div> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { FeedbackLabels } from '@/store/modules/feedback-labels' -import FeedbackLabelForm from './FeedbackLabelForm.vue' -import { FeedbackLabel } from '../../models' -import FeedbackLabelComponent from '@/components/feedback_labels/FeedbackLabel.vue' - -@Component({ - components: { - FeedbackLabelForm, - FeedbackLabelComponent, - } -}) -export default class FeedbackLabelUpdater extends Vue { - label: FeedbackLabel = { - pk: -1, - name: '', - description: '', - colour: '#4d4d4d', - } - loading = false - - get currentLabel () { return this.label } - - get feedbackLabels() { - return FeedbackLabels.availableLabels - } - - setLabel (pk: number) { - const label = this.feedbackLabels.find((val: FeedbackLabel) => { - return val.pk === pk - }) - - if (label !== undefined) { - this.label = label - } - } -} -</script> - -<style> - -</style> diff --git a/grady/frontend/src/components/feedback_labels/LabelSelector.vue b/grady/frontend/src/components/feedback_labels/LabelSelector.vue deleted file mode 100644 index ee88c72a..00000000 --- a/grady/frontend/src/components/feedback_labels/LabelSelector.vue +++ /dev/null @@ -1,229 +0,0 @@ -<template> - <v-card> - <v-card-title>Assign labels</v-card-title> - <v-divider /> - <v-card-text> - <v-autocomplete - id="label-add-autocomplete" - :items="feedbackLabels" - item-text="name" - item-value="pk" - append-icon="search" - placeholder="search for keywords" - @keyup.enter.ctrl.exact="submitFeedback" - @input="addLabel" - > - <template #item="{ item }"> - <div class="label-adder-item"> - <feedback-label v-bind="item" /> - </div> - </template> - </v-autocomplete> - <v-row> - <v-col md="4"> - <div> - CURRENT LABELS - </div> - <feedback-label - v-for="label in unchangedMapped" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="removeLabel" - /> - </v-col> - <v-col md="4"> - <div> - WILL BE REMOVED - </div> - <feedback-label - v-for="label in removedMapped" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="addLabel" - /> - </v-col> - <v-col md="4"> - <div> - WILL BE ADDED - </div> - <feedback-label - v-for="label in addedMapped" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="removeLabel" - /> - </v-col> - </v-row> - </v-card-text> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop } from 'vue-property-decorator' -import { FeedbackLabels } from '@/store/modules/feedback-labels' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import FeedbackLabel from '@/components/feedback_labels/FeedbackLabel.vue' -import { FeedbackComment, SubmissionType } from '../../models' - -@Component({ - components: { - FeedbackLabel, - } -}) -export default class LabelSelector extends Vue { - @Prop({ type: String }) readonly lineNo!: string - @Prop({ type: Boolean, required: true }) readonly assignedToFeedback!: boolean - @Prop({ type: Array }) readonly labelsUnchanged!: number[] - @Prop({ type: Array }) readonly labelsAdded!: number[] - @Prop({ type: Array }) readonly labelsRemoved!: number[] - - get feedbackLabels () { - return FeedbackLabels.availableLabels - } - - get unchangedMapped() { - if (this.assignedToFeedback) { - return this.mapPksToLabelObj(this.unchangedFeedbackLabels()) - } else { - return this.mapPksToLabelObj(this.labelsUnchanged) - } - } - - get removedMapped() { - if (this.assignedToFeedback) { - return this.mapPksToLabelObj(this.removedFeedbackLabels()) - } else { - return this.mapPksToLabelObj(this.labelsRemoved) - } - } - - get addedMapped() { - if (this.assignedToFeedback) { - return this.mapPksToLabelObj(this.addedFeedbackLabels()) - } else { - return this.mapPksToLabelObj(this.labelsAdded) - } - } - - /** - * Returns an array of label pk's that have not changed from origFeedback to updatedFeedback - */ - unchangedFeedbackLabels() { - const labelsOrig = SubmissionNotes.state.origFeedback.labels - if (labelsOrig === undefined) return new Array() - - const labelsDeleted = this.removedFeedbackLabels() - const labelsAdded = this.addedFeedbackLabels() - - return labelsOrig.filter((label) => { - return !labelsAdded.includes(label) && !labelsDeleted.includes(label) - }) - } - - /** - * Returns an array of label pk's that have been removed in updatedFeedback - * but exist in origFeedback - */ - removedFeedbackLabels() { - if (!SubmissionNotes.state.changedLabels) return new Array() - - const labelsOrig = SubmissionNotes.state.origFeedback.labels - const labelsUpdated = SubmissionNotes.state.updatedFeedback.labels - - if (labelsOrig === undefined) return new Array() - - return labelsOrig.filter((label) => { - return !labelsUpdated.includes(label) - }) - } - - /** - * Returns an array of label pk's that have been added in updatedFeedback - * but do not exist in origFeedback - */ - addedFeedbackLabels() { - const labelsOrig = SubmissionNotes.state.origFeedback.labels - const labelsUpdated = SubmissionNotes.state.updatedFeedback.labels - - if (labelsOrig === undefined) return new Array() - - return labelsUpdated.filter((label) => { - return !labelsOrig.includes(label) - }) - } - - /** - * Maps label pk's to the objects stored in vuex store - */ - mapPksToLabelObj(pkArr: number[]): FeedbackLabel[] { - const mappedLabels = pkArr.map((val) => { - const label = FeedbackLabels.availableLabels.find((label) => { - return label.pk === val - }) - - if (!label) return - return { - pk: val, - name: label.name, - description: label.description, - colour: label.colour - } - }) - - return mappedLabels ? mappedLabels : new Array() - } - - /** - * Removes given label from the feedback or fires an event - * to remove the label from a comment - */ - removeLabel(pk: number) { - if (this.assignedToFeedback) { - if (!SubmissionNotes.state.changedLabels) { - SubmissionNotes.SET_FEEDBACK_LABELS([...SubmissionNotes.state.origFeedback.labels]) - } - - SubmissionNotes.REMOVE_FEEDBACK_LABEL(pk) - } else { - this.$emit('label-removed', pk) - } - } - - /** - * Adds the given label to the feedback or fires an event - * to add the label to a comment - * Calling this with an already added label will instead remove the label - */ - addLabel(pk: number) { - if (this.assignedToFeedback) { - if (!this.unchangedFeedbackLabels().includes(pk) && - !this.addedFeedbackLabels().includes(pk)) - { - if (!SubmissionNotes.state.changedLabels) { - SubmissionNotes.SET_FEEDBACK_LABELS([...SubmissionNotes.state.origFeedback.labels]) - } - - SubmissionNotes.ADD_FEEDBACK_LABEL(pk) - } - } else { - this.$emit('label-added', pk) - } - } - - /** - * Emits an event which tells the parent that - * the submit shortcut was pressed - */ - submitFeedback() { - this.$emit('submit-shortcut') - } -} -</script> - -<style> -</style> diff --git a/grady/frontend/src/components/feedback_list/FeedbackListHelpCard.vue b/grady/frontend/src/components/feedback_list/FeedbackListHelpCard.vue deleted file mode 100644 index 7487e5bc..00000000 --- a/grady/frontend/src/components/feedback_list/FeedbackListHelpCard.vue +++ /dev/null @@ -1,58 +0,0 @@ -<template> - <v-row justify="center"> - <v-card - v-if="isReviewer" - class="mt-5" - > - <v-card-title class="title"> - This is the history of all the feedback! - </v-card-title> - <v-card-text> - To the left you see all the submissions everyone corrected including the score, final status, etc. You can do the following:<br><br> - <ol style="padding-left: 30px;"> - <li>click on one of the rows to see the submission, including the feedback.</li> - <li>sort the table via clicking on the table headers</li> - <li> - search the type names and also the <b>content</b> of the feedback that was written<br> - (e.g. you're looking for a feedback where someone mentioned a segmentation fault, just type it into the search!) - </li> - <li>filter by assigned labels</li> - <li>filter by the tutors that worked on a submission</li> - </ol> - </v-card-text> - </v-card> - <v-card v-else> - <v-card-title class="title"> - This is the history of your feedback! - </v-card-title> - <v-card-text> - To the left you see all the submissions you've corrected including the score, final status, etc. You can do the following:<br><br> - <ol style="padding-left: 30px;"> - <li>click on one of the rows tp see the submission, including your feedback and potentially a second tutor's feedback.</li> - <li>sort the table via clicking on the table headers</li> - <li> - search the type names and also the <b>content</b> of the feedback that you wrote<br> - (e.g. you're looking for a feedback where you mentioned a segmentation fault, just type it into the search!) - </li> - </ol> - </v-card-text> - </v-card> - </v-row> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Authentication } from '../../store/modules/authentication' - -@Component -export default class FeedbackListHelpCard extends Vue { - get isReviewer () { - return Authentication.isReviewer - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/feedback_list/FeedbackSearchOptions.vue b/grady/frontend/src/components/feedback_list/FeedbackSearchOptions.vue deleted file mode 100644 index 8d518bc6..00000000 --- a/grady/frontend/src/components/feedback_list/FeedbackSearchOptions.vue +++ /dev/null @@ -1,192 +0,0 @@ -<template> - <v-container class="pt-0"> - <v-row> - <v-col class="py-0"> - <v-text-field - v-model="model.searchString" - append-icon="search" - label="Search" - single-line - hide-details - class="py-0 my-0" - @input="$emit('input', model)" - /> - </v-col> - </v-row> - <v-row> - <v-col class="pt-0"> - <v-checkbox - id="show-final-checkbox" - v-model="model.showFinal" - label="show final" - hide-details - @click="$emit('input', model)" - /> - </v-col> - <v-col class="pt-0"> - <v-checkbox - v-model="model.caseSensitive" - label="case sensitive" - hide-details - @click="$emit('input', model)" - /> - </v-col> - <v-col class="pt-0"> - <v-checkbox - v-model="model.useRegex" - hide-details - @click="$emit('input', model)" - > - <template #label> - use RegEx - <v-tooltip top> - <template #activator="{ on }"> - <a - href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes" - target="_blank" - v-on="on" - > - <v-icon>help</v-icon> - </a> - </template> - <span>Go to RegEx documentation</span> - </v-tooltip> - </template> - </v-checkbox> - </v-col> - </v-row> - <v-row> - <v-col> - <v-select - v-model="model.filterByLabels" - label="Label" - :items="labels" - return-object - item-text="name" - multiple - hint="Filter by label" - persistent-hint - clearable - @change="$emit('input', model)" - /> - </v-col> - <v-col> - <v-select - v-model="model.filterByExcludingLabels" - label="Exclude label" - :items="labels" - item-text="name" - return-object - multiple - hint="Filter by excluding labels" - persistent-hint - clearable - @change="$emit('input', model)" - /> - </v-col> - </v-row> - <v-row> - <v-col - v-if="isReviewer" - md="6" - > - <v-select - v-model="model.filterByTutors" - label="Tutors" - :items="tutors" - item-text="username" - return-object - multiple - hint="Filter by tutors" - persistent-hint - clearable - @change="$emit('input', model)" - /> - </v-col> - <v-col - v-if="model.filterByTutors.length > 0" - md="6" - > - <v-select - v-model="model.filterByStage" - label="Stage" - :items="feedbackStages" - placeholder="All" - hint="Filter after initial feedback or validated" - persistent-hint - clearable - @change="$emit('input', model)" - /> - </v-col> - </v-row> - </v-container> -</template> - -<script lang="ts"> -import Vue, { PropType } from 'vue' -import Component from 'vue-class-component' -import { Authentication } from '@/store/modules/authentication' -import { TutorOverview } from '@/store/modules/tutor-overview' -import { FeedbackLabels } from '@/store/modules/feedback-labels' -import { Tutor, FeedbackLabel, FeedbackStageEnum, Exam } from '@/models' - -export type FeedbackSearchOptionsModel = { - searchString: string, - showFinal: boolean, - caseSensitive: boolean, - useRegex: boolean, - filterByExams: Exam[], - filterByTutors: Tutor[], - filterByStage: FeedbackStageEnum | undefined, - filterByLabels: FeedbackLabel[], - filterByExcludingLabels: FeedbackLabel[], -} - -const FeedbackSearchOptionsProps = Vue.extend({ - props: { - model: { - type: Object as PropType<FeedbackSearchOptionsModel>, - default: () => { - return { - searchString: '', - showFinal: true, - caseSensitive: false, - useRegex: false, - filterByExams: [], - filterByTutors: [], - filterByStage: undefined, - filterByLabels: [], - filterByExcludingLabels: [], - } - } - } - } -}) - -@Component -export default class FeedbackSearchOptions extends FeedbackSearchOptionsProps { - feedbackStages = Object.entries(FeedbackStageEnum).map(([key, value]) => ({text: key, value})) - - get tutors() { return TutorOverview.state.tutors } - get isReviewer() { return Authentication.isReviewer } - - get labels() { - return FeedbackLabels.state.labels - } - - loadTutors() { - if (this.tutors.length === 0 && this.isReviewer) { - TutorOverview.getTutors() - } - } - - created () { - this.loadTutors() - } -} -</script> - -<style scoped> - -</style> - diff --git a/grady/frontend/src/components/feedback_list/FeedbackTable.vue b/grady/frontend/src/components/feedback_list/FeedbackTable.vue deleted file mode 100644 index 311d6273..00000000 --- a/grady/frontend/src/components/feedback_list/FeedbackTable.vue +++ /dev/null @@ -1,203 +0,0 @@ -<template> - <v-card> - <v-card-title class="title"> - <span v-if="isTutor">Your</span><span>All</span> feedback history - </v-card-title> - <v-data-table - :headers="headers" - :items="filteredFeedback" - sort-by="student" - > - <template #top> - <feedback-search-options - v-model="searchOptions" - /> - </template> - <template #item="{ item }"> - <tr - class="feedback-row" - @click="showSubmission(item)" - > - <td>{{ item.ofSubmissionType.name }}</td> - <td v-if="exerciseMode"> - {{ item.ofStudent }} - </td> - <td>{{ item.score }}</td> - <td>{{ new Date(item.created).toLocaleString() }}</td> - <td>{{ new Date(item.modified).toLocaleString() }}</td> - <td> - <v-icon v-if="item.isFinal"> - check - </v-icon> - <v-icon v-else> - clear - </v-icon> - </td> - <td> - <v-btn - icon - :color="item.mark" - @click="changeMark(item.ofSubmission, item.mark)" - /> - </td> - </tr> - </template> - </v-data-table> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import { mapState, mapGetters } from 'vuex' -import Component from 'vue-class-component' -import { getObjectValueByPath } from '@/util/helpers' -import FeedbackSearchOptions, { FeedbackSearchOptionsModel } from '@/components/feedback_list/FeedbackSearchOptions.vue' -import { FeedbackTable as FeedbackModule, FeedbackHistoryItem } from '@/store/modules/feedback_list/feedback-table' -import { FeedbackStageEnum, Feedback, FeedbackLabel } from '@/models' -import { actions } from '@/store/actions' -import { getters } from '@/store/getters' -import { Authentication } from '../../store/modules/authentication' -import { ConfigModule } from '../../store/modules/config' -import SubmissionType from '../submission_type/SubmissionType.vue' -import ax, { fetchSubmissionType } from '@/api' -import { SubmissionNotes } from '@/store/modules/submission-notes' - -function extractLabelsFromFeedback(feedback: FeedbackHistoryItem): Set<number> { - let labels: Set<number> = new Set(feedback.labels) - - Object.values(feedback.feedbackLines || {}).forEach(comments => { - comments.forEach(comment => { - if (!comment.visibleToStudent) { - return - } - comment.labels.forEach(label => { - labels.add(label) - }) - }) - }) - - return labels -} - -@Component({ - components: { - FeedbackSearchOptions - } -}) -export default class FeedbackTable extends Vue { - get isTutor () { return Authentication.isTutor } - get exerciseMode () { return ConfigModule.state.config.instanceSettings.exerciseMode } - - get headers(): {text: string, value: string, align?: string}[] { - return [ - { text: 'Type', align: 'left', value: 'ofSubmissionType.name' }, - ...(this.exerciseMode ? [{ text: 'Student', value: 'ofStudent' }] : []), - { text: 'score', value: 'score' }, - { text: 'Created', value: 'created' }, - { text: 'Modified', value: 'modified', }, - { text: 'Final', value: 'final' }, - { text: 'Mark', value: 'mark' } - ] - } - - get feedback () { - return Object.values(FeedbackModule.state.feedbackHist) - } - - searchOptions: FeedbackSearchOptionsModel = { - searchString: '', - showFinal: true, - caseSensitive: false, - useRegex: false, - filterByExams: [], - filterByTutors: [], - filterByStage: undefined, - filterByLabels: [], - filterByExcludingLabels: [], - } - - get queryFoundInString(): (s: string) => boolean { - if (this.searchOptions.useRegex) { - const flags = this.searchOptions.caseSensitive ? 'u' : 'iu' - try { - const re = new RegExp(this.searchOptions.searchString , flags) - return s => re.test(s) - } catch { - return _ => true - } - } else { - if (this.searchOptions.caseSensitive) - return s => s.includes(this.searchOptions.searchString) - else - return s => s.toLowerCase().includes(this.searchOptions.searchString.toLowerCase()) - } - } - - queryFoundInFields(f: Feedback): boolean { - return f.ofSubmissionType.name !== undefined && this.queryFoundInString(f.ofSubmissionType.name) || - f.created !== undefined && this.queryFoundInString(f.created) || - f.modified !== undefined && this.queryFoundInString(f.modified) - } - - queryFoundInComments(feedback: Feedback): boolean { - return Object.values(feedback.feedbackLines ?? {}) - .some(line => line.map(comment => comment.text).some(this.queryFoundInString)) - } - - allLabelsFromFilterFoundOn(f: Feedback): boolean { - const fLabels = extractLabelsFromFeedback(f) - return this.searchOptions.filterByLabels.every(l => fLabels.has(l.pk)) - } - - noExcludedLabelFoundOn(f: Feedback): boolean { - const fLabels = extractLabelsFromFeedback(f) - return this.searchOptions.filterByExcludingLabels.every(l => !fLabels.has(l.pk)) - } - - // TODO: it is possible that a user is not assigned to the feedback, but still made a comment on it - // this happens when a reviewer adds a comment to a feedback that he has never corrected himself - // we could either ignore this case or add every user that has made a comment to a feedback - // to the list of associated users in the filteredTutorsContributedToFeedback method - - filteredTutorsContributedToFeedback(f: FeedbackHistoryItem): boolean { - if (this.searchOptions.filterByTutors.length === 0) - return true - - const stages = this.searchOptions.filterByStage ? [this.searchOptions.filterByStage] - : Object.values(FeedbackStageEnum) - const associatedTutors = stages.map(stage => f.history?.[stage]?.ofTutor).filter(x => !!x) - return this.searchOptions.filterByTutors.some(tutor => associatedTutors.includes(tutor.username)) - } - - feedbackIsForCurrentExam(f: Feedback): boolean { - return f.ofSubmissionType.examType.moduleReference === ConfigModule.state.config.currentExam - } - - get filteredFeedback() { - return this.feedback.filter(f => { - return (!f.isFinal || this.searchOptions.showFinal) && - (this.queryFoundInFields(f) || this.queryFoundInComments(f)) && - this.feedbackIsForCurrentExam(f) && - this.allLabelsFromFilterFoundOn(f) && - this.noExcludedLabelFoundOn(f) && - this.filteredTutorsContributedToFeedback(f) - }) - } - - showSubmission (feedback: Feedback) { - this.$router.push(`/feedback/${feedback.ofSubmission}`) - } - - changeMark(submissionPk: string, currColor: string) { - const colorArr = ['red lighten-2', 'blue lighten-2', 'green lighten-2', 'transparent'] - const newColor = colorArr[(colorArr.indexOf(currColor) + 1) % colorArr.length] - FeedbackModule.SET_MARK_COLOR({submissionPk, color: newColor}) - } -} -</script> - -<style scoped> - .feedback-row { - cursor: pointer; - } -</style> diff --git a/grady/frontend/src/components/instance_config/ConfigDialog.vue b/grady/frontend/src/components/instance_config/ConfigDialog.vue deleted file mode 100644 index 414f270b..00000000 --- a/grady/frontend/src/components/instance_config/ConfigDialog.vue +++ /dev/null @@ -1,110 +0,0 @@ -<template> - <v-dialog - v-model="show" - width="50%" - > - <v-card> - <v-card-title class="title"> - Configure instance - </v-card-title> - <v-card-text> - <div> - In this section you can configure the running instance. - Any changes you make are immediately applied, but it is required that every user - logs out and in again to make sure that all users receive the new configuration. - </div> - <v-row> - <v-col - v-for="(setting, i) in Object.keys(instanceSettings)" - :key="i" - cols="6" - > - <v-checkbox - v-model="selected" - :label="snakeUpperCaseSetting(setting)" - :value="setting" - /> - </v-col> - </v-row> - </v-card-text> - <v-card-actions> - <v-btn - color="red" - @click="$emit('hide')" - > - Cancel - </v-btn> - <v-btn - @click="submitChange" - > - Change settings - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> -</template> - -<script> -import { ConfigModule } from '@/store/modules/config' -import * as api from '@/api' - -export default { - name: 'ConfigDialog', - data() { - return { - loading: true, - show: true, - selected: [], - - // config fields that should be ignored entirely go here - ignoredFields: ['registrationPassword'] - } - }, - computed: { - instanceSettings: function () { - const filtered = Object.entries(ConfigModule.state.config.instanceSettings) - .filter(([key,]) => !this.ignoredFields.includes(key)) - return Object.fromEntries(filtered) - }, - }, - watch: { - show (val) { - if (!val) { - this.$emit('hide') - } - } - }, - mounted() { - ConfigModule.getConfig().then(() => { - this.loading = false - this.selected = Object.entries(this.instanceSettings) - .filter(([key, value]) => value) - .map(([key, value]) => key) - }) - }, - methods: { - submitChange() { - let conf = {} - - // initially set all settings to false, then set selected ones to true - for (const cur of Object.keys(this.instanceSettings)) { - conf = {...conf, [cur]: false} - } - for (const cur of this.selected) { - conf = {...conf, [cur]: true} - } - - this.$emit('hide') - api.patchInstanceSettings(conf) - ConfigModule.getConfig() - }, - snakeUpperCaseSetting(setting) { - // converts given string to from camelCase to uppercase snake case - return setting.split('').reduce((acc, curr) => { - return curr === curr.toUpperCase() ? acc + '_' + curr : acc + curr - }).toUpperCase() - } - } - -} -</script> diff --git a/grady/frontend/src/components/mixins/commentLabelSelector.ts b/grady/frontend/src/components/mixins/commentLabelSelector.ts deleted file mode 100644 index b37a2761..00000000 --- a/grady/frontend/src/components/mixins/commentLabelSelector.ts +++ /dev/null @@ -1,132 +0,0 @@ -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop } from 'vue-property-decorator' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import { FeedbackComment, FeedbackLabel } from '@/models' -import { FeedbackLabels } from '@/store/modules/feedback-labels' - -enum FeedbackType { - original = 'origFeedback', - updated = 'updatedFeedback', -} - -@Component -export default class commentLabelSelector extends Vue { - @Prop({ type: String, required: true }) readonly lineNo!: string - - /** - * Returns array of label pk's where feedbackType is - * either "origFeedback" or "updatedFeedback" - * - * Will return null when labels property does not exist on the requested state's comment - * This is the case when the labels have not been updated, as we don't want to have - * the labels field in the object if the labels have not changed. - */ - copyStateLabels(feedbackType: FeedbackType): number[] | null { - const currentLine = this.getFeedbackLine(feedbackType) - if (currentLine && currentLine.labels) { - return currentLine.labels - } else { - return null - } - } - - /** - * Gets the latest feedback line object for the current lineNo and the given feedbackType - * @param feedbackType The type to get the latest line from - */ - getFeedbackLine (feedbackType: FeedbackType): FeedbackComment | undefined { - - // helper used to determine the correct type to reduce redundancy - function isArray(val: FeedbackComment | FeedbackComment[]): val is FeedbackComment[] { - return (val as FeedbackComment[]).length !== undefined - } - - const stateLines = SubmissionNotes.state[feedbackType].feedbackLines - if (stateLines && Object.keys(stateLines).length > 0) { - let lines = stateLines[Number(this.lineNo)] - if (!lines) return undefined - - if (isArray(lines)) { - return lines.length > 0 ? lines[lines.length-1] : undefined - } else { - return lines - } - } - - return undefined - } - - getUnchangedLabels() { - const labelsOrig = this.copyStateLabels(FeedbackType.original) - if (labelsOrig === null || labelsOrig.length === 0) { - return new Array () - } - const removedLabels = this.getRemovedLabels() - const addedLabels = this.getAddedLabels() - - return labelsOrig.filter((val) => { - return !removedLabels.includes(val) && !addedLabels.includes(val) - }) - } - - getRemovedLabels() { - const currentLine = this.getFeedbackLine(FeedbackType.updated) - if (currentLine === undefined) return new Array() - - const labelsOrig = this.copyStateLabels(FeedbackType.original) - const labelsUpdated = this.copyStateLabels(FeedbackType.updated) - - if (labelsOrig === null || labelsUpdated === null) { - return new Array() - } - - return labelsOrig.filter((val) => { - return !labelsUpdated.includes(val) - }) - } - - getAddedLabels() { - const labelsOrig = this.copyStateLabels(FeedbackType.original) - const labelsUpdated = this.copyStateLabels(FeedbackType.updated) - - if (labelsUpdated === null) { - return new Array() - } - - if (labelsOrig === null) { - return labelsUpdated ? labelsUpdated : new Array() - } - - return labelsUpdated.filter((val) => { - return !labelsOrig.includes(val) - }) - } - - /** - * Maps label pk's to the objects stored in vuex store - */ - mapPksToLabelObj(pkArr: number[]): FeedbackLabel[] { - const mappedLabels = pkArr.map((val) => { - const label = FeedbackLabels.availableLabels.find((label) => { - return label.pk === val - }) - - if (!label) return undefined - return { - pk: val, - name: label.name, - description: label.description, - colour: label.colour - } - }).filter((val): val is FeedbackLabel => { - if (!val) { - return false - } - - return true - }) - - return mappedLabels - } -} diff --git a/grady/frontend/src/components/mixins/exportMixin.ts b/grady/frontend/src/components/mixins/exportMixin.ts deleted file mode 100644 index b68131f1..00000000 --- a/grady/frontend/src/components/mixins/exportMixin.ts +++ /dev/null @@ -1,100 +0,0 @@ -import Vue from 'vue' -import Component, { mixins } from 'vue-class-component' -import { fetchStudentExportData, StudentExportItem, InstanceExportData, fetchInstanceExportData } from '@/api' -import { getters } from '@/store/getters' -import { mutations as mut } from '@/store/mutations' -import { saveAs } from 'file-saver' - -let download = saveAs - -export enum ExportType { - JSON = 'application/json', -} - -export function mock(mockedDownload?: () => boolean) { - download = mockedDownload || saveAs -} - -@Component -export class exportMixin extends Vue { - exportDialog = true - mapFile: File | null = null - setPasswords = false - exportType = ExportType.JSON - loading = false - - get mapFileLoaded () { - return Object.keys(getters.state.studentMap).length > 0 - } - - async getExportFile (type: string) { - this.loading = true - - let studentData - if (type === 'data') { - studentData = await fetchStudentExportData({ setPasswords: this.setPasswords }) - } else if (type === 'instance') { - studentData = await fetchInstanceExportData() - } else { - throw new Error('Unsupported export type') - } - - if (this.mapFile || this.mapFileLoaded) { - this.getMappedExportFile(studentData) - } else { - this.optionalConvertAndCreatePopup(studentData) - } - } - - optionalConvertAndCreatePopup (studentData: StudentExportItem[] | InstanceExportData) { - const convertedData = JSON.stringify(studentData) - const filename = 'export.json' - download(new Blob([convertedData], { type: this.exportType }), filename) - this.loading = false - } - - async getMappedExportFile (studentData: StudentExportItem[] | InstanceExportData) { - if (!this.mapFile && !this.mapFileLoaded) { - throw new Error('Either mapFile must be selected or already loaded ' + - 'to call getMappedExportFile') - } - if (this.mapFile) { - await this.readMapFileAndCommit() - } - this.applyMapping(studentData) - this.optionalConvertAndCreatePopup(studentData) - } - - readMapFileAndCommit (): Promise<void> { - const fileReader = new FileReader() - return new Promise((resolve, reject) => { - fileReader.onload = event => { - // @ts-ignore typings of EventTarget seem to be wrong - const studentMap = JSON.parse(event.target.result) - mut.SET_STUDENT_MAP(studentMap) - resolve() - } - fileReader.onerror = () => { - fileReader.abort() - reject(new Error('Problem parsing input file.')) - } - - if (!this.mapFile) { - reject(new Error('Can only call' + - ' readMapFileAndCommit when mapFile is not undefined')) - } else { - fileReader.readAsText(this.mapFile) - } - }) - } - - hide () { - this.$emit('hide') - } - - showDialog () { - this.exportDialog = true - } - - applyMapping (exportData: StudentExportItem[] | InstanceExportData): void { throw new Error('Not implemented.') } -} diff --git a/grady/frontend/src/components/student/ExamInformation.vue b/grady/frontend/src/components/student/ExamInformation.vue deleted file mode 100644 index d1448b08..00000000 --- a/grady/frontend/src/components/student/ExamInformation.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <table class="table table-info rounded exam-table"> - <tbody v-if="!exam"> - No exam information present - </tbody> - <tbody v-else> - <tr> - <th>Module</th> - <td>{{ exam.moduleReference }}</td> - </tr> - <tr> - <th>Pass score</th> - <td>{{ exam.passScore }}</td> - </tr> - <tr v-if="exam.passOnly"> - <th>Pass only exam!</th> - </tr> - <tr> - <th>Total score</th> - <td>{{ exam.totalScore }}</td> - </tr> - </tbody> - </table> -</template> - -<script lang="ts"> -import { Vue, Component, Prop } from 'vue-property-decorator' -import { Exam } from '@/models' - -@Component -export default class ExamInformation extends Vue { - @Prop(Object) exam!: Exam -} -</script> - -<style> -.exam-table { - width: 100% -} -</style> diff --git a/grady/frontend/src/components/student/SubmissionList.vue b/grady/frontend/src/components/student/SubmissionList.vue deleted file mode 100644 index 00615c7a..00000000 --- a/grady/frontend/src/components/student/SubmissionList.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <div class="row my-2 justify-content-center"> - <v-data-table - hide-default-footer - :headers="headers" - :items="submissions" - item-key="type.pk" - > - <template #item.feedback.score="{ item }"> - {{ item.feedback ? item.feedback.score : 'N/A' }} - </template> - <template #item.view="{ item }"> - <v-btn - :to="`/submission/${item.type.pk}`" - color="orange lighten-2" - > - <v-icon>chevron_right</v-icon> - </v-btn> - </template> - </v-data-table> - <v-alert color="info"> - You reached <b>{{ sumScore }}</b> of <b>{{ sumFullScore }}</b> possible points ({{ pointRatio }}%). - </v-alert> - </div> -</template> - -<script> -export default { - name: 'SubmissionList', - props: { - submissions: { - type: Array, - required: true - } - }, - data () { - return { - headers: [ - { - text: 'Task', - align: 'left', - value: 'type.name', - sortable: true - }, - { - text: 'Score', - align: 'right', - value: 'feedback.score' - }, - { - text: 'Maximum Score', - align: 'right', - value: 'type.fullScore' - }, - { - text: 'View', - align: 'center', - value: 'view', - sortable: false - } - ] - } - }, - computed: { - sumScore () { - return this.submissions.map(a => a.feedback && a.feedback.score).reduce((a, b) => a + b) || 0 - }, - sumFullScore () { - return this.submissions.map(a => a.type.fullScore).reduce((a, b) => a + b) - }, - pointRatio () { - return ((this.sumScore / this.sumFullScore) * 100).toFixed(2) - } - } -} -</script> diff --git a/grady/frontend/src/components/student_list/StudentList.vue b/grady/frontend/src/components/student_list/StudentList.vue deleted file mode 100644 index 40f8fcc4..00000000 --- a/grady/frontend/src/components/student_list/StudentList.vue +++ /dev/null @@ -1,324 +0,0 @@ -<template> - <v-card> - <v-toolbar flat> - <v-toolbar-title> - Participants - </v-toolbar-title> - <v-spacer /> - <v-toolbar-items /> - <v-select - v-model="selectedGroup" - :items="groups" - item-text="name" - label="Group" - single-line - return-object - hide-details - clearable - flat - class="mr-6" - /> - <v-text-field - v-model="search" - append-icon="search" - label="Search" - single-line - hide-details - class="mr-6" - /> - <student-list-reverse-mapper /> - <v-btn - icon - @click="refresh" - > - <v-icon>refresh</v-icon> - </v-btn> - <student-list-menu /> - </v-toolbar> - <v-divider /> - <v-data-table - :headers="headers" - :items="studentListItems" - :search="search" - sort-by="name" - :loading="loading" - item-key="name" - show-expand - must-sort - > - <template #item="{ expand, isExpanded, item }"> - <tr> - <td> - <v-btn - small - icon - @click="expand(!isExpanded)" - > - <v-icon v-if="isExpanded"> - keyboard_arrow_up - </v-icon> - <v-icon v-else> - keyboard_arrow_down - </v-icon> - </v-btn> - </td> - <td> - {{ item.name }} - </td> - <td> - <v-tooltip top> - <template #activator="{ on }"> - <div v-on="on"> - <v-icon - v-if="item.isActive" - small - > - lock_open - </v-icon> - <v-icon - v-else - small - > - lock - </v-icon> - </div> - </template> - <span v-if="!item.isActive">Participant doesn't have access.</span> - <span v-else>Participant has access.</span> - </v-tooltip> - </td> - <td - v-for="type in submissionTypeHeaders" - :key="type.pk" - class="text-right" - > - <v-btn - v-if="item[type.pk]" - small - rounded - outlined - class="submission-button" - exact - :to="{name: 'submission-side-view', params: { - studentPk: item.pk, - submissionPk: item[type.pk].pk - }}" - :color="item[type.pk].final ? 'green darken-2' : 'grey'" - @click="showSubmissionDetails" - > - {{ item[type.pk].score }} - </v-btn> - <span v-else>N.A</span> - </td> - <td class="text-right"> - {{ item.total }} - </td> - </tr> - </template> - <template #expanded-item="{ headers, item }"> - <td :colspan="headers.length"> - <v-btn - v-if="isReviever" - @click="changeActiveStatus(item)" - > - {{ item.isActive ? 'Revoke access' : 'Grant access' }} - </v-btn> - <ul class="student-info-list"> - <li> - <b>Modul:</b> {{ item.exam }} - </li> - <li> - <b>MatrikelNr:</b> {{ item.matrikelNo }} - </li> - </ul> - </td> - </template> - </v-data-table> - </v-card> -</template> - -<script> -import { mapActions, mapState } from 'vuex' -import StudentListMenu from '@/components/student_list/StudentListMenu' -import StudentListReverseMapper from '@/components/student_list/StudentListReverseMapper' -import { changeActiveForUser, fetchUser } from '@/api' -import { getters } from '@/store/getters' -import { Authentication } from '@/store/modules/authentication' -import { ConfigModule } from '../../store/modules/config' -import * as api from '@/api' -import { Assignments } from '@/store/modules/assignments' - - -export default { - name: 'StudentList', - components: { - StudentListReverseMapper, - StudentListMenu }, - data () { - return { - loading: true, - search: '', - selectedGroup: null, - userData: [], - userMap: null - } - }, - computed: { - ...mapState([ - 'students' - ]), - isReviever() { - return Authentication.isReviewer - }, - submissionTypeHeaders () { - const subTypes = Object.values(getters.state.submissionTypes) - return subTypes - .filter(submissionType => { - return submissionType.examType.moduleReference === ConfigModule.state.config.currentExam - }) - .sort((a, b) => a.name.localeCompare(b.name)) - .map(type => { - return { - pk: type.pk, - text: type.name.substr(0, 5), - value: `${type.pk}.score`, - align: 'right' - } - }) - }, - headers () { - return [ - { - text: 'Name', - align: 'left', - value: 'name', - }, - { - text: 'Has Access', - align: 'left', - value: 'isActive', - }, - ...this.submissionTypeHeaders, - { - text: 'Total', - align: 'right', - value: 'total', - }, - ] - }, - studentListItems () { - if (!this.loading) { - let filteredStudents = this.students - if (this.selectedGroup !== null) { - filteredStudents = Object.values(filteredStudents).filter(student => { - let userGroups = this.userMap.get(student.userPk) - return userGroups.some(group => group.pk === this.selectedGroup.pk) - }) - } - return Object.values(filteredStudents).map(student => { - return { - pk: student.pk, - user: student.user, - userPk: student.userPk, - exam: student.exam, - name: student.name, - isActive: student.isActive, - matrikelNo: student.matrikelNo, - ...this.reduceArrToDict(student.submissions, 'type'), - total: this.sumSubmissionScores(student.submissions) - } - }) - } - - return [] - }, - groups () { - if (Authentication.isTutor) { - return Authentication.state.user.exerciseGroups.filter( group => { - return group.exam === null || group.exam.pk === ConfigModule.state.config.examId - }) - } - else if (Authentication.isReviewer) { - return Assignments.state.groups.filter( group => { - return group.exam === null || group.exam.pk === ConfigModule.state.config.examId - }) - } - else { - return [] - } - }, - }, - created () { - this.getUserData() - this.getStudents().then(() => { this.loading = false }) - const groups = Assignments.getGroups() - }, - methods: { - ...mapActions([ - 'getStudents' - ]), - reduceArrToDict (arr, key) { - return arr.reduce((acc, curr) => { - const keyInDict = curr[key] - acc[keyInDict] = curr - return acc - }, {}) - }, - changeActiveStatus (student) { - changeActiveForUser(student.userPk, !student.isActive).then(() => { - this.getStudents({ studentPks: [student.pk] }) - }).catch(() => { - this.$notify({ - title: 'Error', - text: `Unable to change active status of ${student.user}`, - type: 'error' - }) - }) - }, - sumSubmissionScores (submissions) { - submissions = submissions.filter(submission => { - var subType = Object.values(getters.state.submissionTypes).filter(submissionType => { - return submissionType.pk === submission.type - })[0] - return subType.examType.moduleReference === ConfigModule.state.config.currentExam - }) - return submissions.reduce((acc, curr) => { - if (curr.score) { - acc += curr.score - } - return acc - }, 0) - }, - refresh (opts = { silent: false }) { - if (!opts.silent) { - this.loading = true - } - this.getStudents().then(() => { this.loading = false }) - }, - showSubmissionDetails () { - this.$emit('detail-click') - }, - async getUserData() { - this.userMap = new Map() - this.userData = await api.fetchUsers() - var that = this // javascript this is not the same in forEach - this.userData.forEach(user => { - that.userMap.set(user.pk, user.exerciseGroups) - }) - } - }, -} -</script> - -<style scoped> - .submission-button { - min-width: 40px; - } - .student-info-list li { - display: inline; - margin-right: 20px; - } - .student-info-list { - display: inline; - } -</style> diff --git a/grady/frontend/src/components/student_list/StudentListHelpCard.vue b/grady/frontend/src/components/student_list/StudentListHelpCard.vue deleted file mode 100644 index a676d9c0..00000000 --- a/grady/frontend/src/components/student_list/StudentListHelpCard.vue +++ /dev/null @@ -1,31 +0,0 @@ -<template> - <v-row justify="center"> - <v-card class="mt-5"> - <v-card-title class="title"> - This is the student overview page! - </v-card-title> - <v-card-text> - To the left you see all students as well as their scores - per task type. You can do the following:<br><br> - <ol style="padding-left: 30px;"> - <li>click the little arrow on the left to see additional student information (matrikel no., module, etc.)</li> - <li>click on a students score to see their submission including feedback, tests, etc.<br>(You can even create Feedback here!)</li> - <li>sort the table via clicking on the table headers</li> - <li>search for a student via the search bar</li> - </ol> - </v-card-text> - </v-card> - </v-row> -</template> - -<script> -export default { - name: 'StudentListHelpCard' -} -</script> - -<style scoped> - /* .mg-bottom { - margin-bottom: 25px; - } */ -</style> diff --git a/grady/frontend/src/components/student_list/StudentListMenu.vue b/grady/frontend/src/components/student_list/StudentListMenu.vue deleted file mode 100644 index e528cc98..00000000 --- a/grady/frontend/src/components/student_list/StudentListMenu.vue +++ /dev/null @@ -1,94 +0,0 @@ -<template> - <v-menu - v-if="isReviewer" - open-on-hover - bottom - offset-y - > - <template #activator="{ on }"> - <v-btn - icon - v-on="on" - > - <v-icon>menu</v-icon> - </v-btn> - </template> - <v-list> - <v-list-item - v-for="item in items" - :key="item.title" - @click="item.action" - > - <v-list-item-title>{{ item.title }}</v-list-item-title> - </v-list-item> - </v-list> - </v-menu> -</template> - -<script> -import { activateAllStudentAccess, - deactivateAllStudentAccess } from '@/api' -import { actions } from '@/store/actions' -import { Authentication } from '@/store/modules/authentication' - -export default { - name: 'StudentListMenu', - computed: { - studentsActive () { - const firstStudent = Object.values(this.$store.state.students)[0] - return firstStudent ? firstStudent.isActive === true : false - }, - isReviewer () { - return Authentication.isReviewer - }, - items () { - return [ - { - title: this.studentsActive - ? 'Remove participant access' - : 'Grant participant access', - action: this.changeStudentsAccess - } - ] - } - }, - methods: { - updateStudentData () { - actions.getStudents().catch(() => { - this.$notify({ - title: 'ERROR', - text: 'Unable to update student data!', - type: 'error' - }) - }) - }, - changeStudentsAccess () { - if (this.studentsActive) { - deactivateAllStudentAccess().then(() => { - this.updateStudentData() - }).catch(() => { - this.$notify({ - title: 'ERROR', - text: 'Unable to disable access', - type: 'error' - }) - }) - } else { - activateAllStudentAccess().then(() => { - this.updateStudentData() - }).catch(() => { - this.$notify({ - title: 'ERROR', - text: 'Unable to activate access', - type: 'error' - }) - }) - } - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/student_list/StudentListReverseMapper.vue b/grady/frontend/src/components/student_list/StudentListReverseMapper.vue deleted file mode 100644 index 8fed9671..00000000 --- a/grady/frontend/src/components/student_list/StudentListReverseMapper.vue +++ /dev/null @@ -1,45 +0,0 @@ -<template> - <v-tooltip top> - <template #activator="{ on }"> - <div v-on="on"> - <v-file-input - v-model="file" - hide-input - prepend-icon="vpn_key" - accept="application/JSON" - @change="readMapFileAndApply" - /> - </div> - </template> - <span>Apply mapping</span> - </v-tooltip> -</template> - -<script> -export default { - name: 'StudentListReverseMapper', - data () { - return { - file: null, - fileReader: new FileReader() - } - }, - methods: { - readMapFileAndApply () { - this.fileReader.onload = event => { - const studentMap = JSON.parse(event.target.result) - this.reverseMapStudents(studentMap) - } - this.fileReader.readAsText(this.file) - }, - reverseMapStudents (studentMap) { - this.$store.commit('SET_STUDENT_MAP', studentMap) - this.$store.commit('SET_STUDENTS', Object.values(this.$store.state.students)) - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/submission_notes/CorrectionHelpCard.vue b/grady/frontend/src/components/submission_notes/CorrectionHelpCard.vue deleted file mode 100644 index 0be45efe..00000000 --- a/grady/frontend/src/components/submission_notes/CorrectionHelpCard.vue +++ /dev/null @@ -1,37 +0,0 @@ -<template> - <v-card class="help-card"> - <v-card-title> - <v-icon>help_outline</v-icon> - <h3>Tips on using the correction interface</h3> - </v-card-title> - <v-card-text> - Never trade an ale. - The sea-dog leads with yellow fever, crush the captain's quarters until it waves.<br> - Ho-ho-ho! malaria of life.<br> - Halitosis, adventure, and yellow fever.<br> - The girl drinks with halitosis, pull the galley before it laughs.<br> - The moon fires with life, vandalize the bikini atoll before it travels.<br> - The tuna blows with fight, haul the freighter before it whines.<br> - The cannibal robs with hunger, fire the lighthouse until it whines.<br> - The captain loves with death, vandalize the lighthouse before it whines.<br> - The anchor loots with treasure, raid the freighter before it grows.<br> - The reef commands with endurance, view the quarter-deck until it whines.<br> - The scallywag loots with passion, crush the bikini atoll before it falls.<br> - The sea leads with treasure, ransack the brig until it dies.<br> - The parrot robs with desolation, view the seychelles before it screams.<br> - The warm anchor quirky blows the landlubber.<br> - </v-card-text> - </v-card> -</template> - -<script> -export default { - name: 'CorrectionHelpCard' -} -</script> - -<style scoped> - .help-card { - width: fit-content; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/RouteChangeConfirmation.vue b/grady/frontend/src/components/submission_notes/RouteChangeConfirmation.vue deleted file mode 100644 index 9c89fcce..00000000 --- a/grady/frontend/src/components/submission_notes/RouteChangeConfirmation.vue +++ /dev/null @@ -1,70 +0,0 @@ -<template> - <v-dialog - v-model="dialog" - max-width="30%" - > - <v-card class="text-center"> - <v-card-title class="title"> - Are you sure? - </v-card-title> - <v-card-text> - Not submitted feedback will be lost! - </v-card-text> - <v-card-actions> - <v-btn - text - outlined - color="red lighten-1" - @click="changeRoute" - > - Change page - </v-btn> - <v-btn - text - outlined - @click="dialog = false" - > - Stay here - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> -</template> - -<script> -import { SubmissionNotes } from '@/store/modules/submission-notes' - -export default { - name: 'RouteChangeConfirmation', - props: { - nextRoute: { - type: Function, - default: null - } - }, - data () { - return { - dialog: false - } - }, - watch: { - nextRoute (newVal, oldVal) { - if (newVal !== oldVal && SubmissionNotes.workInProgress) { - this.dialog = true - } else { - this.nextRoute() - } - } - }, - methods: { - changeRoute () { - this.nextRoute() - this.dialog = false - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/submission_notes/SubmissionCorrection.vue b/grady/frontend/src/components/submission_notes/SubmissionCorrection.vue deleted file mode 100644 index d3c9e736..00000000 --- a/grady/frontend/src/components/submission_notes/SubmissionCorrection.vue +++ /dev/null @@ -1,257 +0,0 @@ -<template> - <div> - <base-annotated-submission> - <template #header> - <annotated-submission-top-toolbar - v-model="mathIsRendered" - :of-student="submissionObj && submissionObj.ofStudent" - :show-clipboard="true" - :show-correction-help="true" - :source-code-available="sourceCodeAvailable" - :submission="submission" - :submission-type="submission.type" - :feedback="feedback" - :is-markdown="isMarkdown" - /> - </template> - <template - id="sub-lines" - #table-content - > - <tr - v-for="(code, lineNo) in submission" - :id="`sub-line-${lineNo}`" - :key="`${submissionObj.pk}${lineNo}`" - > - <math-renderer :enabled="mathIsRendered"> - <submission-line - :hint="hasHiddenComment(lineNo)" - :code="code" - :line-no="lineNo" - @toggleEditor="toggleEditorOnLine(lineNo)" - > - <template v-if="showFeedback"> - <div v-if="origFeedback[lineNo]"> - <feedback-comment - v-for="(comment, index) in getSortedComments(lineNo)" - :key="index" - v-bind="comment" - :visible-to-student-bool="updatedFeedback[lineNo] ? false : comment.visibleToStudent" - :line-no="lineNo" - :deletable="comment.ofTutor === user || isReviewer" - @click.native="toggleEditorOnLine(lineNo, comment)" - /> - </div> - <feedback-comment - v-if="updatedFeedback[lineNo]" - v-bind="updatedFeedback[lineNo]" - :line-no="lineNo" - :deletable="true" - @click.native="toggleEditorOnLine(lineNo, updatedFeedback[lineNo])" - /> - </template> - <comment-form - v-if="showEditorOnLine[lineNo]" - :feedback="selectedComment[lineNo].text" - :line-no="lineNo" - @collapseFeedbackForm="toggleEditorOnLine(lineNo)" - /> - </submission-line> - </math-renderer> - </tr> - </template> - <template #labels> - <label-selector - id="feedback-label-selector" - :assigned-to-feedback="true" - class="mt-1 elevation-1" - /> - </template> - <template #footer> - <annotated-submission-bottom-toolbar - class="mt-1 elevation-1" - :loading="loading" - :full-score="submissionObj['fullScore']" - :skippable="assignment !== undefined" - :feedback="feedbackObj ? feedbackObj : {}" - @submitFeedback="submitFeedback" - /> - </template> - </base-annotated-submission> - </div> -</template> - -<script> -import { mapState, mapGetters } from 'vuex' -import CommentForm from '@/components/submission_notes/base/CommentForm.vue' -import FeedbackComment from '@/components/submission_notes/base/FeedbackComment.vue' -import AnnotatedSubmissionTopToolbar from '@/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar' -import AnnotatedSubmissionBottomToolbar from '@/components/submission_notes/toolbars/AnnotatedSubmissionBottomToolbar' -import BaseAnnotatedSubmission from '@/components/submission_notes/base/BaseAnnotatedSubmission' -import FeedbackLabel from '@/components/feedback_labels/FeedbackLabel.vue' -import { FeedbackLabels as Labels } from '@/store/modules/feedback-labels' -import LabelSelector from '@/components/feedback_labels/LabelSelector.vue' -import SubmissionLine from '@/components/submission_notes/base/SubmissionLine' -import { SubmissionNotes, subNotesEventBus } from '@/store/modules/submission-notes' -import { SubmissionType } from '@/models' -import { Authentication } from '@/store/modules/authentication' -import { actions } from '@/store/actions' -import { fetchFeedback } from '@/api' -import MathRenderer from '@/components/MathRenderer.vue' - -export default { - name: 'SubmissionCorrection', - components: { - SubmissionLine, - BaseAnnotatedSubmission, - AnnotatedSubmissionBottomToolbar, - AnnotatedSubmissionTopToolbar, - FeedbackComment, - LabelSelector, - CommentForm, - MathRenderer }, - props: { - assignment: { - default: () => {}, - type: Object - }, - // either pass in an assignment or a submission and feedback - submissionWithoutAssignment: { - default: () => {}, - type: Object - }, - feedback: { - default: () => {}, - type: Object - }, - ignoreHiddenState: { - type: Boolean, - default: false, - } - }, - data () { - return { - loading: false, - feedbackShortPollInterval: null, - mathIsRendered: true, - } - }, - computed: { - showEditorOnLine () { return SubmissionNotes.state.ui.showEditorOnLine }, - selectedComment () { return SubmissionNotes.state.ui.selectedCommentOnLine }, - origFeedback () { return SubmissionNotes.state.origFeedback.feedbackLines }, - updatedFeedback () { return SubmissionNotes.state.updatedFeedback.feedbackLines }, - showFeedback () { return SubmissionNotes.state.ui.showFeedback }, - - workInProgress () { return SubmissionNotes.workInProgress }, - - sourceCodeAvailable () { - return SubmissionNotes.state.submission.sourceCodeAvailable - }, - - isStudent () { return Authentication.isStudent }, - isTutor () { return Authentication.isTutor }, - isReviewer () { return Authentication.isReviewer }, - user () { return Authentication.state.user.username }, - submission () { - return SubmissionNotes.submission - }, - isMarkdown () { - const lang = SubmissionNotes.submissionType.programmingLanguage - return lang === SubmissionType.ProgrammingLanguageEnum.Markdown - }, - submissionObj () { - return this.assignment ? this.assignment.submission : this.submissionWithoutAssignment - }, - feedbackObj () { - return this.assignment ? this.assignment.feedback : this.feedback - } - }, - watch: { - assignment: function (newVar, oldVar) { - this.init() - }, - submissionWithoutAssignment: function () { - this.init() - }, - submission: function (oldVal, newVal) { - if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) { - subNotesEventBus.$emit('submissionChanged') - } - } - }, - created () { - this.init() - this.shortPollOrigFeedback() - }, - beforeDestroy () { - clearInterval(this.feedbackShortPollInterval) - }, - methods: { - toggleEditorOnLine (lineNo, comment = '') { - SubmissionNotes.TOGGLE_EDITOR_ON_LINE({ lineNo, comment }) - }, - submitFeedback ({ isFinal }) { - this.loading = true - SubmissionNotes.submitFeedback({ - isFinal: isFinal - }).then(_ => { - SubmissionNotes.RESET_UPDATED_FEEDBACK() - this.$emit('feedbackCreated') - this.$emit('feedbackChanged') - SubmissionNotes.RESET_MARKED_COMMENTS_FOR_DELETE() - }).catch(err => { - // ignore trivial errors as those are handled - // by an interceptor - if (err.message.includes('Request failed')) return - - this.$notify({ - title: 'Feedback creation Error!', - text: err.message, - type: 'error', - duration: -1 - }) - }).finally(() => { - this.loading = false - }) - }, - shortPollOrigFeedback () { - this.feedbackShortPollInterval = setInterval(() => { - if (this.feedbackObj && this.feedbackObj.ofSubmission) { - fetchFeedback({ ofSubmission: this.feedbackObj.ofSubmission }).then(feedback => { - SubmissionNotes.SET_ORIG_FEEDBACK(feedback) - }) - } - }, 5e3) - }, - getSortedComments (lineNo) { - if (!this.origFeedback || (!this.origFeedback && !this.origFeedback[lineNo])) return new Array() - let feedback = [...this.origFeedback[lineNo]] - - return feedback.sort((a, b) => { - const da = new Date(a.modified) - const db = new Date(b.modified) - return da.getTime() - db.getTime() - }) - }, - hasHiddenComment (lineNo) { - const hasOrigComment = this.origFeedback && this.origFeedback[lineNo] - && this.origFeedback[lineNo].length > 0 - - const hasUpdatedComment = this.updatedFeedback && this.updatedFeedback[lineNo] - - return !this.showFeedback && (hasOrigComment || !!hasUpdatedComment) - }, - init () { - SubmissionNotes.RESET_STATE() - SubmissionNotes.SET_SUBMISSION(this.submissionObj) - SubmissionNotes.SET_ORIG_FEEDBACK(this.feedbackObj) - SubmissionNotes.SET_SHOW_FEEDBACK(this.ignoreHiddenState ? true : !SubmissionNotes.state.hasOrigFeedback) - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/submission_notes/base/BaseAnnotatedSubmission.vue b/grady/frontend/src/components/submission_notes/base/BaseAnnotatedSubmission.vue deleted file mode 100644 index 1be4eb9c..00000000 --- a/grady/frontend/src/components/submission_notes/base/BaseAnnotatedSubmission.vue +++ /dev/null @@ -1,38 +0,0 @@ -<template> - <div> - <slot name="header" /> - <table - id="submission-table" - class="submission-table elevation-1" - :class="{latex: isMarkdown}" - > - <slot name="table-content" /> - </table> - <slot name="labels" /> - <slot name="footer" /> - </div> -</template> - -<script> -import { SubmissionNotes } from '@/store/modules/submission-notes' -import store from '@/store/store' -import { SubmissionType } from '@/models' -export default { - name: 'BaseAnnotatedSubmission', - computed: { - isMarkdown () { - const typePk = SubmissionNotes.state.submission.type - const type = store.state.submissionTypes[typePk] - return type && type.programmingLanguage === SubmissionType.ProgrammingLanguageEnum.Markdown - } - } -} -</script> - -<style scoped> - .submission-table { - table-layout: fixed; - border-collapse: collapse; - width: 100%; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/base/CommentForm.vue b/grady/frontend/src/components/submission_notes/base/CommentForm.vue deleted file mode 100644 index f815936d..00000000 --- a/grady/frontend/src/components/submission_notes/base/CommentForm.vue +++ /dev/null @@ -1,154 +0,0 @@ -<template> - <v-container> - <v-row> - <v-col> - <v-textarea - v-model="currentFeedback" - name="feedback-input" - label="Please provide your feedback here" - rows="2" - outlined - autofocus - auto-grow - hide-details - @keyup.enter.ctrl.exact="submitFeedback" - @keyup.esc="collapseTextField" - /> - </v-col> - </v-row> - <v-row> - <v-col> - <label-selector - id="comment-label-selector" - :assigned-to-feedback="false" - :line-no="lineNo" - :labels-unchanged="labelsUnchanged" - :labels-added="labelsAdded" - :labels-removed="labelsRemoved" - @label-added="labelAdded" - @label-removed="labelRemoved" - @submit-shortcut="submitFeedback" - /> - </v-col> - </v-row> - <v-row> - <v-col> - <v-btn - id="submit-comment" - color="success" - @click="submitFeedback" - > - <v-icon>check</v-icon>Submit - </v-btn> - <v-btn - id="cancel-comment" - @click="collapseTextField" - > - <v-icon>cancel</v-icon>cancel - </v-btn> - </v-col> - </v-row> - </v-container> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component, { mixins } from 'vue-class-component' -import { Prop, Watch } from 'vue-property-decorator' -import { SubmissionNotes, subNotesEventBus } from '@/store/modules/submission-notes' -import LabelSelector from '@/components/feedback_labels/LabelSelector.vue' -import { FeedbackComment, SubmissionType } from '@/models' -import commentLabelSelector from '@/components/mixins/commentLabelSelector' - -@Component({ - components: { - LabelSelector - } -}) -export default class CommentForm extends mixins(commentLabelSelector) { - @Prop({ type: String, default: '' }) readonly feedback!: string - @Prop({ type: String, required: true }) readonly lineNo!: string - - currentFeedback = this.feedback - labelsUnchanged: number[] = this.getUnchangedLabels() - labelsAdded: number[] = this.getAddedLabels() - labelsRemoved: number[] = this.getRemovedLabels() - - selectInput (event: Event) { - if (event !== null) { - const target = event.target as HTMLTextAreaElement - target.select() - } - } - - collapseTextField () { - this.$emit('collapseFeedbackForm') - subNotesEventBus.$emit('submissionChanged') - } - - /** - * Adds label pk to the array of added labels - * or adds already removed labels to unchanged array - */ - labelAdded (pk: number) { - if (this.labelsRemoved.includes(pk)) { - this.labelsUnchanged.push(pk) - this.labelsRemoved = this.labelsRemoved.filter((val) => { - return val !== pk - }) - } else if (!this.labelsAdded.includes(pk) && - !this.labelsUnchanged.includes(pk)) - { - this.labelsAdded.push(pk) - } - } - - /** - * Adds label pk to the array of removed labels - * or removes already added labels from the list of added labels - */ - labelRemoved (pk: number) { - if (this.labelsAdded.includes(pk)) { - this.labelsAdded = this.labelsAdded.filter((val) => { - return val !== pk - }) - } else if (!this.labelsRemoved.includes(pk)) { - this.labelsRemoved.push(pk) - this.labelsUnchanged = this.labelsUnchanged.filter((val) => { - return val !== pk - }) - } - } - - submitFeedback () { - const text = this.currentFeedback - const labels = this.labelsUnchanged.concat(this.labelsAdded) - - if (text === '' && labels.length === 0) { - return this.collapseTextField() - } - - const payload: {lineNo: number, comment: Partial<FeedbackComment>} = { - lineNo: Number(this.lineNo), - comment: { - text: text, - labels: labels, - } - } - - if (this.labelsAdded.length === 0 && this.labelsRemoved.length === 0) { - delete payload.comment.labels - } - - SubmissionNotes.UPDATE_FEEDBACK_LINE(payload) - this.collapseTextField() - } -} - -</script> - -<style scoped> - v-text-field { - padding-top: 0px; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/base/FeedbackComment.vue b/grady/frontend/src/components/submission_notes/base/FeedbackComment.vue deleted file mode 100644 index 4f6b1bec..00000000 --- a/grady/frontend/src/components/submission_notes/base/FeedbackComment.vue +++ /dev/null @@ -1,340 +0,0 @@ -<template> - <div class="dialog-box"> - <div - v-if="commentDisplayable" - class="body elevation-1" - :style="{borderColor: borderColor}" - > - <span - class="tip tip-up" - :style="{borderBottomColor: borderColor}" - /> - <span - v-if="ofTutor" - class="of-tutor" - >Of tutor: {{ ofTutor }}</span> - <span class="comment-created">{{ parsedCreated }}</span> - <div - v-if="showVisibilityIcon" - class="visibility-icon" - > - <v-tooltip - v-if="visibleToStudentBool" - top - size="20px" - > - <template #activator="{ on }"> - <v-icon - size="20px" - v-on="on" - > - visibility - </v-icon> - </template> - <span>Will be visible to student</span> - </v-tooltip> - <v-tooltip - v-else - top - > - <template #activator="{ on }"> - <v-icon - size="20px" - v-on="on" - > - visibility_off - </v-icon> - </template> - <span>Won't be visible to student</span> - </v-tooltip> - </div> - <!-- eslint-disable-next-line vue/singleline-html-element-content-newline vue/max-attributes-per-line--> - <div :key="key" class="message">{{ text }}</div> - <v-btn - v-if="deletable" - text - icon - absolute - class="delete-button" - @click.stop="toggleDeleteComment" - > - <v-icon - v-if="!markedForDeletion.hasOwnProperty(pk)" - color="grey darken-1" - size="20px" - > - delete_forever - </v-icon> - <v-icon - v-else - size="20px" - > - restore - </v-icon> - </v-btn> - </div> - <v-row - v-if="showLabels && correctorView" - class="ml-2" - > - <v-col sm="4"> - <v-col sm="12"> - CURRENT LABELS - </v-col> - <feedback-label - v-for="label in unchangedLabels" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="deleteAction" - /> - </v-col> - <v-col sm="4"> - <v-col sm="12"> - WILL BE REMOVED - </v-col> - <feedback-label - v-for="label in removedLabels" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="deleteAction" - /> - </v-col> - <v-col sm="4"> - <v-col sm="12"> - WILL BE ADDED - </v-col> - <feedback-label - v-for="label in addedLabels" - :key="label.pk" - removable - v-bind="label" - @remove-clicked="deleteAction" - /> - </v-col> - </v-row> - <template - v-if="!correctorView" - row - wrap - align-center - > - <v-row - v-for="label in unchangedLabels" - :key="label.pk" - - - align="center" - > - <v-col sm="6"> - <feedback-label - v-bind="label" - /> - </v-col> - <v-col sm="6"> - <span><b>Description: </b>{{ label.description }}</span> - </v-col> - </v-row> - </template> - </div> -</template> - -<script> -import { mapState } from 'vuex' -import { UI } from '@/store/modules/ui' -import { SubmissionNotes, subNotesEventBus } from '@/store/modules/submission-notes' -import FeedbackLabel from '@/components/feedback_labels/FeedbackLabel.vue' -import { FeedbackLabels as Labels } from '@/store/modules/feedback-labels' -import commentLabelSelector from '@/components/mixins/commentLabelSelector' - -export default { - name: 'FeedbackComment', - components: { - FeedbackLabel, - }, - mixins: [ - commentLabelSelector, - ], - props: { - pk: { - default: '', - type: String, - required: false - }, - text: { - type: String, - required: true - }, - modified: { - default: '', - type: String, - required: false - }, - ofTutor: { - default: '', - type: String, - required: false - }, - lineNo: { - type: String, - required: true - }, - deletable: { - type: Boolean, - default: false - }, - visibleToStudentBool: { - type: Boolean, - default: true - }, - showVisibilityIcon: { - type: Boolean, - default: true - }, - correctorView: { - type: Boolean, - default: true - } - }, - data () { - return { - key: 0 - } - }, - computed: { - commentDisplayable () { return this.text !== '' }, - showLabels () { - return this.visibleToStudentBool && - (this.getUnchangedLabels().length > 0 || - this.getAddedLabels().length > 0 || - this.getRemovedLabels().length > 0) - }, - markedForDeletion () { return SubmissionNotes.state.commentsMarkedForDeletion }, - parsedCreated () { - if (this.modified) { - return new Date(this.modified).toLocaleString() - } else { - return 'Just now' - } - }, - borderColor () { - if (this.pk) { - return this.markedForDeletion.hasOwnProperty(this.pk) ? '#B5B5B5' : '#3D8FC1' - } - return 'orange' - }, - unchangedLabels() { - return this.mapPksToLabelObj(this.getUnchangedLabels()) - }, - addedLabels() { - return this.mapPksToLabelObj(this.getAddedLabels()) - }, - removedLabels() { - return this.mapPksToLabelObj(this.getRemovedLabels()) - } - }, - created() { - subNotesEventBus.$on('submissionChanged', () => { - this.key++ - }) - subNotesEventBus.$on('resetSubmission', () => { - this.key++ - }) - }, - methods: { - deleteAction (pk) { - let labels - const concated = this.getUnchangedLabels().concat(this.getAddedLabels()) - if (this.getUnchangedLabels().includes(pk)) { - labels = concated.filter((val) => { - return val !== pk - }) - } else if (this.getAddedLabels().includes(pk)) { - labels = concated.filter((val) => { - return val !== pk - }) - } else if (this.getRemovedLabels().includes(pk)) { - concated.push(pk) - labels = concated - } - - if (labels.length > 0 || SubmissionNotes.state.hasOrigFeedback || this.commentDisplayable) { - SubmissionNotes.UPDATE_FEEDBACK_LINE({ - lineNo: Number(this.lineNo), - comment: { - text: this.text || '', - labels: labels, - } - }) - } else { - SubmissionNotes.DELETE_FEEDBACK_LINE(Number(this.lineNo)) - } - }, - toggleDeleteComment () { - if (this.pk) { - if (!this.markedForDeletion.hasOwnProperty(this.pk)) { - SubmissionNotes.MARK_COMMENT_FOR_DELETION({ pk: this.pk }) - } else { - SubmissionNotes.UN_MARK_COMMENT_FOR_DELETION({ pk: this.pk }) - } - } - SubmissionNotes.DELETE_FEEDBACK_LINE(this.lineNo) - } - } -} -</script> - -<style scoped> - .tip { - width: 0px; - height: 0px; - position: absolute; - background: transparent; - border: 10px solid; - } - .tip-up { - top: -22px; /* Same as body margin top + border */ - left: 10px; - border-right-color: transparent; - border-left-color: transparent; - border-top-color: transparent; - } - .dialog-box .body { - cursor: pointer; - position: relative; - height: auto; - margin: 20px 10px 10px 10px; - padding: 5px; - border-radius: 0px; - border: 2px solid; - } - .body .message { - white-space: pre-line; - min-height: 30px; - border-radius: 3px; - font-size: 14px; - line-height: 1.5; - } - .delete-button { - bottom: -12px; - left: -42px; - } - .comment-created { - position: absolute; - font-size: 10px; - right: 4px; - top: -20px; - } - .of-tutor { - position: absolute; - font-size: 13px; - top: -20px; - left: 50px; - } - .visibility-icon { - position: absolute; - top: -4px; - left: -34px; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/base/SubmissionLine.vue b/grady/frontend/src/components/submission_notes/base/SubmissionLine.vue deleted file mode 100644 index ee553796..00000000 --- a/grady/frontend/src/components/submission_notes/base/SubmissionLine.vue +++ /dev/null @@ -1,90 +0,0 @@ -<template> - <div> - <td - :style="backgroundColor" - class="line-number-cell" - > - <v-btn - text - block - depressed - class="line-number-btn" - @click="toggleEditor" - > - {{ lineNo }} - </v-btn> - </td> - <td class="code-cell-content pl-2"> - <!-- eslint-disable-next-line --> - <span class="code-line" :key="key" v-html="code"/> - <slot /> - </td> - </div> -</template> - -<script> -import { subNotesEventBus } from '../../../store/modules/submission-notes' -export default { - name: 'SubmissionLine', - props: { - lineNo: { - type: String, - required: true - }, - code: { - type: String, - required: true - }, - codeLanguage: { - type: String, - default: 'lang-c' - }, - hint: { - type: Boolean, - default: false, - }, - }, - data () { - return { - key: 0 - } - }, - computed: { - backgroundColor() { - return this.hint ? 'background-color: #F44336;' : 'background-color: transparent;' - } - }, - created () { - subNotesEventBus.$on('resetSubmission', () => { - this.key++ - }) - }, - methods: { - toggleEditor () { - this.$emit('toggleEditor') - } - } -} -</script> - -<style scoped> - .line-number-cell { - vertical-align: top; - } - - .code-cell-content { - width: 100%; - } - - .code-line { - white-space: pre-wrap; - font-family: monospace; - } - - .line-number-btn { - height: fit-content; - min-width: 50px; - margin: 0; - border-radius: 0; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionBottomToolbar.vue b/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionBottomToolbar.vue deleted file mode 100644 index ac7879e9..00000000 --- a/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionBottomToolbar.vue +++ /dev/null @@ -1,227 +0,0 @@ -<template> - <v-card> - <v-card-text> - <v-form - ref="scoreForm" - v-model="scoreIsValid" - lazy-validation - @submit.prevent="submit" - > - <v-text-field - id="score-input" - v-model="score" - v-shortkey="'numeric'" - type="number" - step="0.5" - label="Score" - :suffix="`/${fullScore}`" - :rules="scoreRules" - min="0" - :max="fullScore" - @shortkey="handleKeypress" - /> - <div class="suggestion-chips"> - <v-chip - id="score-zero" - small - color="error" - outlined - @click="score=0" - > - 0 - </v-chip> - <v-chip - id="score-full" - small - color="success" - outlined - @click="score=fullScore" - > - {{ fullScore }} - </v-chip> - </div> - </v-form> - </v-card-text> - <v-divider /> - <v-card-actions> - <v-tooltip - v-if="showFinalCheckbox" - top - > - <template #activator="{ on }"> - <div v-on="on"> - <v-checkbox - v-model="isFinal" - label="Final" - class="final-checkbox" - hide-details - /> - </div> - </template> - <span>If unchecked this submission will be marked for review by the lecturer</span> - </v-tooltip> - <v-spacer /> - <v-tooltip - v-if="skippable" - top - > - <template #activator="{ on }"> - <v-btn - id="skip-submission" - text - v-on="on" - @click="skipSubmission" - > - Skip - </v-btn> - </template> - <span>Skip this submission</span> - </v-tooltip> - <v-tooltip top> - <template #activator="{ on }"> - <v-btn - id="submit-feedback" - color="primary" - :loading="loading" - :disabled="!scoreIsValid" - v-on="on" - @click="submit" - > - Submit - </v-btn> - </template> - <span>Submit and continue</span> - </v-tooltip> - </v-card-actions> - </v-card> -</template> - -<script> -import { SubmissionNotes } from '@/store/modules/submission-notes' -import { Authentication } from '@/store/modules/authentication' -import { Assignments } from '@/store/modules/assignments' -import { mapState } from 'vuex' - -export default { - name: 'AnnotatedSubmissionBottomToolbar', - props: { - fullScore: { - type: Number, - required: true - }, - loading: { - type: Boolean, - required: true - }, - skippable: { - type: Boolean, - default: false - }, - feedback: { - type: Object, - default: () => {} - } - }, - data () { - return { - scoreIsValid: true, - isFinal: this.initialFinalStatus(), - scoreRules: [ - score => score !== undefined || - 'Score is required.', - score => !isNaN(parseFloat(score)) || - 'Score must be a number.', - score => parseFloat(score) >= 0 && parseFloat(score) <= this.fullScore || - `Score must be between 0 and ${this.fullScore}.`, - score => parseFloat(score) === this.fullScore || this.hasFeedbackOrLabel || - 'Add a comment or label explaining why this submission doesn\'t get full score.' - ] - } - }, - computed: { - hasFeedbackOrLabel: function() { - return Object.keys(SubmissionNotes.state.updatedFeedback.feedbackLines).length > 0 || - SubmissionNotes.state.updatedFeedback.labels.length > 0 || - Object.keys(SubmissionNotes.state.origFeedback.feedbackLines).length > 0 || - SubmissionNotes.state.origFeedback.labels.length > 0 - }, - score: { - get: function () { - return SubmissionNotes.score - }, - set: function (score) { - SubmissionNotes.UPDATE_FEEDBACK_SCORE(Number(score)) - } - }, - showFinalCheckbox () { - // show always on feedback history and participants overview - if (this.$route.name !== 'correction') { - return true - } - - return !SubmissionNotes.isFeedbackCreation || - Authentication.isReviewer && !SubmissionNotes.isConflictResolution - } - }, - watch: { - feedback: { - handler: function (val) { - this.isFinal = this.initialFinalStatus() - }, - deep: true - }, - hasFeedbackOrLabel: function (newValue) { - if (this.score !== undefined) - this.$refs.scoreForm.validate() - } - }, - methods: { - initialFinalStatus () { - if (this.$route.name === 'correction') { - return !SubmissionNotes.isFeedbackCreation || Authentication.isReviewer - } else { - if (this.feedback.hasOwnProperty('isFinal') && !SubmissionNotes.isConflictResolution) { - return this.feedback.isFinal - } else { - return !SubmissionNotes.isFeedbackCreation || Authentication.isReviewer - } - } - }, - submit () { - if (this.$refs.scoreForm.validate()) - this.$emit('submitFeedback', { isFinal: this.isFinal }) - }, - skipSubmission () { - if (this.skippable) { - Assignments.skipAssignment().catch(() => { - this.$notify({ - title: 'Unable to skip submission', - type: 'error' - }) - }) - } else { - throw new Error('Can\'t skip submission when skippable is false for AnnotatedSubmissionBottomToolbar.') - } - }, - handleKeypress (event) { - // only handle keypress if nothing is focused - if (document.activeElement.tagName === 'BODY') { - this.score = event.key - const scoreInput = document.getElementById('score-input') - scoreInput.scrollIntoView() - scoreInput.focus() - } - } - } -} -</script> - -<style scoped> - .suggestion-chips { - margin: 0 -4px; - } - .final-checkbox { - margin: 0; - padding: 0; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue b/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue deleted file mode 100644 index 4f42298d..00000000 --- a/grady/frontend/src/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar.vue +++ /dev/null @@ -1,239 +0,0 @@ -<template> - <v-toolbar - dense - > - <v-app-bar-nav-icon - v-if="showCorrectionHelp" - @click.stop="helpDialog=true" - > - <v-icon>help_outline</v-icon> - </v-app-bar-nav-icon> - <v-dialog - v-model="helpDialog" - scrollable - max-width="fit-content" - > - <correction-help-card /> - </v-dialog> - <span v-if="score < 0">Submission of {{ ofStudent }}</span> - <span - v-else - class="title" - > - Score: {{ score }} </span> - <v-spacer /> - <toggle-feedback-visibility-button /> - <div v-if="isMarkdown"> - <v-btn @click="$emit('input', !mathIsRendered)"> - {{ mathIsRendered ? 'Reset Math' : 'Render Math' }} - </v-btn> - </div> - <v-spacer /> - <v-tooltip - v-if="sourceCodeAvailable" - top - > - <template #activator="{ on }"> - <v-btn - icon - v-on="on" - @click="downloadSourceCode" - > - <v-icon> - cloud_download - </v-icon> - </v-btn> - </template> - <span>Download original source code (.ipynb, etc.)</span> - </v-tooltip> - <v-btn - v-if="notebookAvailable" - text - class="blue-grey lighten-2" - @click="showOriginalSubmission" - > - VIEW ORIGINAL SUBMISSION - </v-btn> - <v-tooltip top> - <template #activator="{ on }"> - <v-btn - v-if="showClipboard" - icon - v-on="on" - @click="copyToClipboard" - > - <v-icon>content_copy</v-icon> - </v-btn> - </template> - <span>{{ copyMessage }}</span> - </v-tooltip> - <v-tooltip - v-if="solutionHidden" - top - > - <template #activator="{ on }"> - <v-btn - icon - v-on="on" - @click="showSolution" - > - <v-icon> - keyboard_arrow_left - </v-icon> - </v-btn> - </template> - <span>Show Solution</span> - </v-tooltip> - - <v-dialog - v-model="originalSubmissionDialog" - fullscreen - hide-overlay - > - <v-card> - <v-toolbar - dark - color="#1a237e" - > - <v-btn - icon - dark - @click="originalSubmissionDialog = false" - > - <v-icon>close</v-icon> - </v-btn> - <v-toolbar-title>Original notebook</v-toolbar-title> - <v-spacer /> - </v-toolbar> - - <v-card-text> - <iframe - :srcdoc="originalSubmission" - class="origNotebookFrame" - /> - </v-card-text> - </v-card> - </v-dialog> - </v-toolbar> -</template> - -<script> -import CorrectionHelpCard from '@/components/submission_notes/CorrectionHelpCard' -import { mapState } from 'vuex' -import ToggleFeedbackVisibilityButton from '@/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton' -import { SubmissionNotes, subNotesEventBus } from '@/store/modules/submission-notes' -import { StudentPage } from '@/store/modules/student-page' -import {fetchSubmissionSourceCode} from '@/api.ts' -import { fetchNotebookSubmissionAsHtml } from '@/api.ts' -import {saveAs} from 'file-saver' -import store from '../../../store/store' -import { SubmissionType } from '../../../models' -import Vue from 'vue' -import { UI } from '@/store/modules/ui' - -export default { - name: 'AnnotatedSubmissionTopToolbar', - components: { - ToggleFeedbackVisibilityButton, - CorrectionHelpCard }, - props: { - ofStudent: { - type: String, - default: 'Participant' - }, - showClipboard: { - type: Boolean, - default: false - }, - score: { - type: Number, - default: -1 - }, - showCorrectionHelp: { - type: Boolean, - default: false - }, - sourceCodeAvailable: { - type: Boolean, - default: false - }, - isMarkdown: { - type: Boolean, - default: false - }, - notebookAvailable: { - type: Boolean, - default: false - }, - submission: { - type: Object, - default: null - }, - submissionType: { - type: Object, - default: null - }, - feedback: { - type: Object, - default: null - }, - submissionLanguage: { - type: String, - default: null - }, - value: { - type: Boolean, - default: true - } - }, - data () { - return { - helpDialog: false, - copyMessage: 'Copy to clipboard', - originalSubmissionDialog: false, - originalSubmission: '', - } - }, - computed: { - solutionHidden () { - return UI.state.showSubmissionType === false - }, - mathIsRendered() { - return this.value - } - }, - methods: { - resetSubmission () { - subNotesEventBus.$emit('resetSubmission') - }, - async showOriginalSubmission () { - if (!this.originalSubmission) { - const notebook = await fetchNotebookSubmissionAsHtml(this.submission.pk) - this.originalSubmission = notebook - } - this.originalSubmissionDialog = true - }, - async downloadSourceCode () { - const data = await fetchSubmissionSourceCode(SubmissionNotes.state.submission.pk) - saveAs(new Blob([data.sourceCode], {type: 'application/json'}), 'notebook.ipynb') - }, - copyToClipboard () { - this.$clipboard(SubmissionNotes.state.submission.text) - this.copyMessage = 'Copied!' - setTimeout(() => { - this.copyMessage = 'Copy to clipboard' - }, 2500) - }, - showSolution () { - UI.SET_SHOW_SUBMISSIONTYPE(true) - } - } -} -</script> - -<style scoped> - .origNotebookFrame { - width: 100%; - min-height: 85vh; - } -</style> diff --git a/grady/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue b/grady/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue deleted file mode 100644 index 453a5ea8..00000000 --- a/grady/frontend/src/components/submission_notes/toolbars/ToggleFeedbackVisibilityButton.vue +++ /dev/null @@ -1,39 +0,0 @@ -<template> - <v-btn - id="feedback-visibility-toggle" - text - color="info" - @click="showFeedback = !showFeedback" - > - <div v-if="showFeedback"> - Hide Feedback - </div> - <div v-else> - Show Feedback - </div> - </v-btn> -</template> - -<script lang="ts"> -import Vue from 'vue' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import { createComputedGetterSetter } from '@/util/helpers' -import { getters } from '@/store/getters' -import Component from 'vue-class-component' - -@Component -export default class ToggleFeedbackVisibilityButton extends Vue { - get showFeedback () { - return getters.state.SubmissionNotes.ui.showFeedback - } - - set showFeedback (val) { - SubmissionNotes.SET_SHOW_FEEDBACK(val) - } -} -</script> - - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/submission_type/SubmissionType.vue b/grady/frontend/src/components/submission_type/SubmissionType.vue deleted file mode 100644 index 3e845b98..00000000 --- a/grady/frontend/src/components/submission_type/SubmissionType.vue +++ /dev/null @@ -1,174 +0,0 @@ -<template> - <v-card id="submission-type"> - <v-toolbar> - <span class="title">{{ name }} - Full score: {{ fullScore }}</span> - <v-spacer /> - <v-btn - v-if="closeable" - icon - @click="close" - > - <v-icon>close</v-icon> - </v-btn> - </v-toolbar> - <v-expansion-panels - v-model="expanded" - multiple - accordion - > - <v-expansion-panel - v-for="(item, i) in typeItems" - :key="i" - > - <v-expansion-panel-header> - <b>{{ item.title }}</b> - <v-btn - v-if="item.title == 'Solution'" - color="info" - text - @click.stop="showSolutionComments = !showSolutionComments" - > - Toggle Comments - </v-btn> - </v-expansion-panel-header> - <v-expansion-panel-content - v-if="item.title === 'Description'" - class="type-description" - > - <math-renderer> - <!-- eslint-disable-next-line --> - <div class="description-content" v-html="item.text" /> - </math-renderer> - </v-expansion-panel-content> - <v-expansion-panel-content v-else-if="item.title === 'Solution'"> - <solution - :pk="pk" - :solution="solution" - :programming-language="programmingLanguage" - :solution-comments="solutionComments" - :show-solution-comments="showSolutionComments" - :editable="allowEditSolutionComments" - /> - </v-expansion-panel-content> - </v-expansion-panel> - </v-expansion-panels> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop, Watch } from 'vue-property-decorator' -import { highlight } from 'highlight.js' -import { UI } from '@/store/modules/ui' -import { SolutionComment } from '../../models' -import Solution from '@/components/submission_type/solution/Solution.vue' -import { Authentication } from '@/store/modules/authentication' -import MathRenderer from '@/components/MathRenderer.vue' - -@Component({ - components: { Solution, MathRenderer } -}) -export default class SubmissionType extends Vue { - @Prop({ - type: String, - required: true, - }) pk!: string - @Prop({ - type: String, - required: true - }) name!: string - @Prop({ - type: String, - required: true - }) description!: string - @Prop({ - type: String, - required: false, - default: '' - }) solution!: string - @Prop({ - type: Number, - required: true - }) fullScore!: number - @Prop({ - type: String, - default: 'c' - }) programmingLanguage!: string - @Prop({ - type: Boolean, - default: false - }) reverse!: boolean - @Prop({ - type: Object, - default: () => {return {}}, - }) solutionComments!: {[ofLine: number]: SolutionComment[]} - @Prop({ - type: Object, - default: function () { - return { - Description: true, - Solution: true - } - } - }) expandedByDefault!: {Description: boolean, Solution: boolean} - @Prop({ - type: Boolean, - default: true - }) closeable!: boolean - - expanded = [ - ...(this.expandedByDefault.Description ? [this.reverse ? 0 : 1] : []), - ...(this.expandedByDefault.Solution ? [this.reverse ? 1 : 0] : []) - ] - - showSolutionComments = true - - get allowEditSolutionComments () { - return Authentication.isTutorOrReviewer - } - - get typeItems () { - let items = [ - { - title: 'Description', - text: this.description - } - ] - if (this.solution) { - items.push({ - title: 'Solution', - text: this.solution - }) - } - if (this.reverse) { - return items.reverse() - } else { - return items - } - } - get highlightedSolution () { - return highlight(this.programmingLanguage, this.solution, true).value - } - - close() { - UI.SET_SHOW_SUBMISSIONTYPE(false) - } - - mounted () { - window.MathJax.typeset() - } -} -</script> - -<style> - .description-content pre { - overflow-x: auto; - } - - .v-expansion-panel { - /* Vuetify limits the height by default. We don't want that.*/ - max-height: initial; - } -</style> - diff --git a/grady/frontend/src/components/submission_type/SubmissionTypesOverview.vue b/grady/frontend/src/components/submission_type/SubmissionTypesOverview.vue deleted file mode 100644 index 64d8e385..00000000 --- a/grady/frontend/src/components/submission_type/SubmissionTypesOverview.vue +++ /dev/null @@ -1,85 +0,0 @@ -<template> - <v-card> - <v-card-title class="title"> - Task types - </v-card-title> - <v-row> - <v-col cols="3"> - <v-list id="submission-types-list"> - <v-list-item - v-for="submissionType in sortedSubmissionTypes" - :key="submissionType.pk" - @click="selectedSubmissionType = submissionType" - > - <v-list-item-content> - {{ submissionType.name }} - </v-list-item-content> - </v-list-item> - </v-list> - </v-col> - <v-col cols="9"> - <v-row - v-if="!selectedSubmissionType" - justify="center" - > - <strong>Select a task type on the left to see the description and solution.</strong> - </v-row> - <submission-type - v-else - :closeable="false" - class="mr-2 mb-2" - v-bind="selectedSubmissionType" - /> - </v-col> - </v-row> - </v-card> -</template> - -<script> -import SubmissionType from '@/components/submission_type/SubmissionType' -import { ConfigModule } from '../../store/modules/config' -import store from '@/store/store' - -export default { - name: 'SubmissionTypesOverview', - components: { SubmissionType }, - data () { - return { - selectedSubmissionTypePk: null - } - }, - computed: { - submissionTypes () { - let types = Object.values(store.state.submissionTypes) - return types.filter(submissionType => { - return submissionType.examType.moduleReference === ConfigModule.state.config.currentExam - }) - }, - // needed to keep selectedSubmissionType reactive - selectedSubmissionType: { - get: function () { - return store.state.submissionTypes[this.selectedSubmissionTypePk] - }, - set: function (newSubType) { - this.selectedSubmissionTypePk = newSubType.pk - } - }, - sortedSubmissionTypes () { - return Object.values(this.submissionTypes).sort((t1, t2) => { - let lowerName1 = t1.name.toLowerCase() - let lowerName2 = t2.name.toLowerCase() - if (lowerName1 < lowerName2) { - return -1 - } else if (lowerName1 > lowerName2) { - return 1 - } - return 0 - }) - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/submission_type/solution/Solution.vue b/grady/frontend/src/components/submission_type/solution/Solution.vue deleted file mode 100644 index 54e1ab25..00000000 --- a/grady/frontend/src/components/submission_type/solution/Solution.vue +++ /dev/null @@ -1,219 +0,0 @@ -<template> - <table class="solution-table"> - <tr - v-for="(code, lineNo) in highlightedSolution" - :id="`solution-line-${lineNo}`" - :key="`${pk}:${lineNo}`" - > - <td - class="line-number-cell" - :style="backgroundColor(lineNo)" - > - <v-btn - text - block - depressed - class="line-number-btn" - @click="toggleEditor(lineNo)" - > - {{ lineNo }} - </v-btn> - </td> - <td class="code-cell-content pl-2"> - <!-- eslint-disable-next-line --> - <span class="code-line" v-html="code"/> - <template - v-if="solutionComments[lineNo] && solutionComments[lineNo].length && showSolutionComments" - > - <solution-comment - v-for="comment in solutionComments[lineNo]" - :key="comment.pk" - v-bind="comment" - @update-submission-type="updateSubmissionType" - @toggle-editor="toggleEditor(lineNo)" - @toggle-eidt-editor="toggleEditor(lineNo)" - /> - </template> - <template v-if="showEditorOnline[lineNo]"> - <v-textarea - v-model="editedSolutionComments[lineNo]" - name="solution-comment-input" - label="Here you can comment the solution. Other tutors will see those comments." - rows="2" - outlined - autofocus - auto-grow - hide-details - class="mx-2" - @keyup.enter.ctrl.exact="submitSolutionComment(lineNo)" - @keyup.esc="collapseTextField(lineNo)" - @focus="selectInput($event)" - /> - <v-btn - id="submit-comment" - color="success" - @click="submitSolutionComment(lineNo)" - > - <v-icon>check</v-icon>Submit - </v-btn> - <v-btn - id="cancel-comment" - @click="toggleEditor(lineNo)" - > - <v-icon>cancel</v-icon>cancel - </v-btn> - </template> - </td> - </tr> - </table> -</template> - -<script lang="ts"> - import { Vue, Component, Prop } from 'vue-property-decorator' - import { SolutionComment, FeedbackComment } from '../../../models' - import { highlight } from 'highlight.js' - import { syntaxPostProcess, objectifyArray } from '../../../util/helpers' - import SolutionCommentComponent from '@/components/submission_type/solution/SolutionComment.vue' - import * as api from '@/api' - import { actions } from '../../../store/actions' - - @Component({ - components: {'SolutionComment': SolutionCommentComponent} - }) - export default class Solution extends Vue { - @Prop({ - type: String, - required: true - }) - pk!: string - @Prop({ - type: String, - required: false, - default: '' - }) - solution!: string - @Prop({ - type: String, - default: 'c' - }) - programmingLanguage!: string - @Prop({ - type: Object, - default: {} - }) - solutionComments!: { [ofLine: number]: SolutionComment[] } - @Prop({ - type: Boolean, - default: true - }) - showSolutionComments!: boolean - @Prop({ - type: Boolean, - default: true - }) - editable!: boolean - - timer = 0 - showEditorOnline: {[ofLine: number]: boolean} = {} - editedSolutionComments: {[ofLine: number]: string} = {} - - get highlightedSolution() { - const highlighted = highlight(this.programmingLanguage, this.solution, true) - .value - const postprocessed = syntaxPostProcess(highlighted) - return postprocessed - .split('\n') - .reduce((acc: { [k: number]: string }, curr, index) => { - acc[index + 1] = curr - return acc - }, {}) - } - - get lineNoHint() { - if (this.showSolutionComments) { - // will return a falsy value if indexed with a line number - // meaning no hint will be displayed - return {} - } else { - // returning the solutionComments will return a truthy value - // if indexed with the line number where comments are located - return this.solutionComments - } - } - - backgroundColor(lineNo: number) { - if (this.lineNoHint[lineNo]) { - return 'backgroundColor: #64B5F6;' - } else { - 'backgroundColor: transparent;' - } - } - - selectInput (event: Event) { - if (event !== null) { - const target = event.target as HTMLTextAreaElement - target.select() - } - } - - toggleEditor(lineNo: number) { - if (this.editable) { - Vue.set(this.showEditorOnline, lineNo, !this.showEditorOnline[lineNo]) - } - } - - async submitSolutionComment(lineNo: number) { - const comment = { - text: this.editedSolutionComments[lineNo], - ofLine: lineNo, - ofSubmissionType: this.pk - } - await api.createSolutionComment(comment) - await actions.updateSubmissionType(this.pk) - this.toggleEditor(lineNo) - this.editedSolutionComments[lineNo] = '' - } - - updateSubmissionType() { - actions.updateSubmissionType(this.pk) - } - - mounted() { - this.timer = setInterval(() => { - actions.updateSubmissionType(this.pk) - }, 10 * 1e3) - } - - beforeDestroy() { - clearInterval(this.timer) - } - } -</script> - -<style scoped> - .solution-table { - table-layout: auto; - border-collapse: collapse; - width: 100%; - } - - .line-number-cell { - vertical-align: top - } - - .code-cell-content { - width: 100% - } - - .code-line { - white-space: pre-wrap; - font-family: monospace; - } - - .line-number-btn { - height: fit-content; - min-width: 50px; - margin: 0; - border-radius: 0px; - } -</style> diff --git a/grady/frontend/src/components/submission_type/solution/SolutionComment.vue b/grady/frontend/src/components/submission_type/solution/SolutionComment.vue deleted file mode 100644 index 34239c3c..00000000 --- a/grady/frontend/src/components/submission_type/solution/SolutionComment.vue +++ /dev/null @@ -1,238 +0,0 @@ -<template> - <div> - <div - class="dialog-box" - @click="$emit('toggle-editor')" - > - <div - class="body elevation-1" - :style="{borderColor: '#3D8FC1'}" - > - <span - class="tip tip-up" - :style="{borderBottomColor: '#3D8FC1'}" - /> - <span - v-if="ofUser" - class="of-user" - >Of user: {{ ofUser }}</span> - <span class="comment-created">{{ parsedCreated }}</span> - <div class="message"> - {{ text }} - </div> - <v-btn - v-if="deletable" - text - icon - absolute - class="delete-button" - @click.stop="deleteConfirmation = true" - > - <v-icon - color="grey darken-1" - size="20px" - > - delete_forever - </v-icon> - </v-btn> - <v-btn - v-if="editable" - text - icon - absolute - class="edit-button" - @click.stop="toggleEditing()" - > - <v-icon - color="grey darken-1" - size="20px" - > - edit - </v-icon> - </v-btn> - </div> - </div> - <template v-if="editing"> - <v-textarea - v-model="editedText" - name="solution-comment-edit" - label="Here you can edit your comment" - rows="2" - outlined - autofocus - auto-grow - hide-details - class="mx-2" - @keyup.enter.ctrl.exact="submitEdit" - @keyup.esc="editing = false" - @focus="selectInput($event)" - /> - <v-btn - id="submit-comment" - color="success" - @click="submitEdit" - > - <v-icon>check</v-icon>Submit - </v-btn> - <v-btn - id="cancel-comment" - @click="editing = false" - > - <v-icon>cancel</v-icon>cancel - </v-btn> - </template> - - <v-dialog - v-model="deleteConfirmation" - max-width="max-content" - > - <v-card - class="text-center pa-2" - > - <v-card-title class="title"> - Delete permanently? - </v-card-title> - <v-card-actions> - <v-btn - :id="`confirm-delete-comment`" - color="red lighten-1" - @click="deleteComment" - > - delete - </v-btn> - <v-btn @click="deleteConfirmation = false"> - cancel - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> - </div> -</template> - -<script lang="ts"> -import {Vue, Component, Prop, Provide} from 'vue-property-decorator' -import { UI } from '@/store/modules/ui' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import { Authentication } from '../../../store/modules/authentication' -import * as api from '@/api' -import { actions } from '@/store/actions' - -@Component -export default class SolutionComment extends Vue { - @Prop({ - type: Number, - required: true - }) pk!: number - @Prop({ - type: String, - required: true - }) text!: string - @Prop({ - type: String, - required: false - }) created?: string - @Prop({ - type: String, - required: true - }) ofUser!: string - @Prop({ - type: Number, - required: true - }) ofLine!: number - - editing: boolean = false - editedText: string = '' - deleteConfirmation: boolean = false - - get parsedCreated() { - if (this.created) { - return new Date(this.created).toLocaleString() - } else { - return 'Just now' - } - } - - get deletable() { - return Authentication.state.user.username === this.ofUser || Authentication.isReviewer - } - - get editable() { - return Authentication.state.user.username === this.ofUser - } - - toggleEditing() { - this.editing = !this.editing - this.editedText = this.text - } - - async deleteComment() { - await api.deleteSolutionComment(this.pk) - this.$emit('update-submission-type') - } - - async submitEdit() { - await api.patchSolutionComment({pk: this.pk, text: this.editedText}) - this.editing = false - this.$emit('update-submission-type') - } - - selectInput (event: Event) { - if (event !== null) { - const target = event.target as HTMLTextAreaElement - target.select() - } - } -} -</script> - -<style scoped> - .tip { - width: 0px; - height: 0px; - position: absolute; - background: transparent; - border: 10px solid; - } - .tip-up { - top: -22px; /* Same as body margin top + border */ - left: 10px; - border-right-color: transparent; - border-left-color: transparent; - border-top-color: transparent; - } - .dialog-box .body { - cursor: pointer; - position: relative; - height: auto; - margin: 20px 10px 10px 10px; - padding: 5px; - border-radius: 0px; - border: 2px solid; - } - .body .message { - min-height: 30px; - border-radius: 3px; - font-size: 14px; - line-height: 1.5; - } - .delete-button { - bottom: -12px; - left: -42px; - } - .edit-button { - bottom: 15px; - left: -42px; - } - .comment-created { - position: absolute; - font-size: 10px; - right: 4px; - top: -20px; - } - .of-user { - position: absolute; - font-size: 13px; - top: -20px; - left: 50px; - } -</style> diff --git a/grady/frontend/src/components/subscriptions/SubscriptionEnded.vue b/grady/frontend/src/components/subscriptions/SubscriptionEnded.vue deleted file mode 100644 index d3e6d667..00000000 --- a/grady/frontend/src/components/subscriptions/SubscriptionEnded.vue +++ /dev/null @@ -1,43 +0,0 @@ -<template> - <v-card - id="subscription-ended" - class="mx-auto center-page" - > - <v-card-title class="title"> - No submissions left - </v-card-title> - <v-card-text> - All submissions of this type in the current stage have been corrected. If you've - been validating feedback or <br> - reviewing, new submissions might be available in the future. - If that is the case they will appear clickable in the sidebar again. - </v-card-text> - <v-card-actions class="text-center"> - <v-btn to="/home"> - Overview - </v-btn> - <v-btn to="/feedback"> - Feedback History - </v-btn> - </v-card-actions> - </v-card> -</template> - -<script lang="ts"> - -import Vue from 'vue' -import Component from 'vue-class-component' -import store from '@/store/store' - -@Component -export default class SubscriptionEnded extends Vue { -} - -</script> - -<style scoped> - .center-page { - width: fit-content; - top: 30vh; - } -</style> diff --git a/grady/frontend/src/components/subscriptions/SubscriptionForList.vue b/grady/frontend/src/components/subscriptions/SubscriptionForList.vue deleted file mode 100644 index 688f8add..00000000 --- a/grady/frontend/src/components/subscriptions/SubscriptionForList.vue +++ /dev/null @@ -1,74 +0,0 @@ -<template> - <v-list-item - exact - :to="correctionRoute" - style="width: 100%" - > - <!-- dynamically set css class depending on active --> - <v-list-item-content - :class="{'inactive-subscription': !active}" - class="mr-3 subscription" - > - {{ name }} - </v-list-item-content> - <v-list-item-action-text> - left: {{ available }} - </v-list-item-action-text> - </v-list-item> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop } from 'vue-property-decorator' -import { Assignment , FeedbackStageEnum } from '@/models' -import { Assignments } from '@/store/modules/assignments' - -@Component -export default class SubscriptionForList extends Vue { - @Prop({ type: String, required: true }) name!: string - @Prop({ type: String, required: true }) sub_type_pk!: string - - get active () { - return !!this.available - } - - get available () { - const stage = Assignments.state.assignmentCreation.stage - const sub_type = this.sub_type_pk - const forSubType = Assignments.state.submissionsLeft[sub_type] - const forStage = forSubType !== undefined ? forSubType[stage] : undefined - return forStage - } - - get correctionRoute() { - if (!this.active) - return undefined - - const group = Assignments.state.assignmentCreation.group - const group_pk = group !== undefined ? group.pk : undefined - - return { - name: 'correction', - params: { - sub_type: this.sub_type_pk, - stage: Assignments.state.assignmentCreation.stage, - group: group_pk || undefined, - } - } - } -} -</script> - -<style scoped> - .inactive-subscription { - cursor: default; - color: #B5B5B5; - } - - .subscription { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -</style> diff --git a/grady/frontend/src/components/subscriptions/SubscriptionList.vue b/grady/frontend/src/components/subscriptions/SubscriptionList.vue deleted file mode 100644 index 9aff883b..00000000 --- a/grady/frontend/src/components/subscriptions/SubscriptionList.vue +++ /dev/null @@ -1,189 +0,0 @@ -<template> - <v-card name="subscription-list"> - <v-toolbar - color="teal" - :dense="sidebar" - > - <v-app-bar-nav-icon><v-icon>assignment</v-icon></v-app-bar-nav-icon> - <v-toolbar-title - v-if="!sidebar" - style="min-width: fit-content;" - > - Tasks - </v-toolbar-title> - <v-spacer /> - <v-select - v-model="selectedGroup" - :items="groups" - item-text="name" - return-object - hide-details - solo - flat - background-color="teal" - /> - <v-btn - icon - @click="getAvailableSubmissionCount(false)" - > - <v-icon v-if="!updating"> - refresh - </v-icon> - <v-progress-circular - v-else - indeterminate - color="black" - size="20" - /> - </v-btn> - </v-toolbar> - <v-tabs - v-if="showDetail" - v-model="selectedStage" - grow - color="black" - background-color="teal lighten-1" - > - <v-tab - v-for="(item, i) in stagesReadable" - :key="i" - > - {{ item }} - </v-tab> - <v-tab-item - v-for="(stage, i) in stages" - :key="i" - > - <subscriptions-for-stage - :id="`stage-${i}`" - :stage="stage" - /> - </v-tab-item> - </v-tabs> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop, Watch } from 'vue-property-decorator' -import { mapGetters, mapActions, mapState } from 'vuex' -import { UI } from '@/store/modules/ui' -import { actions } from '@/store/actions' -import SubscriptionForList from '@/components/subscriptions/SubscriptionForList.vue' -import SubscriptionsForStage from '@/components/subscriptions/SubscriptionsForStage.vue' -import { Assignments } from '@/store/modules/assignments' -import store from '../../store/store' -import { FeedbackStageEnum, Group } from '../../models' -import { Authentication } from '../../store/modules/authentication' -import { ConfigModule } from '../../store/modules/config' - -@Component({ - name: 'subscription-list', - components: { - SubscriptionsForStage, - SubscriptionForList, - }, -}) -export default class SubscriptionList extends Vue { - @Prop({type: Boolean, default: false}) sidebar!: boolean - - updating = false - timer = 0 - - get stages () { return Assignments.availableStages } - get stagesReadable () { return Assignments.availableStagesReadable } - get showDetail () { - return !this.sidebar || (this.sidebar && !UI.state.sideBarCollapsed) - } - get groups () { - return Assignments.state.groups.slice() - .filter(group => { - return group.exam === null || group.exam.pk === ConfigModule.state.config.examId - }) - .sort((a, b) => { - const matches_a = a.name.match(/(\d+)/) - const number_a = Number(matches_a === null ? 0 : matches_a[1]) - - const matches_b = b.name.match(/(\d+)/) - const number_b = Number(matches_b === null ? 0 : matches_b[1]) - - return (number_a<number_b?-1:(number_a>number_b?1:0)) - }) - } - - get selectedStage() { - const val = Assignments.state.assignmentCreation.stage - switch (val) { - case FeedbackStageEnum.Creation: return 0 - case FeedbackStageEnum.Validation: return 1 - case FeedbackStageEnum.Review: return 2 - default: - throw new Error(`Illegal value ${val} in get selectedStage`) - } - } - - set selectedStage(val) { - const map_number_to_stage = (val: number): FeedbackStageEnum => { - switch (val) { - case 0: return FeedbackStageEnum.Creation - case 1: return FeedbackStageEnum.Validation - case 2: return FeedbackStageEnum.Review - default: - throw new Error(`Illegal value ${val} in set selectedStage`) - } - } - Assignments.SET_CREATE_STAGE(map_number_to_stage(val)) - } - - get selectedGroup() { - return Assignments.state.assignmentCreation.group - } - - set selectedGroup(val: Group | undefined) { - if (val === undefined) { - throw new Error('Setting create group to undefined is not allowed') - } - Assignments.SET_CREATE_GROUP(val) - Assignments.getAvailableSubmissionCounts() - } - - - async getAvailableSubmissionCount (silent: boolean) { - if (silent === false) { - this.updating = true - } - await Assignments.getAvailableSubmissionCounts() - this.updating = false - } - - beforeDestroy() { - clearInterval(this.timer) - } - - created() { - const ownGroup = Authentication.state.user.exerciseGroups[0] - if (ownGroup !== undefined) { - this.selectedGroup = ownGroup - } - - const submissionTypes = actions.updateSubmissionTypes() - const groups = Assignments.getGroups() - Promise.all([submissionTypes, groups]).then(() => { - this.getAvailableSubmissionCount(false) - - this.timer = setInterval(() => { - this.getAvailableSubmissionCount(true) - }, 30 * 1e3) - }) - - Promise.all([submissionTypes]).then(() => { - Assignments.cleanAssignments() - }) - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/subscriptions/SubscriptionsForStage.vue b/grady/frontend/src/components/subscriptions/SubscriptionsForStage.vue deleted file mode 100644 index e6ab066d..00000000 --- a/grady/frontend/src/components/subscriptions/SubscriptionsForStage.vue +++ /dev/null @@ -1,48 +0,0 @@ -<template> - <v-list :dense="dense"> - <div> - <div - v-for="subType in submissionTypes" - :key="subType.pk" - > - <subscription-for-list - :name="subType.name" - :sub_type_pk="subType.pk" - :available="1" - /> - </div> - </div> - </v-list> -</template> - -<script> -import SubscriptionForList from '@/components/subscriptions/SubscriptionForList' -import { Assignments } from '@/store/modules/assignments' -import store from '../../store/store' -import { ConfigModule } from '../../store/modules/config' -export default { - name: 'SubscriptionsForStage', - components: { - SubscriptionForList - }, - props: { - stage: { - type: String, - required: true - }, - dense: { - type: Boolean, - default: false - } - }, - computed: { - submissionTypes () { return Object.values(store.state.submissionTypes).filter(submissionType => { - return submissionType.examType.moduleReference === ConfigModule.state.config.currentExam - })} - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/components/tutor_list/RoleSelect.vue b/grady/frontend/src/components/tutor_list/RoleSelect.vue deleted file mode 100644 index e5236334..00000000 --- a/grady/frontend/src/components/tutor_list/RoleSelect.vue +++ /dev/null @@ -1,48 +0,0 @@ -<template> - <v-select - v-model="value" - :items="roleOptions" - filled - dense - hide-details - :loading="loading" - :disabled="isForSelf" - @change="updateRole" - /> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { Prop, Watch } from 'vue-property-decorator' -import { Tutor, UserAccount } from '@/models' -import { changeUserRole } from '@/api' -import { Authentication } from '@/store/modules/authentication' - -@Component -export default class RoleSelect extends Vue { - @Prop({ type: Object, required: true }) readonly tutor!: Tutor - - roleOptions = [UserAccount.RoleEnum.Reviewer, UserAccount.RoleEnum.Tutor] - value = this.tutor.role - previousValue = this.value - loading = false - - get isForSelf() { - return Authentication.state.user.pk === this.tutor.pk - } - - async updateRole(newRole: UserAccount.RoleEnum) { - this.loading = true - try { - await changeUserRole(this.tutor.pk, newRole) - this.previousValue = newRole - } catch (error) { - this.value = this.previousValue - } finally { - this.loading = false - } - } -} -</script> - diff --git a/grady/frontend/src/components/tutor_list/TutorList.vue b/grady/frontend/src/components/tutor_list/TutorList.vue deleted file mode 100644 index 229d0427..00000000 --- a/grady/frontend/src/components/tutor_list/TutorList.vue +++ /dev/null @@ -1,224 +0,0 @@ -<template> - <v-card> - <v-card-title class="title"> - Tutors - <v-spacer /> - <v-btn - icon - @click="refresh" - > - <v-icon>refresh</v-icon> - </v-btn> - </v-card-title> - <v-data-table - :headers="headers" - :items="tutors" - item-key="pk" - > - <template #item.reservedSubmissions="{ item }"> - {{ item.reservedSubmissions }} - <v-tooltip - v-if="item.reservedSubmissions" - top - > - <template #activator="{ on }"> - <v-icon - small - v-on="on" - @click="deleteAssignmentsOfTutor(item)" - > - clear - </v-icon> - </template> - <span>Free locked submissions</span> - </v-tooltip> - </template> - <template #item.exerciseGroups="{ item }"> - <v-select - v-model="item.exerciseGroups" - item-text="name" - item-value="pk" - :items="groups" - label="Set Groups" - single-line - return-object - multiple - chips - dense - hide-details - filled - @change="setExerciseGroups($event, item)" - /> - </template> - <template #item.isActive="{ item }"> - <v-btn - v-if="canRevokeAccess(item.username)" - icon - @click="changeActiveStatus(item)" - > - <v-tooltip top> - <template #activator="{ on }"> - <v-icon - v-if="item.isActive" - small - v-on="on" - > - lock_open - </v-icon> - <v-icon - v-else - small - v-on="on" - > - lock - </v-icon> - </template> - <span v-if="item.isActive">Revoke access</span> - <span v-else>Grant access</span> - </v-tooltip> - </v-btn> - </template> - <template #item.role="{ item }"> - <role-select :tutor="item" /> - </template> - </v-data-table> - </v-card> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { changeActiveForUser, setGroups, fetchUserGroups, fetchUser } from '@/api' -import { actions } from '@/store/actions' -import { Authentication } from '@/store/modules/authentication' -import { TutorOverview } from '@/store/modules/tutor-overview' -import { Group, Tutor, UserAccount } from '@/models' -import { Assignments } from '@/store/modules/assignments' -import RoleSelect from './RoleSelect.vue' -import { ConfigModule } from '@/store/modules/config' - -@Component({ components: { RoleSelect } }) -export default class TutorList extends Vue { - headers = [ - { - text: 'Name', - align: 'left', - value: 'username' - }, - { - text: '# created', - align: 'right', - value: 'feedbackCreated' - }, - { - text: '# validated', - align: 'right', - value: 'feedbackValidated' - }, - { - text: '# locked submissions', - align: 'right', - value: 'reservedSubmissions' - }, - { - text: 'Exercise Groups', - align: 'right', - value: 'exerciseGroups' - }, - { - text: 'Has Access', - align: 'right', - value: 'isActive' - }, - { - text: 'Role', - value: 'role' - } - ] - - get tutors () { - var tlist = TutorOverview.state.tutors.map(tutor => { - var groups: Group[] = [] - this.userAccountGroups(tutor).then(function(value) { - groups = value // Success! - }, (reason) => { - this.$notify({ - title: 'Error', - text: `Unable to fetch tutors: ${reason}`, - type: 'error' - }) - return [] - }) - const reservedSubmissions = TutorOverview.state.activeAssignments[tutor.pk] - return { - ...tutor, - reservedSubmissions: reservedSubmissions ? reservedSubmissions.length : 0, - } - }) - return tlist - } - - get groups () { - return Assignments.state.groups.slice() - .filter(group => { - return group.exam === null || group.exam.pk === ConfigModule.state.config.examId - }) - .sort((a, b) => { - const matches_a = a.name.match(/(\d+)/) - const number_a = Number(matches_a === null ? 0 : matches_a[1]) - - const matches_b = b.name.match(/(\d+)/) - const number_b = Number(matches_b === null ? 0 : matches_b[1]) - - return (number_a<number_b?-1:(number_a>number_b?1:0)) - }) - } - - - async userAccountGroups(tutor: Tutor) { - const groups = await (await fetchUser(tutor.pk)).exerciseGroups - return groups - } - - changeActiveStatus (tutor: Tutor) { - changeActiveForUser(tutor.pk, !tutor.isActive).then(() => { - TutorOverview.getTutors() - }).catch(() => { - this.$notify({ - title: 'Error', - text: `Unable to change active status of ${tutor.username}`, - type: 'error' - }) - }) - } - - setExerciseGroups (groups: Group[], tutor: Tutor){ - setGroups(tutor.pk, groups).then(() => { - TutorOverview.getTutors() - }).catch(() => { - this.$notify({ - title: 'Error', - text: `Unable to change exercise-groups of ${tutor.username}`, - type: 'error' - }) - }) - } - - deleteAssignmentsOfTutor (tutor: Tutor) { - TutorOverview.deleteActiveAssignmentsOfTutor(tutor) - } - - refresh () { - TutorOverview.getTutors() - TutorOverview.getActiveAssignments() - } - - canRevokeAccess (username: string) { - return Authentication.state.user.username !== username - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/main.ts b/grady/frontend/src/main.ts deleted file mode 100644 index ec119eaa..00000000 --- a/grady/frontend/src/main.ts +++ /dev/null @@ -1,38 +0,0 @@ - -import './class-component-hooks' - -import Vue from 'vue' -import store from './store/store' -import App from './App.vue' -import router from './router/index' -import Vuetify from 'vuetify' -import Notifications from 'vue-notification' -import Clipboard from 'v-clipboard' - -import 'vuetify/dist/vuetify.min.css' -import 'highlight.js/styles/atom-one-light.css' - -import '@/util/shortkeys' - -Vue.use(Vuetify) - -Vue.use(Clipboard) -Vue.use(Notifications) - -Vue.config.productionTip = false - -const el = process.env.NODE_ENV === 'test' ? undefined : '#app' - -const vuetify = new Vuetify({ - icons: { - iconfont: 'md', - }, -}) - -export default new Vue({ - vuetify, - el: el, - router: router, - store, - render: h => h(App) -}).$mount(el) diff --git a/grady/frontend/src/models.ts b/grady/frontend/src/models.ts deleted file mode 100644 index eb2d840d..00000000 --- a/grady/frontend/src/models.ts +++ /dev/null @@ -1,922 +0,0 @@ -export interface Config { - timeDelta: number - version: string, - currentExam: string, - examId: string, - instanceSettings: { - [config: string]: boolean, - } -} - -export interface Group { - pk: string, - name: string, - exam: Exam -} - -export interface CreateAssignment { - submissionType: string - group?: string - stage: FeedbackStageEnum -} - -/** - * - * @export - * @interface Assignment - */ -export interface Assignment { - /** - * - * @type {string} - * @memberof Assignment - */ - pk: string - /** - * - * @type {string} - * @memberof Assignment - */ - submission?: string | SubmissionAssignment - /** - * - * @type {boolean} - * @memberof Assignment - */ - isDone?: boolean - /** - * - * @type {string} - * @memberof Assignment - */ - owner?: string - /** - * - * @type {string} - * @memberof Assignment - */ - stage?: FeedbackStageEnum - - ofTutor?: string - - feedback?: Feedback - -} - -export interface SubmissionAssignment { - text: string, - type: string - full_score: number, - tests: Test[] -} - -/** - * - * @export - * @interface Exam - */ -export interface Exam { - /** - * - * @type {string} - * @memberof Exam - */ - pk: string - /** - * - * @type {string} - * @memberof Exam - */ - moduleReference: string - /** - * - * @type {number} - * @memberof Exam - */ - totalScore: number - /** - * - * @type {number} - * @memberof Exam - */ - passScore: number - /** - * - * @type {boolean} - * @memberof Exam - */ - passOnly?: boolean -} - -/** - * - * @export - * @interface Feedback - */ -export interface Feedback { - /** - * - * @type {number} - * @memberof Feedback - */ - pk: number - /** - * - * @type {string} - * @memberof Feedback - */ - ofSubmission?: string - /** - * - * @type {boolean} - * @memberof Feedback - */ - ofStudent?: string - isFinal?: boolean - /** - * - * @type {number} - * @memberof Feedback - */ - score?: number - /** - * - * @type {Array<FeedbackComment>} - * @memberof Feedback - */ - feedbackLines?: {[lineNo: number]: FeedbackComment[]} - /** - * - * @type {Date} - * @memberof Feedback - */ - created?: string - /** - * - * @type {Date} - * @memberof Feedback - */ - modified?: string - /** - * - * @type {string} - * @memberof Feedback - */ - ofSubmissionType: SubmissionType - /** - * - * @type {SubmissionType} - * @memberof Feedback - */ - feedbackStageForUser?: string, - labels: number[], -} - -/** - * - * @export - * @interface CreateUpdateFeedback - */ -export interface CreateUpdateFeedback { - /** - * - * @type {number} - * @memberof Feedback - */ - pk: number - /** - * - * @type {string} - * @memberof Feedback - */ - ofSubmission?: string - /** - * - * @type {boolean} - * @memberof Feedback - */ - isFinal?: boolean - /** - * - * @type {number} - * @memberof Feedback - */ - score?: number - /** - * - * @type {Array<FeedbackComment>} - * @memberof Feedback - */ - feedbackLines: {[lineNo: number]: FeedbackComment} - /** - * - * @type {Date} - * @memberof Feedback - */ - created?: string - /** - * - * @type {string} - * @memberof Feedback - */ - ofSubmissionType?: string - /** - * - * @type {string} - * @memberof Feedback - */ - feedbackStageForUser?: string, - labels: number[], -} - -/** - * - * @export - * @Comment - */ -export interface FeedbackComment { - /** - * - * @type {string} - * @memberof FeedbackComment - */ - pk: string - /** - * - * @type {string} - * @memberof FeedbackComment - */ - text: string - /** - * - * @type {Date} - * @memberof FeedbackComment - */ - modified?: string - /** - * - * @type {string} - * @memberof FeedbackComment - */ - ofTutor?: string - /** - * - * @type {number} - * @memberof FeedbackComment - */ - ofLine?: number - /** - * - * @type {boolean} - * @memberof FeedbackComment - */ - visibleToStudent?: boolean - labels: number[] - updated?: boolean -} - -/** - * - * @export - * @interface FeedbackLabel - */ -export interface FeedbackLabel { - pk: number - name: string - description: string - colour: string -} - -/** - * - * @export - * @interface Credentials - */ -export interface Credentials { - /** - * - * @type {string} - * @memberof JSONWebToken - */ - username: string - /** - * - * @type {string} - * @memberof JSONWebToken - */ - password: string -} - -export interface JSONWebToken { - token: string -} - -export interface Statistics { - submissionsPerType: number, - submissionsPerStudent: number, - currentMeanScore: number, - submissionTypeProgress: Array<SubmissionTypeProgress> -} - -export interface LabelStatisticsForSubType { - /** Contains the count of the different labels under their pk */ - [label_pk: number]: number, - /** The pk of the corresponding SubmissionType */ - pk: string -} - -/** - * - * @export - * @interface StudentInfo - */ -export interface StudentInfo { - /** - * - * @type {string} - * @memberof StudentInfo - */ - pk: string - /** - * - * @type {string} - * @memberof StudentInfo - */ - name?: string - /** - * - * @type {string} - * @memberof StudentInfo - */ - user: string - /** - * - * @type {string} - * @memberof StudentInfo - */ - matrikelNo?: string - /** - * - * @type {Exam} - * @memberof StudentInfo - */ - exam: Exam - /** - * - * @type {Array<SubmissionList>} - * @memberof StudentInfo - */ - submissions: Array<SubmissionList> - /** - * - * @type {boolean} - * @memberof StudentInfo - */ - passesExam?: boolean -} - -/** - * - * @export - * @interface StudentInfoForListView - */ -export interface StudentInfoForListView { - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - pk: string - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - name?: string - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - user?: string - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - userPk?: string - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - exam?: string - /** - * - * @type {Array<SubmissionNoTextFields>} - * @memberof StudentInfoForListView - */ - submissions: Array<SubmissionNoTextFields> - /** - * - * @type {string} - * @memberof StudentInfoForListView - */ - matrikelNo?: string - /** - * - * @type {boolean} - * @memberof StudentInfoForListView - */ - passesExam?: boolean - /** - * - * @type {boolean} - * @memberof StudentInfoForListView - */ - isActive: boolean -} - -/** - * - * @export - * @interface Submission - */ -export interface Submission { - /** - * - * @type {string} - * @memberof Submission - */ - pk: string - /** - * - * @type {SubmissionType} - * @memberof Submission - */ - type: SubmissionType - /** - * - * @type {string} - * @memberof Submission - */ - text?: string - /** - * - * @type {VisibleCommentFeedback} - * @memberof Submission - */ - feedback: VisibleCommentFeedback - /** - * - * @type {Array<Test>} - * @memberof Submission - */ - tests: Array<Test>, - - sourceCodeAvailable: boolean -} - -/** - * - * @export - * @interface SubmissionList - */ -export interface SubmissionList { - /** - * - * @type {string} - * @memberof SubmissionList - */ - pk: string - /** - * - * @type {SubmissionTypeList} - * @memberof SubmissionList - */ - type: SubmissionTypeList - /** - * - * @type {Feedback} - * @memberof SubmissionList - */ - feedback: Feedback -} - -/** - * - * @export - * @interface SubmissionNoTextFields - */ -export interface SubmissionNoTextFields { - /** - * - * @type {string} - * @memberof SubmissionNoTextFields - */ - pk: string - /** - * - * @type {string} - * @memberof SubmissionNoTextFields - */ - type: string - /** - * - * @type {string} - * @memberof SubmissionNoTextFields - */ - score?: string - /** - * - * @type {string} - * @memberof SubmissionNoTextFields - */ - final?: string - /** - * - * @type {string} - * @memberof SubmissionNoTextFields - */ - fullScore?: string -} - -/** - * - * @export - * @interface SubmissionNoType - */ -export interface SubmissionNoType { - /** - * - * @type {string} - * @memberof SubmissionNoType - */ - pk: string - /** - * - * @type {string} - * @memberof SubmissionNoType - */ - type: string - /** - * - * @type {string} - * @memberof SubmissionNoType - */ - fullScore?: string - /** - * - * @type {string} - * @memberof SubmissionNoType - */ - text?: string - /** - * - * @type {Feedback} - * @memberof SubmissionNoType - */ - feedback?: Feedback - ofStudent?:string - /** - * - * @type {Array<Test>} - * @memberof SubmissionNoType - */ - tests: Array<Test>, - - sourceCodeAvailable: boolean -} - -/** - * - * @export - * @interface SubmissionType - */ -export interface SubmissionType { - /** - * - * @type {string} - * @memberof SubmissionType - */ - pk: string - /** - * - * @type {string} - * @memberof SubmissionType - */ - name: string - /** - * - * @type {number} - * @memberof SubmissionType - */ - examType: Exam - /** - * - * @type {Exam} - * @memberof SubmissionType - */ - fullScore?: number - /** - * - * @type {string} - * @memberof SubmissionType - */ - description: string - /** - * - * @type {string} - * @memberof SubmissionType - */ - solution?: string - /** - * - * @type {string} - * @memberof SubmissionType - */ - programmingLanguage?: SubmissionType.ProgrammingLanguageEnum - - solutionComments: {[ofLine: number]: SolutionComment[]} -} - -export interface AvailableSubmissionCounts { - [submissionType: string]: { - [stage: string]: number - } -} - -export interface SolutionComment { - pk: number, - created: string, - ofLine: number, - ofSubmissionType: string, - ofUser: string, - text: string -} - -/** - * @export - * @namespace SubmissionType - */ -export namespace SubmissionType { - /** - * @export - * @enum {string} - */ - export enum ProgrammingLanguageEnum { - C = 'c', - Java = 'java', - Markdown = 'markdown' - } -} - -/** - * - * @export - * @interface SubmissionTypeList - */ -export interface SubmissionTypeList { - /** - * - * @type {string} - * @memberof SubmissionTypeList - */ - pk: string - - /** - * - * @type {string} - * @memberof SubmissionTypeList - */ - name: string - /** - * - * @type {number} - * @memberof SubmissionTypeList - */ - fullScore?: number -} - -export interface SubmissionTypeProgress { - pk: string - name: string - feedbackFinal: number - feedbackInValidation: number - feedbackInConflict: number - submissionCount: number -} - - -/** - * @export - * @enum {string} - */ -export enum FeedbackStageEnum { - Creation = 'feedback-creation', - Validation = 'feedback-validation', - Review = 'feedback-review' -} - -/** - * - * @export - * @interface Test - */ -export interface Test { - /** - * - * @type {string} - * @memberof Test - */ - pk: string - /** - * - * @type {string} - * @memberof Test - */ - name: string - /** - * - * @type {string} - * @memberof Test - */ - label: string - /** - * - * @type {string} - * @memberof Test - */ - annotation: string -} - -/** - * - * @export - * @interface Tutor - */ -export interface Tutor { - /** - * - * @type {string} - * @memberof Tutor - */ - pk: string - /** - * - * @type {string} - * @memberof Tutor - */ - password?: string - /** - * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. - * @type {boolean} - * @memberof Tutor - */ - isActive?: boolean - /** - * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. - * @type {string} - * @memberof Tutor - */ - username: string - /** - * - * @type {string} - * @memberof Tutor - */ - feedbackCreated?: string - /** - * - * @type {string} - * @memberof Tutor - */ - feedbackValidated?: string - /** - * - * @type {Group} - * @memberof Tutor - */ - exerciseGroups: Group[] - - /** - * @type {string} - * @memberof Tutor - */ - role: UserAccount.RoleEnum -} - -/** - * - * @export - * @interface UserAccount - */ -export interface UserAccount { - /** - * - * @type {string} - * @memberof UserAccount - */ - pk: string - /** - * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. - * @type {string} - * @memberof UserAccount - */ - username?: string - /** - * - * @type {string} - * @memberof UserAccount - */ - role?: UserAccount.RoleEnum - /** - * - * @type {boolean} - * @memberof UserAccount - */ - isAdmin?: boolean - /** - * - * @type {string} - * @memberof UserAccount - */ - password?: string - exerciseGroups: Group[] -} - -/** - * @export - * @namespace UserAccount - */ -export namespace UserAccount { - /** - * @export - * @enum {string} - */ - export enum RoleEnum { - Student = 'Student', - Tutor = 'Tutor', - Reviewer = 'Reviewer' - } -} - -/** - * - * @export - * @interface VisibleCommentFeedback - */ -export interface VisibleCommentFeedback { - /** - * - * @type {number} - * @memberof VisibleCommentFeedback - */ - pk: number - /** - * - * @type {string} - * @memberof VisibleCommentFeedback - */ - ofSubmission: string - /** - * - * @type {boolean} - * @memberof VisibleCommentFeedback - */ - isFinal?: boolean - /** - * - * @type {number} - * @memberof VisibleCommentFeedback - */ - score?: number - /** - * - * @type {string} - * @memberof VisibleCommentFeedback - */ - feedbackLines?: string - /** - * - * @type {Date} - * @memberof VisibleCommentFeedback - */ - created?: Date - /** - * - * @type {string} - * @memberof VisibleCommentFeedback - */ - ofSubmissionType?: string - - labels: number[] -} - -export interface GitlabRelease { - - tag_name: string - - description_html: string - -} diff --git a/grady/frontend/src/pages/ExamSelectionPage.vue b/grady/frontend/src/pages/ExamSelectionPage.vue deleted file mode 100644 index fcfc1e58..00000000 --- a/grady/frontend/src/pages/ExamSelectionPage.vue +++ /dev/null @@ -1,121 +0,0 @@ -<template> - <v-container fill-height> - <v-app-bar - app - dense - fixed - dark - color="indigo darken-4" - class="grady-toolbar" - > - <router-link to="/home"> - <v-app-bar-title>Grady</v-app-bar-title> - </router-link> - <span class="pl-2 grady-speak">{{ gradySpeak }}</span> - <v-spacer /> - <v-divider vertical /> - <user-options /> - </v-app-bar> - <v-layout - align-center - justify-center - > - <v-card - class="mx-auto" - max-width="600" - min-width="500" - > - <v-card-title> - <h1>Select Exam<br></h1> - </v-card-title> - <v-card-text> - <p style="color:grey;"> - You can always come back and change your selection - </p> - </v-card-text> - <v-list> - <v-list-item - v-for="examType in examTypes" - id="listItem" - :key="examType.pk" - @click="selectExamType(examType)" - > - {{ examType.moduleReference }} - </v-list-item> - </v-list> - </v-card> - </v-layout> - </v-container> -</template> - -<script> -import { mapActions, mapState } from 'vuex' -import RegisterDialog from '@/components/RegisterDialog' -import { Authentication as Auth } from '@/store/modules/authentication' -import { ConfigModule } from '../store/modules/config' -import store from '@/store/store' -import { getters } from '@/store/getters' -import { actions } from '@/store/actions' -import ax, { fetchExamTypes } from '@/api' -import { Config } from '@/models' -import UserOptions from '@/components/UserOptions' - - -export default { - name: 'ExamSelection', - components: { UserOptions }, - data () { - return { - examTypes: [], - } - }, - computed: { - msg () { return Auth.state.message }, - userRole () { return Auth.state.user.role }, - gradySpeak () { return Auth.gradySpeak }, - }, - created () { - this.loadExamTypes() - }, - methods: { - selectExamType (examType) { - ConfigModule.SET_CURRENT_EXAM(examType.moduleReference) - ConfigModule.SET_CURRENT_EXAM_ID(examType.pk) - this.$router.push({ name: 'home' }) - }, - logout () { - actions.logout() - }, - async loadExamTypes () { - try { - const response = (await ax.get('/api/examtype/')).data - this.examTypes = response - if (this.examTypes.length === 0) { - this.$router.push({ name: 'home' }) - } - else if (this.examTypes.length === 1) { - this.selectExamType(this.examTypes[0]) - } - } catch (ex) { - console.log(ex) - } - }, - } -} -</script> - -<style scoped> - .v-btn { - margin: 0px; - } - - .btn-container { - display: flex; - flex-wrap: nowrap; - justify-content: space-around; - } - - .grady-toolbar { - font-weight: bold; - } -</style> diff --git a/grady/frontend/src/pages/LayoutSelector.vue b/grady/frontend/src/pages/LayoutSelector.vue deleted file mode 100644 index bb2e9d04..00000000 --- a/grady/frontend/src/pages/LayoutSelector.vue +++ /dev/null @@ -1,58 +0,0 @@ -<template> - <div> - <component :is="layout" /> - <v-main class="main-content"> - <router-view /> - </v-main> - </div> -</template> - -<script> -import { mapGetters } from 'vuex' -import TutorLayout from '@/pages/tutor/TutorLayout' -import StudentLayout from '@/pages/student/StudentLayout' -import ReviewerLayout from '@/pages/reviewer/ReviewerLayout' -import { Authentication } from '@/store/modules/authentication' - -export default { - name: 'LayoutSelector', - components: { - ReviewerLayout, - StudentLayout, - TutorLayout }, - computed: { - isStudent () { return Authentication.isStudent }, - isTutor () { return Authentication.isTutor }, - isReviewer () { return Authentication.isReviewer }, - layout () { - if (this.isStudent) { - return 'student-layout' - } else if (this.isTutor) { - return 'tutor-layout' - } else if (this.isReviewer) { - return 'reviewer-layout' - } - - return undefined - } - } -} -</script> - -<style> - html { - /* Vuetify always shows the scrollbar by default. This disables it. */ - overflow-y: auto !important; - } -</style> - -<style scoped> - /* Move the scrollbar below the header so it doesn't jump around when no scrollbar is shown. */ - .main-content { - /* 48px is the vuetify header size. */ - height: calc(100vh - 48px); - margin-top: 48px; - padding-top: 0 !important; - overflow: auto; - } -</style> diff --git a/grady/frontend/src/pages/Login.vue b/grady/frontend/src/pages/Login.vue deleted file mode 100644 index 846f8c4d..00000000 --- a/grady/frontend/src/pages/Login.vue +++ /dev/null @@ -1,158 +0,0 @@ -<template> - <v-container class="fill-height"> - <v-row - align="center" - justify="center" - > - <v-dialog - v-model="registerDialog" - class="pa-4" - scrollable - max-width="600" - > - <register-dialog @registered="registered($event)" /> - </v-dialog> - <v-col - cols="12" - sm="12" - md="10" - lg="7" - > - <img - src="https://grady.informatik.uni-goettingen.de/static/img/brand.svg" - class="grady-logo" - > - </v-col> - <v-divider - vertical - inset - class="ma-4" - /> - <v-col - class="text-center" - cols="8" - sm="6" - md="4" - lg="2" - > - <h2 class="pt-3"> - Log in - </h2> - <v-alert - :value="msg.length !== 0" - outlined - color="error" - transition="fade-transition" - > - {{ msg }} - </v-alert> - <p v-if="msg.length === 0"> - But I corrected them, sir. - </p> - <v-form - @submit.prevent="submit" - > - <v-text-field - id="username" - v-model="credentials.username" - label="Username" - required - autofocus - /> - <v-text-field - id="password" - v-model="credentials.password" - label="Password" - type="password" - required - /> - <v-row class="btn-container"> - <v-btn - id="register" - @click="registerDialog = true" - > - Register - </v-btn> - <v-btn - :loading="loading" - type="submit" - color="primary" - > - Access - </v-btn> - </v-row> - </v-form> - </v-col> - </v-row> - </v-container> -</template> - -<script> -import { mapActions, mapState } from 'vuex' -import RegisterDialog from '@/components/RegisterDialog' -import { Authentication as Auth } from '@/store/modules/authentication' -import { ConfigModule } from '../store/modules/config' - -export default { - name: 'GradyLogin', - components: { RegisterDialog }, - data () { - return { - credentials: { - username: '', - password: '' - }, - registerDialog: false, - loading: false - } - }, - computed: { - msg () { return Auth.state.message }, - userRole () { return Auth.state.user.role }, - }, - methods: { - submit () { - this.loading = true - Auth.getJWT(this.credentials).then(() => { - return Promise.all([ - Auth.getUser(), - ConfigModule.getConfig() - ]) - }).then(() => { - this.$router.push({ name: 'exam-selection' }) - this.loading = false - }).catch((err) => { - let msg = 'Login failed. Please try again.' - if (typeof err === 'string') { - msg = err - } - - Auth.SET_MESSAGE(msg) - this.loading = false - }) - }, - registered (credentials) { - this.registerDialog = false - this.credentials.username = credentials.username - this.credentials.password = credentials.password - Auth.SET_MESSAGE('Your account is being activated. Please wait.') - } - } -} -</script> - -<style scoped> - .v-btn { - margin: 0px; - } - - .btn-container { - display: flex; - flex-wrap: nowrap; - justify-content: space-around; - } - - .grady-logo { - width: 100%; - } -</style> diff --git a/grady/frontend/src/pages/PageNotFound.vue b/grady/frontend/src/pages/PageNotFound.vue deleted file mode 100644 index 4e8debf6..00000000 --- a/grady/frontend/src/pages/PageNotFound.vue +++ /dev/null @@ -1,46 +0,0 @@ -<template> - <v-container class="fill-height"> - <v-row - align="center" - justify="center" - > - <v-card - dark - width="80%" - height="80%" - > - <v-card-title style="font-size: 350%"> - The content you're requesting is not available in your country. - </v-card-title> - <v-divider class="px-5" /> - <v-col - cols="10" - offset="2" - > - <v-card-text class="no-content-text"> - <v-icon - size="200px" - color="deep-orange accent-4" - > - play_circle_outline - </v-icon> - <span style="font-size: xx-large">We're sorry about that ¯\_(ツ)_/¯</span> - </v-card-text> - </v-col> - </v-card> - </v-row> - </v-container> -</template> - -<script> -export default { - name: 'PageNotFound' -} -</script> - -<style scoped> - .no-content-text { - position: absolute; - top: 40%; - } -</style> diff --git a/grady/frontend/src/pages/StartPageSelector.vue b/grady/frontend/src/pages/StartPageSelector.vue deleted file mode 100644 index 85edbc66..00000000 --- a/grady/frontend/src/pages/StartPageSelector.vue +++ /dev/null @@ -1,39 +0,0 @@ -<template> - <component :is="startPage" /> -</template> - -<script> -import { mapGetters } from 'vuex' -import TutorStartPage from '@/pages/tutor/TutorStartPage' -import StudentPage from '@/pages/student/StudentPage' -import ReviewerStartPage from '@/pages/reviewer/ReviewerStartPage' -import { Authentication } from '@/store/modules/authentication' -export default { - name: 'StartPageSelector', - components: { - ReviewerStartPage, - StudentPage, - TutorStartPage - }, - computed: { - isStudent () { return Authentication.isStudent }, - isTutor () { return Authentication.isTutor }, - isReviewer () { return Authentication.isReviewer }, - startPage () { - if (this.isStudent) { - return 'student-page' - } else if (this.isTutor) { - return 'tutor-start-page' - } else if (this.isReviewer) { - return 'reviewer-start-page' - } - - return undefined - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/pages/Statistics.vue b/grady/frontend/src/pages/Statistics.vue deleted file mode 100644 index 52f71f03..00000000 --- a/grady/frontend/src/pages/Statistics.vue +++ /dev/null @@ -1,29 +0,0 @@ -<template> - <v-container> - <v-row> - <v-col> - <label-statistics /> - </v-col> - <v-col> - <correction-statistics /> - </v-col> - </v-row> - </v-container> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' - -import CorrectionStatistics from '@/components/CorrectionStatistics.vue' -import LabelStatistics from '@/components/LabelStatistics.vue' - - -@Component({ - components: {CorrectionStatistics, LabelStatistics} -}) -export default class Statistics extends Vue { - - -} -</script> diff --git a/grady/frontend/src/pages/StudentSubmissionSideView.vue b/grady/frontend/src/pages/StudentSubmissionSideView.vue deleted file mode 100644 index ef863ba4..00000000 --- a/grady/frontend/src/pages/StudentSubmissionSideView.vue +++ /dev/null @@ -1,109 +0,0 @@ -<template> - <div> - <route-change-confirmation :next-route="nextRoute" /> - <submission-correction - :submission-without-assignment="submission" - :feedback="submission.feedback" - :ignore-hidden-state="true" - @feedbackCreated="refresh" - @feedbackChanged="refresh" - /> - <submission-tests - :tests="submission.tests" - class="mt-4" - /> - <submission-type - :key="submissionType.pk" - v-bind="submissionType" - :reverse="true" - :expanded-by-default="{ Description: true, Solution: true }" - class="mt-1" - /> - </div> -</template> - -<script> -import store from '@/store/store' -import VueInstance from '@/main' -import SubmissionCorrection from '@/components/submission_notes/SubmissionCorrection' -import SubmissionTests from '@/components/SubmissionTests' -import SubmissionType from '@/components/submission_type/SubmissionType' -import RouteChangeConfirmation from '@/components/submission_notes/RouteChangeConfirmation' -import { actions } from '@/store/actions' - -function onRouteEnterOrUpdate (to, from, next) { - const toIsSubmissionSideView = to.matched.some(route => route.meta.submissionSideView) - if (toIsSubmissionSideView) { - let submission = store.state.submissions[to.params.submissionPk] - if (!submission) { - store.dispatch('getSubmissionFeedbackTest', { pk: to.params.submissionPk }).then(() => { - VueInstance.$nextTick(() => { - next() - }) - }).catch(() => { - VueInstance.$notify({ - title: 'Error', - text: 'Unable to fetch student data', - type: 'error' - }) - next(false) - }) - } else { - next() - } - } else { - next() - } -} - -export default { - name: 'StudentSubmissionSideView', - components: { - RouteChangeConfirmation, - SubmissionType, - SubmissionTests, - SubmissionCorrection }, - data () { - return { - nextRoute: null - } - }, - computed: { - submissionPk () { - return this.$route.params['submissionPk'] - }, - submission () { - return this.$store.state.submissions[this.submissionPk] - }, - submissionType () { - return this.$store.state.submissionTypes[this.submission.type] - } - }, - methods: { - refresh () { - this.$emit('refresh') - const studentPk = this.$route.params.studentPk - if (studentPk) { - actions.getStudents({ studentPks: [studentPk] }) - } - const submissionPk = this.$route.params.submissionPk - actions.getSubmissionFeedbackTest({ pk: submissionPk }) - } - }, - beforeRouteEnter (to, from, next) { - onRouteEnterOrUpdate(to, from, next) - }, - beforeRouteUpdate (to, from, next) { - this.nextRoute = () => { - onRouteEnterOrUpdate(to, from, next) - } - }, - beforeRouteLeave (to, from, next) { - this.nextRoute = next - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/pages/SubscriptionWorkPage.vue b/grady/frontend/src/pages/SubscriptionWorkPage.vue deleted file mode 100644 index e3f6b154..00000000 --- a/grady/frontend/src/pages/SubscriptionWorkPage.vue +++ /dev/null @@ -1,124 +0,0 @@ -<template> - <two-pane-layout - ref="layout" - :show-right-pane="showSubmissionType" - > - <template #left> - <v-container> - <route-change-confirmation :next-route="nextRoute" /> - <submission-correction - :key="currentAssignment.pk" - :assignment="currentAssignment" - @feedbackCreated="startWorkOnNextAssignment" - /> - <submission-tests - :tests="submission.tests" - :expand="true" - /> - </v-container> - </template> - <template #right> - <submission-type - :key="submissionType.pk" - v-bind="submissionType" - :expanded-by-default="{ Description: true, Solution: true }" - /> - </template> - </two-pane-layout> -</template> - -<script lang="ts"> -import { Vue, Component, Watch } from 'vue-property-decorator' -import { Route, NavigationGuard } from 'vue-router' -import SubmissionCorrection from '@/components/submission_notes/SubmissionCorrection.vue' -import SubmissionType from '@/components/submission_type/SubmissionType.vue' -import store from '@/store/store' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import SubmissionTests from '@/components/SubmissionTests.vue' -import { Assignments } from '@/store/modules/assignments' -import RouteChangeConfirmation from '@/components/submission_notes/RouteChangeConfirmation.vue' -import { getters } from '@/store/getters' -import { SubmissionAssignment } from '@/models' -import { UI } from '@/store/modules/ui' -import TwoPaneLayout from '@/components/TwoPaneLayout.vue' - -const onRouteEnterOrUpdate: NavigationGuard = function (to, from, next) { - Assignments.changeAssignment(to).then(() => { - if (from === to) { - return - } - next() - }) -} - -@Component({ - components: { - RouteChangeConfirmation, - SubmissionTests, - SubmissionType, - SubmissionCorrection, - TwoPaneLayout, - } -}) -export default class SubscriptionWorkPage extends Vue { - $refs!: { - layout: TwoPaneLayout - } - - subscriptionActive = false - nextRoute = () => {} - - get showSubmissionType () { - return UI.state.showSubmissionType - } - - get currentAssignment () { - return Assignments.state.currentAssignment - } - - get submission () { - return this.currentAssignment && this.currentAssignment.submission - } - - get submissionType () { - if (this.submission && (this.submission as SubmissionAssignment).type) { - return getters.state.submissionTypes[(this.submission as SubmissionAssignment).type] - } - } - - beforeRouteEnter (to: Route, from: Route, next: (to?: any) => void ) { - onRouteEnterOrUpdate(to, from, next) - } - - beforeRouteUpdate (this: SubscriptionWorkPage, to: Route, from: Route, next: (to?: any) => void) { - this.nextRoute = () => { - onRouteEnterOrUpdate(to, from, next) - } - } - - beforeRouteLeave (this: SubscriptionWorkPage, to: Route, from: Route, next: (to?: any) => void) { - if (to.name === 'correction-ended') { - next() - } else { - this.nextRoute = () => { - next() - Assignments.deleteCurrentAssignment() - } - } - } - - startWorkOnNextAssignment () { - Assignments.createNextAssignment().then(() => { - Assignments.getAvailableSubmissionCounts() - }).catch(() => { - Assignments.SET_CURRENT_ASSIGNMENT(undefined) - this.$router.replace({name: 'correction-ended'}) - }) - } - - @Watch('currentAssignment') - onCurrentAssignmentChanged() { - this.$refs.layout.leftPane().scrollTop = 0 - } -} -</script> diff --git a/grady/frontend/src/pages/base/FeedbackHistoryPage.vue b/grady/frontend/src/pages/base/FeedbackHistoryPage.vue deleted file mode 100644 index 313494d9..00000000 --- a/grady/frontend/src/pages/base/FeedbackHistoryPage.vue +++ /dev/null @@ -1,35 +0,0 @@ -<template> - <two-pane-layout> - <template #left> - <router-view name="left" /> - </template> - <template #right> - <v-container> - <router-view - name="right" - @refresh="refresh" - /> - </v-container> - </template> - </two-pane-layout> -</template> - -<script lang="ts"> -import Vue from 'vue' -import Component from 'vue-class-component' -import { FeedbackTable } from '@/store/modules/feedback_list/feedback-table' -import TwoPaneLayout from '@/components/TwoPaneLayout.vue' - -@Component({ - components: { TwoPaneLayout } -}) -export default class FeedbackHistoryPage extends Vue { - refresh () { - FeedbackTable.getFeedbackHistory() - } - - created () { - FeedbackTable.getFeedbackHistory() - } -} -</script> diff --git a/grady/frontend/src/pages/base/TutorReviewerBaseLayout.vue b/grady/frontend/src/pages/base/TutorReviewerBaseLayout.vue deleted file mode 100644 index 8016a37a..00000000 --- a/grady/frontend/src/pages/base/TutorReviewerBaseLayout.vue +++ /dev/null @@ -1,79 +0,0 @@ -<template> - <base-layout> - <template #header> - Grady - </template> - - <template #sidebar-content> - <v-list dense> - <v-list-item - v-for="(item, i) in generalNavItems" - :key="i" - :to="item.route" - > - <v-list-item-action> - <v-icon>{{ item.icon }}</v-icon> - </v-list-item-action> - <v-list-item-content> - <v-list-item-title :id="item.tagId"> - {{ item.name }} - </v-list-item-title> - </v-list-item-content> - </v-list-item> - </v-list> - <v-divider /> - <slot name="above-subscriptions" /> - <subscription-list - v-if="!mini" - :sidebar="true" - /> - <feedback-label-tab v-if="!mini" /> - <slot name="below-subscriptions" /> - </template> - </base-layout> -</template> - -<script> -import { UI } from '@/store/modules/ui' -import BaseLayout from '@/components/BaseLayout' -import SubscriptionList from '@/components/subscriptions/SubscriptionList' -import FeedbackLabelTab from '@/components/feedback_labels/FeedbackLabelTab.vue' - -export default { - name: 'TutorReviewerBaseLayout', - components: { - SubscriptionList, - FeedbackLabelTab, - BaseLayout }, - data () { - return { - generalNavItems: [ - { - name: 'Overview', - icon: 'home', - route: '/home', - tagId: 'overview' - }, - { - name: 'Feedback History', - icon: 'feedback', - route: '/feedback', - tagId: 'feedback' - }, - { - name: 'Statistics', - icon: 'bar_chart', - route: '/statistics', - tagId: 'statistics' - } - ] - } - }, - computed: { - mini () { return UI.state.sideBarCollapsed }, - } -} -</script> - -<style scoped> -</style> diff --git a/grady/frontend/src/pages/reviewer/ReviewerLayout.vue b/grady/frontend/src/pages/reviewer/ReviewerLayout.vue deleted file mode 100644 index 18767de2..00000000 --- a/grady/frontend/src/pages/reviewer/ReviewerLayout.vue +++ /dev/null @@ -1,52 +0,0 @@ -<template> - <tutor-reviewer-base-layout> - <template #above-subscriptions> - <v-list - dense - > - <v-list-item - v-for="(item, i) in subGeneralNavItems" - :key="i" - :to="item.route" - > - <v-list-item-action> - <v-icon>{{ item.icon }}</v-icon> - </v-list-item-action> - <v-list-item-content> - <v-list-item-title> - {{ item.name }} - </v-list-item-title> - </v-list-item-content> - </v-list-item> - </v-list> - </template> - </tutor-reviewer-base-layout> -</template> - -<script> -import TutorReviewerBaseLayout from '@/pages/base/TutorReviewerBaseLayout' - -export default { - name: 'ReviewerLayout', - components: { TutorReviewerBaseLayout }, - data () { - return { - subGeneralNavItems: [ - { - name: 'Participants', - route: '/participant-overview', - icon: 'people' - }, - { - name: 'Tutors', - route: { name: 'tutor-overview' }, - icon: 'people' - } - ] - } - } -} -</script> - -<style scoped> -</style> diff --git a/grady/frontend/src/pages/reviewer/ReviewerStartPage.vue b/grady/frontend/src/pages/reviewer/ReviewerStartPage.vue deleted file mode 100644 index b902a3d3..00000000 --- a/grady/frontend/src/pages/reviewer/ReviewerStartPage.vue +++ /dev/null @@ -1,93 +0,0 @@ -<template> - <v-container v-if="dataLoaded"> - <v-row> - <v-col - lg="6" - md="12" - > - <change-log /> - </v-col> - <v-col - lg="6" - md="12" - > - <correction-statistics /> - </v-col> - <v-col> - <SubmissionTypesOverview /> - </v-col> - </v-row> - </v-container> - <v-row - v-else - justify="center" - class="mt-4 pt-4" - > - <import-dialog - v-if="showImportDialog" - @hide="showImportDialog = false" - @imported="importDone" - /> - <v-card class="import-card"> - <v-card-title class="title"> - Import data - </v-card-title> - <v-card-text> - It looks like this instance doesn't contain any data. - Would you like to import some? - </v-card-text> - <v-card-actions class="justify-center"> - <v-btn - class="info" - @click="showImportDialog = true" - > - Import data - </v-btn> - </v-card-actions> - </v-card> - </v-row> -</template> - -<script> -import CorrectionStatistics from '@/components/CorrectionStatistics' -import ImportDialog from '@/components/ImportDialog' -import ChangeLog from '@/components/ChangeLog' -import SubmissionTypesOverview from '@/components/submission_type/SubmissionTypesOverview' -import { getters } from '../../store/getters' -import { Assignments } from '@/store/modules/assignments' - -export default { - name: 'ReviewerStartPage', - name: 'reviewer-start-page', - components: { - ImportDialog, - SubmissionTypesOverview, - ChangeLog, - CorrectionStatistics }, - data: () => { - return { - showImportDialog: false, - dataImported: false - } - }, - computed: { - dataLoaded () { - return Object.keys(getters.state.submissionTypes).length !== 0 || this.dataImported - } - }, - methods: { - importDone() { - this.dataImported = true - Assignments.RESET_STATE() - } - } -} -</script> - -<style scoped> - -.import-card { - width: 30%; -} - -</style> diff --git a/grady/frontend/src/pages/reviewer/StudentOverviewPage.vue b/grady/frontend/src/pages/reviewer/StudentOverviewPage.vue deleted file mode 100644 index f062dce5..00000000 --- a/grady/frontend/src/pages/reviewer/StudentOverviewPage.vue +++ /dev/null @@ -1,74 +0,0 @@ -<template> - <v-container> - <v-row v-if="this.$vuetify.breakpoint.xl"> - <v-col md="6"> - <student-list /> - </v-col> - <v-col - md="6" - class="right-view" - > - <router-view /> - </v-col> - </v-row> - <v-row v-else> - <v-col> - <student-list @detail-click="openDialog" /> - </v-col> - <v-dialog - v-model="dialog" - fullscreen - hide-overlay - > - <v-card> - <v-toolbar - dark - color="#1a237e" - > - <v-btn - icon - dark - @click="dialog = false" - > - <v-icon>close</v-icon> - </v-btn> - <v-toolbar-title>Submission details</v-toolbar-title> - <v-spacer /> - </v-toolbar> - <v-card-text> - <router-view @refresh="dialog = false" /> - </v-card-text> - </v-card> - </v-dialog> - </v-row> - </v-container> -</template> - -<script> -import StudentList from '@/components/student_list/StudentList' -import StudentListHelpCard from '@/components/student_list/StudentListHelpCard' - -export default { - name: 'StudentOverviewPage', - components: { StudentList }, - data: () => { - return { - dialog: false - } - }, - methods: { - openDialog () { - this.dialog = true - } - } -} -</script> - -<style scoped> - .right-view { - position: sticky; - top: 80px; - overflow-y: scroll; - height: 90vh; - } -</style> diff --git a/grady/frontend/src/pages/reviewer/TutorOverviewPage.vue b/grady/frontend/src/pages/reviewer/TutorOverviewPage.vue deleted file mode 100644 index b0b98e30..00000000 --- a/grady/frontend/src/pages/reviewer/TutorOverviewPage.vue +++ /dev/null @@ -1,24 +0,0 @@ -<template> - <tutor-list class="ma-2 elevation-1" /> -</template> - -<script> -import store from '@/store/store' -import TutorList from '@/components/tutor_list/TutorList' -import { actions } from '@/store/actions' -import { TutorOverview } from '@/store/modules/tutor-overview' - -export default { - name: 'TutorOverviewPage', - components: { TutorList }, - beforeRouteEnter (to, from, next) { - TutorOverview.getTutors() - TutorOverview.getActiveAssignments() - next() - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/pages/student/StudentLayout.vue b/grady/frontend/src/pages/student/StudentLayout.vue deleted file mode 100644 index b11687b5..00000000 --- a/grady/frontend/src/pages/student/StudentLayout.vue +++ /dev/null @@ -1,95 +0,0 @@ -<template> - <base-layout> - <template #sidebar-content> - <v-list dense> - <v-list-item - v-for="(item, i) in generalNavItems" - :key="i" - exact - :to="item.route" - > - <v-list-item-action> - <v-icon>{{ item.icon }}</v-icon> - </v-list-item-action> - <v-list-item-content> - <v-list-item-title> - {{ item.name }} - </v-list-item-title> - </v-list-item-content> - </v-list-item> - - <v-divider /> - - <exam-information - v-if="!mini" - :exam="exam" - class="elevation-1 exam-info ma-1" - /> - <v-list-item - v-for="item in submissionNavItems" - :key="item.route" - exact - :to="item.route" - > - <v-list-item-action> - <v-icon v-if="!visited[item.id]"> - assignment - </v-icon> - <v-icon v-else> - check - </v-icon> - </v-list-item-action> - <v-list-item-content> - <v-list-item-title> - {{ item.name }} - </v-list-item-title> - </v-list-item-content> - </v-list-item> - </v-list> - </template> - </base-layout> -</template> - -<script> -import { UI } from '@/store/modules/ui' -import BaseLayout from '@/components/BaseLayout' -import ExamInformation from '@/components/student/ExamInformation' -import { StudentPage } from '@/store/modules/student-page' -export default { - name: 'StudentLayout', - components: { BaseLayout, ExamInformation }, - data () { - return { - generalNavItems: [ - { - name: 'Overview', - icon: 'home', - route: '/home' - } - ] - } - }, - computed: { - submissions () { return StudentPage.state.submissionsForList }, - exam () { return StudentPage.state.exam }, - visited () { return StudentPage.state.visited }, - moduleReference () { return this.exam ? this.exam.moduleReference : 'No exam information' }, - - mini () { return UI.state.sideBarCollapsed }, - - submissionNavItems () { - return this.submissions.map((sub, index) => { - return { - name: sub.type.name, - id: sub.type.pk, - route: `/submission/${sub.type.pk}` - } - }) - } - } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/pages/student/StudentPage.vue b/grady/frontend/src/pages/student/StudentPage.vue deleted file mode 100644 index a9b289a1..00000000 --- a/grady/frontend/src/pages/student/StudentPage.vue +++ /dev/null @@ -1,47 +0,0 @@ -<template> - <v-container fluid> - <v-row - class="center" - justify - > - <template v-if="loaded"> - <v-col - class="mt-5" - md="10" - offset="1" - > - <h2>Your submissions:</h2> - <submission-list :submissions="submissions" /> - </v-col> - </template> - </v-row> - </v-container> -</template> - -<script> -import SubmissionList from '@/components/student/SubmissionList.vue' -import { StudentPage } from '@/store/modules/student-page' -import { FeedbackLabels } from '@/store/modules/feedback-labels' - -export default { - name: 'StudentPage', - components: { - SubmissionList - }, - computed: { - submissions () { return StudentPage.state.submissionsForList }, - loaded () { return StudentPage.state.loaded } - }, - created: function () { - if (!this.loaded) { - StudentPage.getStudentData().then(() => { - FeedbackLabels.getLabels() - StudentPage.getStudentSubmissions() - }) - } - } -} -</script> - -<style scoped> -</style> diff --git a/grady/frontend/src/pages/student/StudentSubmissionPage.vue b/grady/frontend/src/pages/student/StudentSubmissionPage.vue deleted file mode 100644 index fb800b4c..00000000 --- a/grady/frontend/src/pages/student/StudentSubmissionPage.vue +++ /dev/null @@ -1,195 +0,0 @@ -<template> - <v-container> - <v-row v-if="!feedback"> - <v-col> - <v-alert type="info"> - This submission hasn't been corrected due to this being a pass only exam. - </v-alert> - </v-col> - </v-row> - <v-row v-if="feedback && !feedback.isFinal"> - <v-col> - <v-alert type="info"> - This feedback is not final! Changes will likely occur! - </v-alert> - </v-col> - </v-row> - <v-row> - <v-col :md="solutionHidden ? 12 : 6"> - <base-annotated-submission> - <template #header> - <annotated-submission-top-toolbar - v-if="feedback" - v-model="mathIsRendered" - :score="feedback.score" - :notebook-available="notebookAvailable" - :submission="submission" - :submission-type="submissionType" - :feedback="feedback" - :is-markdown="isMarkdown" - /> - </template> - <template #table-content> - <tr - v-for="(code, lineNo) in submissionText" - :key="lineNo" - > - <math-renderer :enabled="mathIsRendered"> - <submission-line - :code="code" - :line-no="lineNo" - > - <template v-if="feedback"> - <template v-for="(comment, index) in feedback.feedbackLines[lineNo]"> - <feedback-comment - v-if="showFeedback" - :key="comment.pk + index" - v-bind="comment" - :line-no="lineNo" - :show-visibility-icon="false" - :corrector-view="false" - /> - </template> - </template> - </submission-line> - </math-renderer> - </tr> - </template> - </base-annotated-submission> - <v-card> - <v-card-title>Labels:</v-card-title> - <v-card-text> - <v-row - v-for="label in mappedLabels" - :key="'global' + label.pk" - align="center" - > - <v-col sm="6"> - <feedback-label - v-bind="label" - /> - </v-col> - <v-col sm="6"> - <span><b>Description: </b>{{ label.description }}</span> - </v-col> - </v-row> - </v-card-text> - </v-card> - <submission-tests - :tests="tests" - :expand="true" - class="mt-3" - /> - </v-col> - <v-col - class="pl-3" - lg="6" - md="12" - > - <submission-type - v-bind="submissionType" - /> - </v-col> - </v-row> - </v-container> -</template> - -<script> -import { mapState, mapGetters } from 'vuex' -import AnnotatedSubmission from '@/components/submission_notes/SubmissionCorrection' -import SubmissionType from '@/components/submission_type/SubmissionType' -import BaseAnnotatedSubmission from '@/components/submission_notes/base/BaseAnnotatedSubmission' -import AnnotatedSubmissionTopToolbar from '@/components/submission_notes/toolbars/AnnotatedSubmissionTopToolbar' -import SubmissionLine from '@/components/submission_notes/base/SubmissionLine' -import FeedbackComment from '@/components/submission_notes/base/FeedbackComment' -import { StudentPage } from '@/store/modules/student-page' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import SubmissionTests from '@/components/SubmissionTests' -import { FeedbackLabels } from '@/store/modules/feedback-labels' -import FeedbackLabel from '@/components/feedback_labels/FeedbackLabel.vue' -import { fetchNotebookSubmissionAsHtml } from '@/api.ts' -import store from '@/store/store' -import { SubmissionType as SubType } from '@/models' -import { UI } from '@/store/modules/ui' -import MathRenderer from '@/components/MathRenderer.vue' - -export default { - name: 'StudentSubmissionPage', - components: { - SubmissionTests, - FeedbackComment, - SubmissionLine, - BaseAnnotatedSubmission, - AnnotatedSubmissionTopToolbar, - FeedbackLabel, - SubmissionType, - MathRenderer }, - data () { - return { - originalSubmissionDialog: false, - originalSubmission: '', - mathIsRendered: false, - } - }, - computed: { - id: function () { - return this.$route.params.id - }, - isMarkdown () { - const typePk = SubmissionNotes.state.submission.type - const type = store.state.submissionTypes[typePk] - return type && type.programmingLanguage === SubType.ProgrammingLanguageEnum.Markdown - }, - submissionText () { return SubmissionNotes.submission }, - tests () { return SubmissionNotes.state.submission.tests }, - showFeedback: function (state) { return SubmissionNotes.state.ui.showFeedback }, - submission () { return StudentPage.state.submissionData[this.id] }, - submissionType () { return StudentPage.state.submissionData[this.id].type }, - feedback () { return StudentPage.state.submissionData[this.$route.params.id].feedback }, - mappedLabels () { - if (!this.feedback) { - return [] - } - return this.feedback.labels.map(entry => { - return FeedbackLabels.state.labels.find(label => { - return label.pk === entry - }) - }) - }, - notebookAvailable () { - return this.submission.sourceCodeAvailable - }, - solutionHidden () { - return UI.state.showSubmissionType === false - } - }, - mounted () { - this.onRouteMountOrUpdate(this.id) - }, - methods: { - onRouteMountOrUpdate (routeId) { - StudentPage.SET_VISITED({ index: routeId, visited: true }) - let submission = {...StudentPage.state.submissionData[routeId]} - submission.type = submission.type.pk - SubmissionNotes.SET_SUBMISSION(submission) - this.mathIsRendered = true - }, - }, - beforeRouteUpdate (to, from, next) { - this.onRouteMountOrUpdate(to.params.id) - next() - } -} -</script> - - -<style scoped> -.origNotebookFrame { - width: 100%; - height: 800px; -} - -.v-alert { - margin: 0; -} -</style> diff --git a/grady/frontend/src/pages/tutor/TutorLayout.vue b/grady/frontend/src/pages/tutor/TutorLayout.vue deleted file mode 100644 index fbfd73af..00000000 --- a/grady/frontend/src/pages/tutor/TutorLayout.vue +++ /dev/null @@ -1,37 +0,0 @@ -<template> - <tutor-reviewer-base-layout> - <template #above-subscriptions> - <v-list - v-if="isInExerciseMode" - dense - > - <v-list-item :to="'/participant-overview'"> - <v-list-item-action> - <v-icon> people </v-icon> - </v-list-item-action> - <v-list-item-content> - <v-list-item-title> - {{ "Participants" }} - </v-list-item-title> - </v-list-item-content> - </v-list-item> - </v-list> - </template> - </tutor-reviewer-base-layout> -</template> - -<script> - -import TutorReviewerBaseLayout from '@/pages/base/TutorReviewerBaseLayout' -import { ConfigModule } from '@/store/modules/config' - -export default { - name: 'TutorLayout', - components: { - TutorReviewerBaseLayout - }, - computed: { - isInExerciseMode: () => { return ConfigModule.state.config.instanceSettings['exerciseMode'] } - } -} -</script> diff --git a/grady/frontend/src/pages/tutor/TutorStartPage.vue b/grady/frontend/src/pages/tutor/TutorStartPage.vue deleted file mode 100644 index 26c458b8..00000000 --- a/grady/frontend/src/pages/tutor/TutorStartPage.vue +++ /dev/null @@ -1,39 +0,0 @@ -<template> - <v-container> - <v-row> - <v-col - lg="6" - md="12" - > - <change-log /> - </v-col> - <v-col - lg="6" - md="12" - > - <correction-statistics /> - </v-col> - <v-col> - <SubmissionTypesOverview /> - </v-col> - </v-row> - </v-container> -</template> - -<script> -import ChangeLog from '@/components/ChangeLog' -import CorrectionStatistics from '@/components/CorrectionStatistics' -import SubmissionTypesOverview from '@/components/submission_type/SubmissionTypesOverview' - -export default { - name: 'TutorStartPage', - components: { - SubmissionTypesOverview, - CorrectionStatistics, - ChangeLog } -} -</script> - -<style scoped> - -</style> diff --git a/grady/frontend/src/router/index.ts b/grady/frontend/src/router/index.ts deleted file mode 100644 index df44c88c..00000000 --- a/grady/frontend/src/router/index.ts +++ /dev/null @@ -1,191 +0,0 @@ -import Vue from 'vue' -import Router, { RawLocation, Route, NavigationGuard } from 'vue-router' -import Login from '@/pages/Login.vue' -import ExamSelection from '@/pages/ExamSelectionPage.vue' -import StudentSubmissionPage from '@/pages/student/StudentSubmissionPage.vue' -import StudentOverviewPage from '@/pages/reviewer/StudentOverviewPage.vue' -import TutorOverviewPage from '@/pages/reviewer/TutorOverviewPage.vue' -import SubscriptionWorkPage from '@/pages/SubscriptionWorkPage.vue' -import SubscriptionEnded from '@/components/subscriptions/SubscriptionEnded.vue' -import PageNotFound from '@/pages/PageNotFound.vue' -import StartPageSelector from '@/pages/StartPageSelector.vue' -import Statistics from '@/pages/Statistics.vue' -import LayoutSelector from '@/pages/LayoutSelector.vue' -import StudentSubmissionSideView from '@/pages/StudentSubmissionSideView.vue' -import StudentListHelpCard from '@/components/student_list/StudentListHelpCard.vue' -import FeedbackHistoryPage from '@/pages/base/FeedbackHistoryPage.vue' -import FeedbackTable from '@/components/feedback_list/FeedbackTable.vue' -import FeedbackListHelpCard from '@/components/feedback_list/FeedbackListHelpCard.vue' -import VueInstance from '@/main' -import { Authentication } from '@/store/modules/authentication' -import { ConfigModule } from '@/store/modules/config' - -Vue.use(Router) - -type rerouteFunc = (to?: RawLocation | false | ((vm: Vue) => any) | void) => void - -function denyAccess (next: rerouteFunc, redirect: Route) { - next(redirect.path) - VueInstance.$notify({ - title: 'Access denied', - text: 'You don\'t have permission to view this.', - type: 'error' - }) -} - -let tutorOrReviewerOnly: NavigationGuard = function (to, from, next) { - if (Authentication.isTutorOrReviewer) { - next() - } else { - denyAccess(next, from) - } -} - -let reviewerOnly: NavigationGuard = function (to, from, next) { - if (Authentication.isReviewer) { - next() - } else { - denyAccess(next, from) - } -} - -const reviewerOrTutorInExerciseMode: NavigationGuard = function (to, from, next) { - if (Authentication.isReviewer) { - next() - } else if (Authentication.isTutor && ConfigModule.state.config.instanceSettings.exerciseMode) { - next() - } else { - denyAccess(next, from) - } -} - -let studentOnly: NavigationGuard = function (to, from, next) { - if (Authentication.isStudent) { - next() - } else { - next(false) - } -} - -let checkLoggedIn: NavigationGuard = function (to, from, next) { - if (Authentication.isLoggedIn) { - next() - } else { - next('/login/') - } -} - -const router = new Router({ - routes: [ - { - path: '/login/', - name: 'login', - component: Login - }, - { - path: '/exam_selection/', - name: 'exam-selection', - beforeEnter: checkLoggedIn, - component: ExamSelection - }, - { - path: '', - redirect: 'home', - beforeEnter: checkLoggedIn, - component: LayoutSelector, - children: [ - { - path: 'home', - name: 'home', - component: StartPageSelector - }, - { - path: 'correction/:sub_type/:stage/:group?', - name: 'correction', - beforeEnter: tutorOrReviewerOnly, - component: SubscriptionWorkPage - }, - { - path: 'correction/ended', - name: 'correction-ended', - component: SubscriptionEnded - }, - { - path: 'statistics', - name: 'statistics', - component: Statistics - }, - { - path: 'feedback', - beforeEnter: tutorOrReviewerOnly, - component: FeedbackHistoryPage, - children: [ - { - path: '', - name: 'feedback', - components: { - left: FeedbackTable, - right: FeedbackListHelpCard - } - }, - { - path: ':submissionPk', - components: { - left: FeedbackTable, - right: StudentSubmissionSideView - }, - meta: { - submissionSideView: true - } - }, - { - path: ':id/detail', - components: { - left: FeedbackTable, - right: PageNotFound - } - } - ] - }, - { - path: 'participant-overview', - beforeEnter: reviewerOrTutorInExerciseMode, - component: StudentOverviewPage, - children: [ - { - path: '', - name: 'participant-overview', - component: StudentListHelpCard - }, - { - path: 'participant/:studentPk/submission/:submissionPk', - name: 'submission-side-view', - component: StudentSubmissionSideView, - meta: { - submissionSideView: true - } - } - ] - }, - { - path: 'tutor-overview', - name: 'tutor-overview', - beforeEnter: reviewerOnly, - component: TutorOverviewPage - }, - { - path: 'submission/:id', - beforeEnter: studentOnly, - component: StudentSubmissionPage - } - ] - }, - { - path: '*', - name: 'page-not-found', - component: PageNotFound - } - ] -}) - -export default router diff --git a/grady/frontend/src/shims-tsx.d.ts b/grady/frontend/src/shims-tsx.d.ts deleted file mode 100644 index cbc02136..00000000 --- a/grady/frontend/src/shims-tsx.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import Vue, { VNode } from 'vue' - -declare global { - namespace JSX { - // tslint:disable no-empty-interface - interface Element extends VNode {} - // tslint:disable no-empty-interface - interface ElementClass extends Vue {} - interface IntrinsicElements { - [elem: string]: any - } - } - interface Window { MathJax: any; } -} diff --git a/grady/frontend/src/shims-vue.d.ts b/grady/frontend/src/shims-vue.d.ts deleted file mode 100644 index d9f24faa..00000000 --- a/grady/frontend/src/shims-vue.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.vue' { - import Vue from 'vue' - export default Vue -} diff --git a/grady/frontend/src/store/actions.ts b/grady/frontend/src/store/actions.ts deleted file mode 100644 index 68297e51..00000000 --- a/grady/frontend/src/store/actions.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { ActionContext } from 'vuex' -import { BareActionContext, getStoreBuilder } from 'vuex-typex' - -import { mutations as mut } from './mutations' -import { Authentication } from '@/store/modules/authentication' -import { SubmissionNotes } from '@/store/modules/submission-notes' -import * as api from '@/api' -import router from '@/router/index' -import { RootState } from '@/store/store' -import { FeedbackTable } from '@/store/modules/feedback_list/feedback-table' -import { Assignments } from '@/store/modules/assignments' -import { TutorOverview } from './modules/tutor-overview' -import { StudentPage } from './modules/student-page' -import { ConfigModule } from './modules/config' - -async function getExamTypes (context: BareActionContext<RootState, RootState>) { - const examTypes = await api.fetchExamTypes() - mut.SET_EXAM_TYPES(examTypes) -} -async function updateSubmissionTypes (){ - const submissionTypes = await api.fetchSubmissionTypes() - submissionTypes.forEach(type => { - mut.UPDATE_SUBMISSION_TYPE(type) - }) -} - -async function updateSubmissionType ( - context: BareActionContext<RootState, RootState>, - pk: string -) { - const submissionType = await api.fetchSubmissionType(pk) - mut.UPDATE_SUBMISSION_TYPE(submissionType) -} - -async function getStudents ( - context: BareActionContext<RootState, RootState>, - opt: { studentPks: Array<string>} = { - studentPks: [] - } -) { - if (opt.studentPks.length === 0) { - const students = await api.fetchAllStudents() - mut.SET_STUDENTS(students) - return students - } else { - const students = await Promise.all( - opt.studentPks.map((pk: string) => - api.fetchStudent({ pk }) - ) - ) - students.forEach(student => mut.SET_STUDENT(student)) - return students - } -} -async function getSubmissionFeedbackTest ( - context: BareActionContext<RootState, RootState>, - submissionPkObj: { pk: string } -) { - const submission = await api.fetchSubmissionFeedbackTests(submissionPkObj) - mut.SET_SUBMISSION(submission) -} -async function getStatistics () { - const statistics = await api.fetchStatistics(ConfigModule.state.config.examId) - mut.SET_STATISTICS(statistics) -} - -function resetState ({ message }: {message: string}) { - FeedbackTable.RESET_STATE() - Assignments.RESET_STATE() - SubmissionNotes.RESET_STATE() - StudentPage.RESET_STATE() - Authentication.RESET_STATE() - Authentication.SET_MESSAGE(message) - TutorOverview.RESET_STATE() - mut.RESET_STATE() -} - -function logout ( - context: BareActionContext<RootState, RootState>, - message = '' -) { - if (Authentication.isStudent && !ConfigModule.state.config.instanceSettings.exerciseMode) { - Authentication.deactivateUserAccount() - } - if (Authentication.isTutorOrReviewer) { - Assignments.cleanAssignments() - } - router.push({ name: 'login' }, () => { - resetState({ message }) - }) -} - -const mb = getStoreBuilder<RootState>() - -export const actions = { - updateSubmissionTypes: mb.dispatch(updateSubmissionTypes), - updateSubmissionType: mb.dispatch(updateSubmissionType), - getExamTypes: mb.dispatch(getExamTypes), - getStudents: mb.dispatch(getStudents), - getSubmissionFeedbackTest: mb.dispatch(getSubmissionFeedbackTest), - getStatistics: mb.dispatch(getStatistics), - logout: mb.dispatch(logout) -} diff --git a/grady/frontend/src/store/getters.ts b/grady/frontend/src/store/getters.ts deleted file mode 100644 index 2ea338f6..00000000 --- a/grady/frontend/src/store/getters.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { RootState } from '@/store/store' -import { getStoreBuilder } from 'vuex-typex' - -const mb = getStoreBuilder<RootState>() - -const stateGetter = mb.state() - -const correctedGetter = mb.read(function corrected (state) { - const progresses = state.statistics.submissionTypeProgress - return progresses.length > 0 && progresses.every(progress => { - return progress.feedbackFinal === progress.submissionCount - }) -}) -const submissionGetter = mb.read(function submission (state) { - return (pk: string) => { - return state.submissions[pk] - } -}) -const submissionTypeGetter = mb.read(function submissionType (state) { - return (pk: string) => { - return state.submissionTypes[pk] - } -}) - -export const getters = { - get state () { return stateGetter() }, - get corrected () { return correctedGetter() }, - get submission () { return submissionGetter() }, - get submissionType () { return submissionTypeGetter() } -} diff --git a/grady/frontend/src/store/grady_speak.ts b/grady/frontend/src/store/grady_speak.ts deleted file mode 100644 index 6ae7abba..00000000 --- a/grady/frontend/src/store/grady_speak.ts +++ /dev/null @@ -1,25 +0,0 @@ -const gradySays = [ - 'Now let\'s see if we can improve this with a little water, sir.', - 'Won\'t keep you a moment, sir.', - 'Grady, sir. Delbert Grady.', - 'Yes, sir.', - 'That\'s right, sir.', - 'Why no, sir. I don\'t believe so.', - 'Ah ha, it\'s coming off now, sir.', - 'Why no, sir. I don\'t believe so.', - 'Yes, sir. I have a wife and two daughters, sir.', - 'Oh, they\'re somewhere around. I\'m not quite sure at the moment, sir.', - 'That\'s strange, sir. I don\'t have any recollection of that at all.', - 'I\'m sorry to differ with you, sir, but you are the caretaker.', - 'You have always been the caretaker, I should know, sir.', - 'I\'ve always been here.', - 'Indeed, he is, Mr. Torrance. A very willful boy. ', - 'A rather naughty boy, if I may be so bold, sir.', - 'Perhaps they need a good talking to, if you don\'t mind my saying so. Perhaps a bit more.', - 'My girls, sir, they didn\'t care for the Overlook at first.', - 'One of them actually stole a packet of matches and tried to burn it down.', - 'But I corrected them, sir.', - 'And when my wife tried to prevent me from doing my duty... I corrected her.' -] - -export default gradySays diff --git a/grady/frontend/src/store/modules/assignments.ts b/grady/frontend/src/store/modules/assignments.ts deleted file mode 100644 index d5039942..00000000 --- a/grady/frontend/src/store/modules/assignments.ts +++ /dev/null @@ -1,193 +0,0 @@ -import Vue from 'vue' -import * as api from '@/api' -import { cartesian, flatten, once } from '@/util/helpers' -import { Assignment, FeedbackStageEnum, CreateAssignment, AvailableSubmissionCounts, Group} from '@/models' -import { RootState } from '@/store/store' -import { Authentication } from '@/store/modules/authentication' -import { getStoreBuilder, BareActionContext } from 'vuex-typex' -import router from '@/router' -import { Route } from 'vue-router' - -export interface AssignmentsState { - currentAssignment?: Assignment - assignmentCreation: { - submissionType?: string - stage: FeedbackStageEnum - group?: Group - }, - submissionsLeft: AvailableSubmissionCounts, - groups: Group[], - loading: boolean -} - -function initialState (): AssignmentsState { - return { - currentAssignment: undefined, - loading: false, - assignmentCreation: { - stage: FeedbackStageEnum.Creation, - group: undefined, - submissionType: undefined - }, - submissionsLeft: {}, - groups: [] - } -} - -const mb = getStoreBuilder<RootState>().module('Assignments', initialState()) - -const stateGetter = mb.state() - - -const availableStagesGetter = mb.read(function availableStages (state, getters) { - let stages = [FeedbackStageEnum.Creation, FeedbackStageEnum.Validation] - if (Authentication.isReviewer) { - stages.push(FeedbackStageEnum.Review) - } - return stages -}) - -const availableStagesReadableGetter = mb.read(function availableStagesReadable (state, getters) { - let stages = ['initial', 'validate'] - if (Authentication.isReviewer) { - stages.push('review') - } - return stages -}) - -const availableSubmissionTypeQueryKeysGetter = mb.read(function availableSubmissionTypeQueryKeys (state, getters, rootState) { - return Object.values(rootState.submissionTypes).map((subType: any) => subType.pk) -}) - -const availableExamTypeQueryKeysGetter = mb.read(function availableExamTypeQueryKeys (state, getters, rootState) { - return Object.values(rootState.examTypes).map((examType: any) => examType.pk) -}) - - -function SET_CURRENT_ASSIGNMENT (state: AssignmentsState, assignment?: Assignment): void { - state.currentAssignment = assignment -} - -function SET_CREATE_SUBMISSION_TYPE (state: AssignmentsState, submissionType: string): void { - state.assignmentCreation.submissionType = submissionType -} - -function SET_CREATE_STAGE (state: AssignmentsState, stage: FeedbackStageEnum): void { - state.assignmentCreation.stage = stage -} - -function SET_CREATE_GROUP (state: AssignmentsState, group: Group): void { - state.assignmentCreation.group = group -} - -function SET_SUBMISSION_LEFT (state: AssignmentsState, availableSubmissions: AvailableSubmissionCounts): void { - state.submissionsLeft = availableSubmissions -} - -function SET_GROUPS (state: AssignmentsState, groups: Group[]): void { - state.groups = groups -} - -function UPDATE_CREATE_PARAMETERS_FROM_URL(state: AssignmentsState, route: Route) { - const submissionType = route.params['sub_type'] - const stage = route.params['stage'] as FeedbackStageEnum - const group_par = route.params['group'] - - state.assignmentCreation.submissionType = submissionType - state.assignmentCreation.stage = stage - const group = state.groups.find((group) => group.pk === group_par) - if (group === undefined && state.groups.length > 0) { - throw new Error(`Group ${group_par} appeared in parameter but not available in ${state.groups}`) - } - state.assignmentCreation.group = group -} - -function RESET_STATE (state: AssignmentsState): void { - Object.assign(state, initialState()) -} - -async function createNextAssignment({ state }: BareActionContext<AssignmentsState, RootState>) { - const createAssignment = state.assignmentCreation - if (createAssignment.submissionType === undefined ) { - throw new Error('SET_CREATE_SUBMISSION_TYPE needs to be called before createNextAssignment') - } - - const data = { - stage: createAssignment.stage, - submissionType: createAssignment.submissionType!, - group: createAssignment.group !== undefined ? createAssignment.group.pk : undefined - } - - Assignments.SET_CURRENT_ASSIGNMENT(await api.createAssignment(data)) -} - -async function cleanAssignments -({ state }: BareActionContext<AssignmentsState, RootState>) { - await api.releaseUndoneAssignments() -} - -async function changeAssignment -({ state }: BareActionContext<AssignmentsState, RootState>, route: Route) { - Assignments.UPDATE_CREATE_PARAMETERS_FROM_URL(route) - if (state.currentAssignment) { - await Assignments.deleteCurrentAssignment() - } - await Assignments.createNextAssignment() -} - -async function skipAssignment ({ state }: BareActionContext<AssignmentsState, RootState>) { - if (!state.currentAssignment) { - throw new Error('skipAssignment can only be called with active assignment') - } - - const oldAssignment = state.currentAssignment - await Assignments.createNextAssignment() - await api.deleteAssignment({assignment: oldAssignment }) - -} - -async function deleteCurrentAssignment ({ state }: BareActionContext<AssignmentsState - , RootState>) { - if (!state.currentAssignment) { - throw new Error('No active assignment to delete') - } - await api.deleteAssignment({assignment: state.currentAssignment}) - Assignments.SET_CURRENT_ASSIGNMENT(undefined) -} - -async function getAvailableSubmissionCounts({ state }: BareActionContext<AssignmentsState, RootState>) { - const counts = await api.fetchAvailableSubmissionCounts(state.assignmentCreation.group) - Assignments.SET_SUBMISSION_LEFT(counts) -} - -async function getGroups() { - const groups = await api.fetchGroups() - Assignments.SET_GROUPS(groups) -} - - -export const Assignments = { - get state () { return stateGetter() }, - get availableStages () { return availableStagesGetter() }, - get availableStagesReadable () { return availableStagesReadableGetter() }, - get availableSubmissionTypeQueryKeys () { return availableSubmissionTypeQueryKeysGetter() }, - get availableExamTypeQueryKeys () { return availableExamTypeQueryKeysGetter() }, - - SET_CURRENT_ASSIGNMENT: mb.commit(SET_CURRENT_ASSIGNMENT), - SET_CREATE_SUBMISSION_TYPE: mb.commit(SET_CREATE_SUBMISSION_TYPE), - SET_CREATE_STAGE: mb.commit(SET_CREATE_STAGE), - SET_CREATE_GROUP: mb.commit(SET_CREATE_GROUP), - SET_SUBMISSION_LEFT: mb.commit(SET_SUBMISSION_LEFT), - SET_GROUPS: mb.commit(SET_GROUPS), - UPDATE_CREATE_PARAMETERS_FROM_URL: mb.commit(UPDATE_CREATE_PARAMETERS_FROM_URL), - RESET_STATE: mb.commit(RESET_STATE), - - - cleanAssignments: mb.dispatch(cleanAssignments), - changeAssignment: mb.dispatch(changeAssignment), - createNextAssignment: mb.dispatch(createNextAssignment), - skipAssignment: mb.dispatch(skipAssignment), - deleteCurrentAssignment: mb.dispatch(deleteCurrentAssignment), - getAvailableSubmissionCounts: mb.dispatch(getAvailableSubmissionCounts), - getGroups: mb.dispatch(getGroups) -} diff --git a/grady/frontend/src/store/modules/authentication.ts b/grady/frontend/src/store/modules/authentication.ts deleted file mode 100644 index 9444cdb2..00000000 --- a/grady/frontend/src/store/modules/authentication.ts +++ /dev/null @@ -1,143 +0,0 @@ -import * as api from '@/api' -import gradySays from '../grady_speak' -import { BareActionContext, getStoreBuilder } from 'vuex-typex' -import { UserAccount } from '@/models' -import { RootState } from '@/store/store' - -export interface Credentials { - username: string, - password: string -} - -export interface AuthState { - token: string, - lastTokenRefreshTry: number, - refreshingToken: boolean, - message: string, - user: UserAccount -} -function initialState (): AuthState { - return { - token: '', - lastTokenRefreshTry: Date.now(), - refreshingToken: false, - message: '', - user: { - pk: '', - username: '', - isAdmin: false, - exerciseGroups: [] - } - } -} - -const mb = getStoreBuilder<RootState>().module('Authentication', initialState()) - -const stateGetter = mb.state() - -const gradySpeakGetter = mb.read(function gradySpeak () { - return gradySays[Math.floor(Math.random() * gradySays.length)] -}) -const isStudentGetter = mb.read(function isStudent (state: AuthState) { - return state.user.role === UserAccount.RoleEnum.Student -}) -const isTutorGetter = mb.read(function isTutor (state: AuthState) { - return state.user.role === UserAccount.RoleEnum.Tutor -}) -const isReviewerGetter = mb.read(function isReviewer (state: AuthState) { - return state.user.role === UserAccount.RoleEnum.Reviewer -}) -const isTutorOrReviewerGetter = mb.read(function isTutorOrReviewer (state: AuthState, getters) { - return getters.isTutor || getters.isReviewer -}) -const isLoggedInGetter = mb.read(function isLoggedIn (state: AuthState) { - return !!state.token -}) - -function SET_MESSAGE (state: AuthState, message: string) { - state.message = message -} -function SET_JWT_TOKEN (state: AuthState, token: string) { - api.default.defaults.headers['Authorization'] = `JWT ${token}` - state.token = token -} -function SET_USER (state: AuthState, user: UserAccount) { - state.user = user -} -function SET_REFRESHING_TOKEN (state: AuthState, refreshing: boolean) { - state.refreshingToken = refreshing -} -function SET_LAST_TOKEN_REFRESH_TRY (state: AuthState) { - state.lastTokenRefreshTry = Date.now() -} -function RESET_STATE (state: AuthState) { - Object.assign(state, initialState()) -} - -async function getJWT (context: BareActionContext<AuthState, RootState>, credentials: Credentials) { - try { - const token = await api.fetchJWT(credentials) - Authentication.SET_JWT_TOKEN(token.token) - } catch (error: any) { - let errorMsg - if (!error.response) { - errorMsg = 'Cannot reach server.' - } else if (error.response.status === 400) { - errorMsg = 'Unable to log in with provided credentials.' - } else if (error.response.status === 429) { - errorMsg = error.response.data.detail - } - Authentication.SET_MESSAGE(errorMsg) - throw errorMsg - } finally { - Authentication.SET_LAST_TOKEN_REFRESH_TRY() - } -} -async function refreshJWT ({ state }: BareActionContext<AuthState, RootState>) { - Authentication.SET_REFRESHING_TOKEN(true) - try { - const token = await api.refreshJWT(state.token) - Authentication.SET_JWT_TOKEN(token.token) - } finally { - Authentication.SET_REFRESHING_TOKEN(false) - Authentication.SET_LAST_TOKEN_REFRESH_TRY() - } -} -async function getUser () { - try { - const user = await api.getOwnUser() - Authentication.SET_USER(user) - } catch (err) { - Authentication.SET_MESSAGE('Unable to fetch user.') - } -} - -/** - * Deactivates the current user's account. - * They will not be able to login again until activated again. - */ -async function deactivateUserAccount ({ state }: BareActionContext<AuthState, RootState>) { - api.changeActiveForUser(state.user.pk, false) -} - -export const Authentication = { - get state () { return stateGetter() }, - get gradySpeak () { return gradySpeakGetter() }, - get isStudent () { return isStudentGetter() }, - get isTutor () { return isTutorGetter() }, - get isReviewer () { return isReviewerGetter() }, - get isTutorOrReviewer () { return isTutorOrReviewerGetter() }, - get isLoggedIn () { return isLoggedInGetter() }, - - SET_MESSAGE: mb.commit(SET_MESSAGE), - SET_JWT_TOKEN: mb.commit(SET_JWT_TOKEN), - SET_USER: mb.commit(SET_USER), - SET_REFRESHING_TOKEN: mb.commit(SET_REFRESHING_TOKEN), - SET_LAST_TOKEN_REFRESH_TRY: mb.commit(SET_LAST_TOKEN_REFRESH_TRY), - RESET_STATE: mb.commit(RESET_STATE), - - getJWT: mb.dispatch(getJWT), - refreshJWT: mb.dispatch(refreshJWT), - getUser: mb.dispatch(getUser), - deactivateUserAccount: mb.dispatch(deactivateUserAccount), -} diff --git a/grady/frontend/src/store/modules/config.ts b/grady/frontend/src/store/modules/config.ts deleted file mode 100644 index 8f29aaa1..00000000 --- a/grady/frontend/src/store/modules/config.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { getStoreBuilder } from 'vuex-typex' -import { RootState } from '@/store/store' -import { Config } from '@/models' -import * as api from '@/api' - -export interface ConfigState { - config: Config -} - -function initialState (): ConfigState { - return { - config: { - timeDelta: 0, - currentExam: '', - examId: '', - version: '', - instanceSettings: { - exerciseMode: false, - singleCorrection: false, - stopOnPass: false, - showSolutionToStudents: false, - } - } - } -} - -const mb = getStoreBuilder<RootState>().module('ConfigModule', initialState()) - -const stateGetter = mb.state() - -function SET_CONFIG (state: ConfigState, config: Config) { - let exam_tmp = state.config.currentExam - let examId_tmp = state.config.examId - state.config = config - state.config.currentExam = exam_tmp - state.config.examId = examId_tmp -} - -function SET_CURRENT_EXAM (state: ConfigState, exam: string) { - state.config.currentExam = exam -} - -function SET_CURRENT_EXAM_ID (state: ConfigState, pk: string) { - state.config.examId = pk -} - -async function getConfig() { - const config = await api.fetchConfig() - ConfigModule.SET_CONFIG(config) -} - - -export const ConfigModule = { - get state () { return stateGetter() }, - - SET_CONFIG: mb.commit(SET_CONFIG), - SET_CURRENT_EXAM: mb.commit(SET_CURRENT_EXAM), - SET_CURRENT_EXAM_ID: mb.commit(SET_CURRENT_EXAM_ID), - - getConfig: mb.dispatch(getConfig) -} diff --git a/grady/frontend/src/store/modules/feedback-labels.ts b/grady/frontend/src/store/modules/feedback-labels.ts deleted file mode 100644 index ebf22ed8..00000000 --- a/grady/frontend/src/store/modules/feedback-labels.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { FeedbackLabel } from '@/models' -import { getStoreBuilder } from 'vuex-typex' -import { RootState } from '../store' -import * as api from '@/api' -import Vue from 'vue' - -export interface FeedbackLabelsState { - labels: FeedbackLabel[] -} - -function initialState(): FeedbackLabelsState { - return { - labels: [] - } -} - -const mb = getStoreBuilder<RootState>().module('FeedbackLabels', initialState()) - -const stateGetter = mb.state() - -const availableLabelsGetter = mb.read(function labels(state) { - return state.labels -}) - -function SET_LABELS(state: FeedbackLabelsState, labels: FeedbackLabel[]) { - state.labels = labels -} - -function ADD_LABEL(state: FeedbackLabelsState, label: FeedbackLabel) { - state.labels.push(label) -} - -function REMOVE_LABEL(state: FeedbackLabelsState, label: FeedbackLabel) { - state.labels = state.labels.filter((val) => { - return val.pk !== label.pk - }) -} - -function UPDATE_LABEL(state: FeedbackLabelsState, label: FeedbackLabel) { - REMOVE_LABEL(state, label) - ADD_LABEL(state, label) -} - -async function getLabels() { - const labels = await api.getLabels() - FeedbackLabels.SET_LABELS(labels) -} - -export const FeedbackLabels = { - get state() { return stateGetter() }, - get availableLabels() { return availableLabelsGetter() }, - - SET_LABELS: mb.commit(SET_LABELS), - ADD_LABEL: mb.commit(ADD_LABEL), - REMOVE_LABEL: mb.commit(REMOVE_LABEL), - UPDATE_LABEL: mb.commit(UPDATE_LABEL), - - getLabels: mb.dispatch(getLabels) -} - diff --git a/grady/frontend/src/store/modules/feedback_list/feedback-table.ts b/grady/frontend/src/store/modules/feedback_list/feedback-table.ts deleted file mode 100644 index 3c115886..00000000 --- a/grady/frontend/src/store/modules/feedback_list/feedback-table.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { fetchAllFeedback, fetchAllAssignments } from '@/api' -import { objectifyArray } from '@/util/helpers' -import { Assignment, Feedback, FeedbackStageEnum, SubmissionType } from '@/models' -import { RootState } from '@/store/store' -import { getters } from '@/store/getters' -import { getStoreBuilder, BareActionContext } from 'vuex-typex' -import { Authentication } from '@/store/modules/authentication' - -export interface FeedbackHistoryItem extends Feedback { - history?: { - [key in FeedbackStageEnum]?: { - ofTutor: string - isDone: boolean - } - } - mark?: string // not the grade, but the color of the highlighting tool on feedbackHist page -} - -export interface FeedbackTableState { - feedbackHist: {[submissionPk: string]: FeedbackHistoryItem} -} - -function initialState (): FeedbackTableState { - return { - feedbackHist: {} - } -} - -const mb = getStoreBuilder<RootState>().module('FeedbackTable', initialState()) - -const stateGetter = mb.state() - -function SET_FEEDBACK_HISTORY (state: FeedbackTableState, val: Array<Feedback>) { - let feedbackList: FeedbackHistoryItem[] = val.map(feedback => { - return { - ...feedback, - mark: 'transparent', - } - }) - state.feedbackHist = objectifyArray(feedbackList, 'ofSubmission') -} -function ADD_ASSIGNMENTS_INFO (state: FeedbackTableState, assignments: Array<Assignment>) { - const doneAssignments = assignments.filter(assignment => assignment.isDone) - for (const assignment of doneAssignments) { - if (!assignment.submission || !assignment.stage) { - throw Error() - } - const feedback = state.feedbackHist[assignment.submission as string] - feedback.history = { - ...feedback.history, - [assignment.stage]: { - ofTutor: assignment.ofTutor, - isDone: assignment.isDone - } - } - } -} -function SET_FEEDBACK_OF_SUBMISSION_TYPE (state: FeedbackTableState, { feedback, type }: -{feedback: Feedback, type: SubmissionType}) { - if (!feedback.ofSubmission) { - throw new Error('Feedback must have ofSubmission present') - } - state.feedbackHist[feedback.ofSubmission].ofSubmissionType = type -} -function SET_MARK_COLOR (state: FeedbackTableState, {submissionPk, color}: -{submissionPk: string, color: string}) { - state.feedbackHist[submissionPk].mark=color -} -function RESET_STATE (state: FeedbackTableState) { Object.assign(state, initialState()) } - -function mapFeedbackHistExam ({ state }: BareActionContext<FeedbackTableState, RootState>) { - for (const feedback of Object.values(state.feedbackHist)) { - const type = getters.state.examTypes - } -} - -function mapFeedbackHistOfSubmissionType ({ state }: BareActionContext<FeedbackTableState, RootState>) { - for (const feedback of Object.values(state.feedbackHist)) { - const type = getters.submissionType((feedback as any).ofSubmissionType) - FeedbackTable.SET_FEEDBACK_OF_SUBMISSION_TYPE({ feedback, type }) - } -} -async function getFeedbackHistory () { - let data: [Promise<Feedback[]>, Promise<Assignment[]> | undefined] = - [fetchAllFeedback(), Authentication.isReviewer ? fetchAllAssignments() : undefined] - - Promise.all<Feedback[], Assignment[] | undefined>(data) - .then(([feedbacks, assignments]: [Feedback[], Assignment[]?]) => { - FeedbackTable.SET_FEEDBACK_HISTORY(feedbacks) - FeedbackTable.mapFeedbackHistOfSubmissionType() - if (assignments) { - FeedbackTable.ADD_ASSIGNMENTS_INFO(assignments) - } - }) -} - -export const FeedbackTable = { - get state () { return stateGetter() }, - - SET_FEEDBACK_HISTORY: mb.commit(SET_FEEDBACK_HISTORY), - ADD_ASSIGNMENTS_INFO: mb.commit(ADD_ASSIGNMENTS_INFO), - SET_FEEDBACK_OF_SUBMISSION_TYPE: mb.commit(SET_FEEDBACK_OF_SUBMISSION_TYPE), - SET_MARK_COLOR: mb.commit(SET_MARK_COLOR), - RESET_STATE: mb.commit(RESET_STATE), - - mapFeedbackHistOfSubmissionType: mb.dispatch(mapFeedbackHistOfSubmissionType), - getFeedbackHistory: mb.dispatch(getFeedbackHistory) -} diff --git a/grady/frontend/src/store/modules/student-page.ts b/grady/frontend/src/store/modules/student-page.ts deleted file mode 100644 index 03bf0490..00000000 --- a/grady/frontend/src/store/modules/student-page.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { fetchStudentSelfData, fetchStudentSubmissions } from '@/api' -import { Exam, Submission, SubmissionList } from '@/models' -import { RootState } from '@/store/store' -import { Module } from 'vuex' -import { getStoreBuilder } from 'vuex-typex' -import { mutations } from '../mutations' - -export interface StudentPageState { - studentName: string - exam?: Exam - submissionsForList: Array<SubmissionList> - submissionData: {[typePk: string]: Submission} - visited: {[typePk: string]: boolean} - loaded: boolean -} - -function initialState (): StudentPageState { - return { - studentName: '', - exam: undefined, - submissionsForList: [], - submissionData: {}, - visited: {}, - loaded: false - } -} - -const mb = getStoreBuilder<RootState>().module('SutdenPage', initialState()) - -const stateGetter = mb.state() - -function SET_STUDENT_NAME (state: StudentPageState, name: string) { - state.studentName = name -} -function SET_EXAM (state: StudentPageState, exam: Exam) { - state.exam = exam -} -function SET_SUBMISSIONS_FOR_LIST (state: StudentPageState, submissions: SubmissionList[]) { - state.submissionsForList = submissions -} -/** - * Reduces the array submissionData returned by the /api/student-submissions - * into an object where the keys are the SubmissionType id's and the values - * the former array elements. This is done to have direct access to the data - * via the SubmissionType id. - */ -function SET_FULL_SUBMISSION_DATA (state: StudentPageState, submissionData: Array<Submission>) { - state.submissionData = submissionData.reduce((acc: {[pk: string]: Submission}, cur) => { - acc[cur.type.pk] = cur - return acc - }, {}) -} -function SET_VISITED (state: StudentPageState, visited: {index: string, visited: boolean}) { - state.visited = { ...state.visited, [visited.index]: visited.visited } -} -function SET_LOADED (state: StudentPageState, loaded: boolean) { - state.loaded = loaded -} -function RESET_STATE (state: StudentPageState) { - Object.assign(state, initialState()) -} - -async function getStudentData () { - const studentData = await fetchStudentSelfData() - StudentPage.SET_STUDENT_NAME(studentData.name || '') - StudentPage.SET_EXAM(studentData.exam) - StudentPage.SET_SUBMISSIONS_FOR_LIST(studentData.submissions) - StudentPage.SET_LOADED(true) -} - -async function getStudentSubmissions () { - const submissions = await fetchStudentSubmissions() - StudentPage.SET_FULL_SUBMISSION_DATA(submissions) - for (const submission of submissions) { - mutations.UPDATE_SUBMISSION_TYPE(submission.type) - } -} - -export const StudentPage = { - get state () { return stateGetter() }, - - SET_STUDENT_NAME: mb.commit(SET_STUDENT_NAME), - SET_EXAM: mb.commit(SET_EXAM), - SET_SUBMISSIONS_FOR_LIST: mb.commit(SET_SUBMISSIONS_FOR_LIST), - SET_FULL_SUBMISSION_DATA: mb.commit(SET_FULL_SUBMISSION_DATA), - SET_VISITED: mb.commit(SET_VISITED), - SET_LOADED: mb.commit(SET_LOADED), - RESET_STATE: mb.commit(RESET_STATE), - - getStudentData: mb.dispatch(getStudentData), - getStudentSubmissions: mb.dispatch(getStudentSubmissions) -} diff --git a/grady/frontend/src/store/modules/submission-notes.ts b/grady/frontend/src/store/modules/submission-notes.ts deleted file mode 100644 index dfac0cc6..00000000 --- a/grady/frontend/src/store/modules/submission-notes.ts +++ /dev/null @@ -1,266 +0,0 @@ -import Vue from 'vue' -import * as hljs from 'highlight.js' -import * as api from '@/api' -import { Feedback, FeedbackComment, SubmissionNoType, CreateUpdateFeedback, SubmissionType } from '@/models' -import { RootState } from '@/store/store' -import { getStoreBuilder, BareActionContext } from 'vuex-typex' -import { syntaxPostProcess } from '@/util/helpers' -import { AxiosResponse } from 'axios' -import { Assignments } from './assignments' - -export const subNotesEventBus = new Vue() - -export interface SubmissionNotesState { - submission: SubmissionNoType - ui: { - showEditorOnLine: { [lineNo: number]: boolean } - selectedCommentOnLine: { [lineNo: number]: FeedbackComment } - showFeedback: boolean - }, - hasOrigFeedback: boolean - origFeedback: Feedback - updatedFeedback: CreateUpdateFeedback - commentsMarkedForDeletion: { [pk: string]: FeedbackComment } - changedLabels: boolean -} - -function initialState (): SubmissionNotesState { - return { - submission: { - text: '', - pk: '', - type: '', - tests: [], - sourceCodeAvailable: false - }, - ui: { - showEditorOnLine: {}, - selectedCommentOnLine: {}, - showFeedback: true - }, - hasOrigFeedback: false, - origFeedback: { - pk: 0, - ofSubmissionType: { - pk: '', - name: '', - examType: { - pk: '', - moduleReference: '', - totalScore: 0, - passScore: 0 - }, - description: '', - solutionComments: {} - }, - score: undefined, - isFinal: false, - feedbackLines: {}, - labels: [], - }, - updatedFeedback: { - pk: 0, - score: undefined, - feedbackLines: {}, - labels: [], - }, - commentsMarkedForDeletion: {}, - changedLabels: false - } -} - -const mb = getStoreBuilder<RootState>().module('SubmissionNotes', initialState()) - -const stateGetter = mb.state() - -const submissionTypeGetter = mb.read(function submissionType(state, getters, rootState) { - return rootState.submissionTypes[state.submission.type] -}) -// highlight the submission the reduce the string -// submission.text into an object where the keys are the -// line indexes starting at one and the values the corresponding submission line -// this makes iterating over the submission much more pleasant -const submissionGetter = mb.read(function submission(state, getters) { - const language = getters.submissionType - ? getters.submissionType.programmingLanguage - : 'c' - let highlighted = state.submission.text || '' - if (language !== SubmissionType.ProgrammingLanguageEnum.Markdown) { - highlighted = hljs.highlight(language, highlighted, true).value - } else if (language === SubmissionType.ProgrammingLanguageEnum.Markdown) { - highlighted = hljs.highlight('plaintext', highlighted, true).value - } - // const highlighted = state.submission.text || '' - const postProcessed = syntaxPostProcess(highlighted) - const splitted = postProcessed.split('\n').reduce((acc: { [k: number]: string }, cur, index) => { - acc[index + 1] = cur - return acc - }, {}) - return splitted -}) -const scoreGetter = mb.read(function score(state) { - return state.updatedFeedback.score !== undefined ? state.updatedFeedback.score : state.origFeedback.score -}) -const workInProgressGetter = mb.read(function workInProgress(state) { - const openEditor = Object.values(state.ui.showEditorOnLine).reduce((acc, curr) => acc || curr, false) - const feedbackWritten = Object.entries(state.updatedFeedback.feedbackLines || {}).length > 0 - return openEditor || feedbackWritten || state.changedLabels -}) -const isFeedbackCreationGetter = mb.read(function isFeedbackCreation(state) { - return !state.origFeedback['feedbackStageForUser'] || - state.origFeedback['feedbackStageForUser'] === 'feedback-creation' -}) - -/** - * Getter function to determine if the current stage is feedback review / conflict resolution. - */ -const isConflictResolution = mb.read(function isConflictResolution(state) { - return state.origFeedback['feedbackStageForUser'] && - state.origFeedback['feedbackStageForUser'] === 'feedback-review' -}) - -function SET_SUBMISSION(state: SubmissionNotesState, submission: SubmissionNoType) { - state.submission = submission - if (submission.feedback !== undefined) { - SET_ORIG_FEEDBACK(state, submission.feedback) - } -} -function SET_ORIG_FEEDBACK(state: SubmissionNotesState, feedback: Feedback) { - if (feedback) { - state.origFeedback = feedback - state.hasOrigFeedback = true - } -} -function SET_SHOW_FEEDBACK(state: SubmissionNotesState, val: boolean) { - state.ui.showFeedback = val -} -function UPDATE_FEEDBACK_LINE(state: SubmissionNotesState, feedback: { lineNo: number, comment: Partial<FeedbackComment> }) { - // explicit .toString() on lineNo is necessary because of Vue.set typings - if (state.updatedFeedback.feedbackLines) { - Vue.set(state.updatedFeedback.feedbackLines, feedback.lineNo.toString(), feedback.comment) - } -} -function SET_FEEDBACK_LABELS(state: SubmissionNotesState, labels: number[]) { - state.changedLabels = true - state.updatedFeedback.labels = labels -} -function ADD_FEEDBACK_LABEL(state: SubmissionNotesState, label: number) { - state.changedLabels = true - state.updatedFeedback.labels.push(label) -} -function REMOVE_FEEDBACK_LABEL(state: SubmissionNotesState, label: number) { - state.changedLabels = true - const tmp = state.updatedFeedback.labels.filter((val) => { - return val !== label - }) - state.updatedFeedback.labels = tmp -} -function UPDATE_FEEDBACK_SCORE(state: SubmissionNotesState, score: number) { - state.updatedFeedback.score = score -} -function DELETE_FEEDBACK_LINE(state: SubmissionNotesState, lineNo: number) { - if (state.updatedFeedback.feedbackLines) { - // Vue dosn't like objects that are indexed with numbers... - Vue.delete(state.updatedFeedback.feedbackLines, lineNo as unknown as string) - } -} -function TOGGLE_EDITOR_ON_LINE(state: SubmissionNotesState, { lineNo, comment }: { lineNo: number, comment: FeedbackComment }) { - Vue.set(state.ui.selectedCommentOnLine, lineNo as unknown as string, comment) - Vue.set(state.ui.showEditorOnLine, lineNo as unknown as string, !state.ui.showEditorOnLine[lineNo]) -} -function MARK_COMMENT_FOR_DELETION(state: SubmissionNotesState, comment: FeedbackComment) { - Vue.set(state.commentsMarkedForDeletion, comment.pk, comment) -} -function UN_MARK_COMMENT_FOR_DELETION(state: SubmissionNotesState, comment: FeedbackComment) { - Vue.delete(state.commentsMarkedForDeletion, comment.pk) -} -function RESET_MARKED_COMMENTS_FOR_DELETE(state: SubmissionNotesState) { - state.commentsMarkedForDeletion = {} -} -function RESET_UPDATED_FEEDBACK(state: SubmissionNotesState) { - state.updatedFeedback = initialState().updatedFeedback -} -function RESET_STATE(state: SubmissionNotesState) { - Object.assign(state, initialState()) -} - -async function deleteComments({ state }: BareActionContext<SubmissionNotesState, RootState>) { - return Promise.all( - Object.values(state.commentsMarkedForDeletion).map(comment => { - return api.deleteComment(comment) - }) - ) -} -async function submitFeedback( -{ state }: BareActionContext<SubmissionNotesState, RootState>, -{ isFinal = false}): -Promise<AxiosResponse<void>[]> { - - let feedback: Partial<CreateUpdateFeedback> = { - isFinal: isFinal, - ofSubmission: state.submission.pk, - ofSubmissionType: state.submission.type, - feedbackLines: {}, - labels: state.updatedFeedback.labels - } - - // omit labels for the request - if (!state.changedLabels) { - delete feedback.labels - } - - if (state.updatedFeedback.score !== undefined) { - feedback.score = state.updatedFeedback.score - } else { - feedback.score = state.origFeedback.score - } - - // set the comments for the feedback lines accordingly - for (const key of Object.keys(state.updatedFeedback.feedbackLines)) { - const numKey = Number(key) - - numKey && feedback.feedbackLines - && (feedback.feedbackLines[numKey] = state.updatedFeedback.feedbackLines[numKey]) - } - - const assignment = Assignments.state.currentAssignment - if (assignment) { - await api.submitFeedbackForAssignment({ feedback , assignment}) - } else if (state.hasOrigFeedback) { - feedback.pk = state.origFeedback.pk - await api.submitUpdatedFeedback({ feedback } as { feedback: CreateUpdateFeedback }) - } else { - await api.submitFeedback({feedback} as { feedback: CreateUpdateFeedback }) - } - // delete those comments that have been marked for deletion - return SubmissionNotes.deleteComments() -} - -export const SubmissionNotes = { - get state() { return stateGetter() }, - get submissionType() { return submissionTypeGetter() }, - get submission() { return submissionGetter() }, - get score() { return scoreGetter() }, - get workInProgress() { return workInProgressGetter() }, - get isFeedbackCreation() { return isFeedbackCreationGetter() }, - get isConflictResolution() { return isFeedbackCreationGetter() }, - - SET_SUBMISSION: mb.commit(SET_SUBMISSION), - SET_ORIG_FEEDBACK: mb.commit(SET_ORIG_FEEDBACK), - SET_SHOW_FEEDBACK: mb.commit(SET_SHOW_FEEDBACK), - SET_FEEDBACK_LABELS: mb.commit(SET_FEEDBACK_LABELS), - ADD_FEEDBACK_LABEL: mb.commit(ADD_FEEDBACK_LABEL), - REMOVE_FEEDBACK_LABEL: mb.commit(REMOVE_FEEDBACK_LABEL), - UPDATE_FEEDBACK_LINE: mb.commit(UPDATE_FEEDBACK_LINE), - UPDATE_FEEDBACK_SCORE: mb.commit(UPDATE_FEEDBACK_SCORE), - DELETE_FEEDBACK_LINE: mb.commit(DELETE_FEEDBACK_LINE), - TOGGLE_EDITOR_ON_LINE: mb.commit(TOGGLE_EDITOR_ON_LINE), - MARK_COMMENT_FOR_DELETION: mb.commit(MARK_COMMENT_FOR_DELETION), - UN_MARK_COMMENT_FOR_DELETION: mb.commit(UN_MARK_COMMENT_FOR_DELETION), - RESET_MARKED_COMMENTS_FOR_DELETE: mb.commit(RESET_MARKED_COMMENTS_FOR_DELETE), - RESET_UPDATED_FEEDBACK: mb.commit(RESET_UPDATED_FEEDBACK), - RESET_STATE: mb.commit(RESET_STATE), - - deleteComments: mb.dispatch(deleteComments), - submitFeedback: mb.dispatch(submitFeedback) -} diff --git a/grady/frontend/src/store/modules/tutor-overview.ts b/grady/frontend/src/store/modules/tutor-overview.ts deleted file mode 100644 index 6e562e49..00000000 --- a/grady/frontend/src/store/modules/tutor-overview.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { fetchAllTutors, fetchActiveAssignments, deleteAssignment } from '@/api' -import { Tutor, Assignment } from '@/models' -import { RootState } from '../store' -import { getStoreBuilder, BareActionContext } from 'vuex-typex' -import { objectifyArray } from '@/util/helpers' - -export interface TutorOverviewState { - tutors: Tutor[], - activeAssignments: {[ownerName: string]: Assignment[]} -} - -function initialState (): TutorOverviewState { - return { - tutors: [], - activeAssignments: {} - } -} - -type Context = BareActionContext<TutorOverviewState, RootState> - -const mb = getStoreBuilder<RootState>().module('TutorOverview', initialState()) - -const stateGetter = mb.state() - -function SET_TUTORS (state: TutorOverviewState, tutors: Tutor[]) { - state.tutors = tutors -} - -function SET_ASSIGNMENTS (state: TutorOverviewState, assignments: Assignment[]) { - state.activeAssignments = assignments.reduce((acc: {[ownerName: string]: Assignment[]}, curr) => { - if (!curr.owner) { - throw new Error('Assignments must have owner information') - } - acc[curr.owner] ? acc[curr.owner].push(curr) : acc[curr.owner] = [curr] - return acc - }, {}) -} - -function RESET_STATE (state: TutorOverviewState) { - Object.assign(state, initialState()) -} - -async function getTutors () { - const tutors = await fetchAllTutors() - TutorOverview.SET_TUTORS(tutors) -} - -async function getActiveAssignments () { - const assignments = await fetchActiveAssignments() - TutorOverview.SET_ASSIGNMENTS(assignments) -} - -async function deleteActiveAssignmentsOfTutor ({ state }: Context, tutor: Tutor) { - const assignments = state.activeAssignments[tutor.pk] - const promises = assignments.map(assignment => { return deleteAssignment({ assignment }) }) - Promise.all(promises).finally(() => { - TutorOverview.getActiveAssignments() - }) -} - -export const TutorOverview = { - get state () { return stateGetter() }, - - SET_TUTORS: mb.commit(SET_TUTORS), - SET_ASSIGNMENTS: mb.commit(SET_ASSIGNMENTS), - RESET_STATE: mb.commit(RESET_STATE), - - getTutors: mb.dispatch(getTutors), - getActiveAssignments: mb.dispatch(getActiveAssignments), - deleteActiveAssignmentsOfTutor: mb.dispatch(deleteActiveAssignmentsOfTutor) -} diff --git a/grady/frontend/src/store/modules/ui.ts b/grady/frontend/src/store/modules/ui.ts deleted file mode 100644 index 7e3849be..00000000 --- a/grady/frontend/src/store/modules/ui.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { getStoreBuilder } from 'vuex-typex' -import { RootState } from '@/store/store' - -export interface UIState { - sideBarCollapsed: boolean - showJumbotron: boolean, - showSubmissionType: boolean, -} - -function initialState (): UIState { - return { - sideBarCollapsed: false, - showJumbotron: true, - showSubmissionType: true, - } -} - -const mb = getStoreBuilder<RootState>().module('UI', initialState()) - -const stateGetter = mb.state() - -function SET_SIDEBAR_COLLAPSED (state: UIState, collapsed: boolean) { - state.sideBarCollapsed = collapsed -} -function SET_SHOW_JUMBOTRON (state: UIState, val: boolean) { - state.showJumbotron = val -} -function SET_SHOW_SUBMISSIONTYPE (state: UIState, val: boolean) { - state.showSubmissionType = val -} - -export const UI = { - get state () { return stateGetter() }, - - SET_SIDEBAR_COLLAPSED: mb.commit(SET_SIDEBAR_COLLAPSED), - SET_SHOW_JUMBOTRON: mb.commit(SET_SHOW_JUMBOTRON), - SET_SHOW_SUBMISSIONTYPE: mb.commit(SET_SHOW_SUBMISSIONTYPE), -} diff --git a/grady/frontend/src/store/mutations.ts b/grady/frontend/src/store/mutations.ts deleted file mode 100644 index 8be94088..00000000 --- a/grady/frontend/src/store/mutations.ts +++ /dev/null @@ -1,85 +0,0 @@ -import Vue from 'vue' -import { getStoreBuilder } from 'vuex-typex' - -import { initialState, RootState } from '@/store/store' -import { Exam, Statistics, StudentInfoForListView, SubmissionNoType, SubmissionType} from '@/models' - -export const mb = getStoreBuilder<RootState>() - -function SET_EXAM_TYPES (state: RootState, examTypes: Array<Exam>) { - state.examTypes = examTypes.reduce((acc: {[pk: string]: Exam}, curr) => { - acc[curr.pk] = curr - return acc - }, {}) -} -function SET_STUDENTS (state: RootState, students: Array<StudentInfoForListView>) { - state.students = students.reduce((acc: {[pk: string]: StudentInfoForListView}, curr) => { - acc[curr.pk] = mapStudent(curr, state.studentMap) - return acc - }, {}) -} -function SET_STUDENT (state: RootState, student: StudentInfoForListView) { - Vue.set(state.students, student.pk, mapStudent({ - ...state.students[student.pk], - ...student - }, state.studentMap)) -} -// TODO proper types for student map -export interface StudentMap { - [pseudoMatrikelNo: string]: { - matrikelNo: string, - name: string, - email: string - } -} -function SET_STUDENT_MAP (state: RootState, map: StudentMap) { - state.studentMap = map -} -function SET_SUBMISSION (state: RootState, submission: SubmissionNoType) { - Vue.set(state.submissions, submission.pk, submission) -} -function SET_STATISTICS (state: RootState, statistics: Statistics) { - state.statistics = { - ...state.statistics, - ...statistics - } -} -function UPDATE_SUBMISSION_TYPE (state: RootState, submissionType: SubmissionType) { - const updatedSubmissionType = { - ...state.submissionTypes[submissionType.pk], - ...submissionType - } - Vue.set(state.submissionTypes, submissionType.pk, updatedSubmissionType) -} -// this func is being exported to use it's name in the latInteractionPlugin -export function SET_LAST_INTERACTION (state: RootState) { - state.lastAppInteraction = Date.now() -} -function RESET_STATE (state: RootState) { - Object.assign(state, initialState()) -} - -function mapStudent (student: StudentInfoForListView, map: any) { - if (Object.keys(map).length > 0) { - if (!student.matrikelNo) { - throw Error('Student objects need matrikelNo key in order to apply mapping') - } - return { - ...student, - ...map[student.matrikelNo] - } - } - return student -} - -export const mutations = { - SET_LAST_INTERACTION: mb.commit(SET_LAST_INTERACTION), - SET_EXAM_TYPES: mb.commit(SET_EXAM_TYPES), - SET_STUDENTS: mb.commit(SET_STUDENTS), - SET_STUDENT: mb.commit(SET_STUDENT), - SET_STUDENT_MAP: mb.commit(SET_STUDENT_MAP), - SET_SUBMISSION: mb.commit(SET_SUBMISSION), - SET_STATISTICS: mb.commit(SET_STATISTICS), - UPDATE_SUBMISSION_TYPE: mb.commit(UPDATE_SUBMISSION_TYPE), - RESET_STATE: mb.commit(RESET_STATE) -} diff --git a/grady/frontend/src/store/store.ts b/grady/frontend/src/store/store.ts deleted file mode 100644 index 32f7c915..00000000 --- a/grady/frontend/src/store/store.ts +++ /dev/null @@ -1,94 +0,0 @@ -import Vuex, { Plugin } from 'vuex' -import Vue from 'vue' -import { getStoreBuilder } from 'vuex-typex' - -// @ts-ignore -import './modules/ui' -// @ts-ignore -import './modules/authentication' -// @ts-ignore -import './modules/feedback_list/feedback-table' -// @ts-ignore -import './modules/assignments' -// @ts-ignore -import './modules/submission-notes' -// @ts-ignore -import './modules/student-page' -// @ts-ignore -import './modules/tutor-overview' -// @ts-ignore -import './modules/config' - -import './mutations' -import './actions' -import './getters' - -import { UIState } from './modules/ui' -import { AuthState } from './modules/authentication' -import { AssignmentsState } from './modules/assignments' -import { FeedbackTableState } from './modules/feedback_list/feedback-table' -import { SubmissionNotesState } from './modules/submission-notes' -import { StudentPageState } from './modules/student-page' -import { TutorOverviewState } from './modules/tutor-overview' - -import { - Exam, - Statistics, - StudentInfoForListView, - SubmissionNoType, - SubmissionType, -} from '@/models' -import { FeedbackLabelsState } from './modules/feedback-labels' -import { ConfigState } from './modules/config' -import { StudentMap } from './mutations' - -Vue.use(Vuex) - -export interface RootInitialState { - lastAppInteraction: number - examTypes: {[pk: string]: Exam} - submissionTypes: {[pk: string]: SubmissionType} - submissions: {[pk: string]: SubmissionNoType} - students: {[pk: string]: StudentInfoForListView} - studentMap: StudentMap // is used to map obfuscated student data back to the original - statistics: Statistics -} - -export interface RootState extends RootInitialState{ - UI: UIState, - Authentication: AuthState, - FeedbackTable: FeedbackTableState, - Assignments: AssignmentsState, - SubmissionNotes: SubmissionNotesState, - StudentPage: StudentPageState, - TutorOverview: TutorOverviewState, - FeedbackLabels: FeedbackLabelsState - ConfigModule: ConfigState -} - -export function initialState (): RootInitialState { - return { - lastAppInteraction: Date.now(), - examTypes: {}, - submissionTypes: {}, - submissions: {}, - students: {}, - studentMap: {}, // is used to map obfuscated student data back to the original - statistics: { - submissionsPerType: 0, - submissionsPerStudent: 0, - currentMeanScore: 0, - submissionTypeProgress: [] - } - } -} - -export const persistedStateKey = 'grady' - -const store = getStoreBuilder<RootState>().vuexStore({ - strict: process.env.NODE_ENV === 'development', - // TODO is there a better way than casting the initialState ? - state: initialState() as RootState -}) - -export default store diff --git a/grady/frontend/src/util/form-rules.ts b/grady/frontend/src/util/form-rules.ts deleted file mode 100644 index 7eb32321..00000000 --- a/grady/frontend/src/util/form-rules.ts +++ /dev/null @@ -1,5 +0,0 @@ -type Rule = (value: unknown) => true | string - -export const required: Rule = function (v) { - return !!v || 'This field is required.' -} diff --git a/grady/frontend/src/util/helpers.ts b/grady/frontend/src/util/helpers.ts deleted file mode 100644 index 314db84f..00000000 --- a/grady/frontend/src/util/helpers.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { AxiosError, AxiosResponse } from 'axios' -import { Dispatch } from 'vuex' -import { MutationHandler } from 'vuex-typex' - -export function nameSpacer (namespace: string) { - return function (commitType: string) { - return namespace + commitType - } -} - -export function getObjectValueByPath (obj: any, path: string): any { - // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621 - if (!path || path.constructor !== String) return - path = path.replace(/\[(\w+)\]/g, '.$1') // convert indexes to properties - path = path.replace(/^\./, '') // strip a leading dot - const a = path.split('.') - for (let i = 0, n = a.length; i < n; ++i) { - const k = a[i] - if (obj instanceof Object && k in obj) { - obj = obj[k] - } else { - return - } - } - return obj -} - -interface GetSetPair<P> { - get: () => any, - set: (val: P) => void -} - -/** - * Use this method to generate a computed property accessing the store for a Vue instance. - * The get method will return the value at this.$store.state.<path>. - * The set method will commit the passed value as payload for the specified mutation - * @param path to the store variable/object being returned - * @param mutation name of mutation type - * @param namespace to prepend the mutation type with - * @returns {*} - */ -export function createComputedGetterSetter<P> ( - { path, mutation, namespace }: - {path: string, mutation: string | ((payload?: P) => void), namespace:string}): GetSetPair<P> { - return { - get (): any { - return getObjectValueByPath((this as any).$store.state, path) - }, - set (val: P): void { - if (typeof mutation === 'string') { - (this as any).$store.commit(`${namespace ? namespace + '/' : ''}${mutation}`, val) - } else { - mutation(val) - } - } - } -} - -interface StateMapperItem { - name: string, - mutation: string, - path?: string -} - -interface MappedState { - [key: string]: GetSetPair<any> -} - -/** - * Returns an object of generated computed getter/setter pairs. - * Can be used to quickly bind a stores state and corresponding setters to a vue component - * @param namespace optional namespace of mutations - * @param pathPrefix if set, all items path will be prepended by the path prefix - * @param items array that contains objects {name, path, mutation} - */ -export function mapStateToComputedGetterSetter ( - { namespace = '', pathPrefix = '', items = [] }: - {namespace: string, pathPrefix: string, items: StateMapperItem[]}): MappedState { - return items.reduce((acc: MappedState, curr) => { - // if no path is give, use name - const itemPath = curr.path || curr.name - const path = pathPrefix ? `${pathPrefix}.${itemPath}` : itemPath - acc[curr.name] = createComputedGetterSetter({ mutation: curr.mutation, path, namespace }) - return acc - }, {}) -} - -// thanks to rsp -// https://stackoverflow.com/questions/12303989/cartesian-product-of-multiple-arrays-in-javascript/43053803#43053803 -function cartesianHelper (a: Array<any>, b: Array<any>): Array<Array<any>> { - return ([] as Array<any>).concat(...a.map((a: any) => b.map((b: any) => [].concat(a, b)))) -} -export function cartesian (a: Array<any>, b?: Array<any>, ...c: Array<Array<any>>): Array<Array<any>> { - return b ? cartesian(cartesianHelper(a, b), ...c) : a -} - -// flatten an array -export function flatten (list: any[]): any[] { - return list.reduce( - (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [] - ) -} - -export function objectifyArray<T, P extends keyof T> (arr: T[], key: P): {[index: string]: T} { - return arr.reduce((acc: any, curr) => { - acc[curr[key]] = curr - return acc - }, {}) -} - -interface OnceFunc { - (): any - reset: () => void -} - -export function once (fn: Function, context?: object): OnceFunc { - let result: any - let wrapped = function (this: any) { - if (!result) { - result = fn.apply(context || this, arguments) - } - return result - } as OnceFunc - wrapped.reset = function () { result = undefined } - return wrapped -} - -export function syntaxPostProcess (code: string): string { - const spanPrefix = '<span class="hljs-comment">' - const spanSuffix = '</span>' - - code = code.replace(/(<span class="hljs-comment">)([\s\S]*?)(<\/span>)/gim, (match, p1, p2, p3) => { - const splitted = p2.split(/\n/) - for (let i = 0; i < splitted.length; i++) { - splitted[i] = spanPrefix + splitted[i] + spanSuffix - } - - return splitted.join('\n') - }) - return code -} - -export function parseBlacklist (blacklist: Array<string>): string { - return blacklist.reduce((acc, curr) => { - return acc + '|' + curr - }) -} - -export function parseErrorNotification (response: AxiosResponse): string { - if (!response.data || Object.keys(response.data).length === 0) { - return 'There is no useful error data. Please ask the staff for help.' - } else { - let msg = '<ul>' - function pickRecursive(obj: any) { - if (obj instanceof Object) { - for (let k of Object.keys(obj)) { - pickRecursive(obj[k]) - } - } else { - msg += '<li>' + obj + '</li>' - } - } - pickRecursive(response.data) - msg += '</ul>' - - if (response.status === 404) { - msg += '<br/>If you experience unusual behaviour, finish all unfinished work and relog.' + - ' If not, this is probably not a critical error.' - } - - return msg - } -} diff --git a/grady/frontend/src/util/interceptor.ts b/grady/frontend/src/util/interceptor.ts deleted file mode 100644 index 109706fe..00000000 --- a/grady/frontend/src/util/interceptor.ts +++ /dev/null @@ -1,23 +0,0 @@ -import instance from '@/main' -import { parseErrorNotification, parseBlacklist } from '@/util/helpers' - - -const errorUrlBlacklist = [ - '/api/get-token/', - '/api/.*/change_password/', - '/api/corrector/register/', - '/api/assignment/' -] -const blackListRegExp = new RegExp(parseBlacklist(errorUrlBlacklist), 'g') - -export function errorInterceptor (error: any): any { - if (!error.response.request.responseURL.match(blackListRegExp)) { - instance.$notify({ - title: 'Request failed.', - text: parseErrorNotification(error.response), - type: 'error', - duration: -1 - }) - } - return Promise.reject(error) -} diff --git a/grady/frontend/src/util/shortkeys.ts b/grady/frontend/src/util/shortkeys.ts deleted file mode 100644 index 996c04d2..00000000 --- a/grady/frontend/src/util/shortkeys.ts +++ /dev/null @@ -1,26 +0,0 @@ -import Vue from 'vue' - -const shortkeyTypes = { - numeric: (key: string) => { return Number(key) >= 0 && Number(key) <= 9 } -} - -const handlerFunc = (el: any, bind: any) => { - return (event: KeyboardEvent) => { - // handle numeric key press - if (bind.value === 'numeric' && shortkeyTypes.numeric(event.key)) { - const e = new KeyboardEvent('shortkey', { bubbles: false, key: event.key }) - el.dispatchEvent(e) - } - } -} - -// add the v-shortkey directive to Vue -// usage: <tag v-shortkey="<shortkeyType>" @shortkey="<handlerFunc>"></tag> -Vue.directive('shortkey', { - bind: (el, bind) => { - window.addEventListener('keypress', handlerFunc(el, bind)) - }, - unbind: (el, bind) => { - window.removeEventListener('keypress', handlerFunc(el, bind)) - } -}) \ No newline at end of file diff --git a/grady/frontend/tsconfig.json b/grady/frontend/tsconfig.json deleted file mode 100644 index 8e57f591..00000000 --- a/grady/frontend/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "compilerOptions": { - "target": "es2018", - "module": "esnext", - "strict": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "esModuleInterop": true, - "sourceMap": true, - "baseUrl": ".", - "types": [ - "webpack-env", - "mocha", - "chai" - ], - "paths": { - "@/*": [ - "src/*" - ] - }, - "lib": [ - "es2017", - "es2018.promise", - "dom", - "dom.iterable", - "scripthost" - ] - }, - "include": [ - "@types/", - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} diff --git a/grady/frontend/vue.config.js b/grady/frontend/vue.config.js deleted file mode 100644 index 74cd1213..00000000 --- a/grady/frontend/vue.config.js +++ /dev/null @@ -1,23 +0,0 @@ -const path = require('path') - -const projectRoot = path.resolve(__dirname) - -module.exports = { - assetsDir: 'static', - devServer: { - allowedHosts: ['localhost'], - host: 'localhost' - }, - configureWebpack: config => { - config.resolve.alias['@'] = `${projectRoot}/src` - - if (process.env.NODE_ENV === 'development') { - config.devtool = 'source-map' - } - - // keep_fnames ist set to true because vuex-typex is dependant on the function names - if (process.env.NODE_ENV === 'production') { - config.optimization.minimizer[0].options.terserOptions.keep_fnames = true - } - } -} diff --git a/grady/frontend/yarn.lock b/grady/frontend/yarn.lock deleted file mode 100644 index f13a22aa..00000000 --- a/grady/frontend/yarn.lock +++ /dev/null @@ -1,8283 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.8.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.16.0", "@babel/parser@^7.7.0": - version "7.16.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.2.tgz#3723cd5c8d8773eef96ce57ea1d9b7faaccd12ac" - integrity sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw== - -"@babel/template@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/traverse@^7.7.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.0.tgz#965df6c6bfc0a958c1e739284d3c9fa4a6e3c45b" - integrity sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.16.0", "@babel/types@^7.7.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.1": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@intervolga/optimize-cssnano-plugin@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" - integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== - dependencies: - cssnano "^4.0.0" - cssnano-preset-default "^4.0.0" - postcss "^7.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@soda/friendly-errors-webpack-plugin@^1.7.1": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240" - integrity sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow== - dependencies: - chalk "^2.4.2" - error-stack-parser "^2.0.2" - string-width "^2.0.0" - strip-ansi "^5" - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/file-saver@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.3.tgz#b734c4f5a04d20615eaed3dc106e2ab321082009" - integrity sha512-MBIou8pd/41jkff7s97B47bc9+p0BszqqDJsO51yDm49uUxeKzrfuNl5fSLC6BpLEWKA8zlwyqALVmXrFwoBHQ== - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/highlight.js@^9.12.3": - version "9.12.4" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.4.tgz#8c3496bd1b50cc04aeefd691140aa571d4dbfa34" - integrity sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww== - -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*": - version "16.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42" - integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/webpack-env@^1.15.2": - version "1.16.3" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" - integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== - -"@typescript-eslint/eslint-plugin@^1.1.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" - integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g== - dependencies: - "@typescript-eslint/experimental-utils" "1.13.0" - eslint-utils "^1.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" - tsutils "^3.7.0" - -"@typescript-eslint/eslint-plugin@^4.13.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" - integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" - eslint-scope "^4.0.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^1.1.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" - integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.13.0" - "@typescript-eslint/typescript-estree" "1.13.0" - eslint-visitor-keys "^1.0.0" - -"@typescript-eslint/parser@^4.13.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" - integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== - dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@vue/cli-overlay@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.12.1.tgz#bdfde8f7123561ab06e4e4c60b854cc5092f5ab1" - integrity sha512-Bym92EN+lj+cNRN2ozbYyH+V8DMXWGbCDUk+hiJ4EYDBZfBkZKvalk1/mOBFwyxiopnnbOEBAAhL/UuMQ1xARg== - -"@vue/cli-plugin-eslint@^3.11.0": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.12.1.tgz#302c463867f38e790bb996eafdf7159c782dc8cf" - integrity sha512-tVTZlEZsy3sQbO4LLWFK11yzlWwqVAqaM+IY+BeWHITBzEJKh2KmouG+x6x/reXiU3qROsMJ4Ej3Hs8buSMWyQ== - dependencies: - "@vue/cli-shared-utils" "^3.12.1" - babel-eslint "^10.0.1" - eslint-loader "^2.1.2" - globby "^9.2.0" - webpack "^4.0.0" - yorkie "^2.0.0" - optionalDependencies: - eslint "^4.19.1" - eslint-plugin-vue "^4.7.1" - -"@vue/cli-plugin-typescript@^4.5.10": - version "4.5.15" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.15.tgz#14ba0ddcf3b94e73148ff84ac904fbc5346c14d1" - integrity sha512-g2HDBwWBboTzNvVrS+w4Ctl7CCErboTlx7PyQrXgY+7uGdPVUT9PWuv4DjaZhosSk7WI3qSIpruCBIkdHX5bwQ== - dependencies: - "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.15" - cache-loader "^4.1.0" - fork-ts-checker-webpack-plugin "^3.1.1" - globby "^9.2.0" - thread-loader "^2.1.3" - ts-loader "^6.2.2" - tslint "^5.20.1" - webpack "^4.0.0" - yorkie "^2.0.0" - optionalDependencies: - fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" - -"@vue/cli-service@^3.11.0": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.12.1.tgz#13220b1c189254e7c003390df329086f9b6e77e6" - integrity sha512-PDxNrTGnSKzeV1ruFlsRIAO8JcPizwT0EJXq9GeyooU+p+sOkv7aKkCBJQVYNjZapD1NOGWx6CvAAC/wAW+gew== - dependencies: - "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@soda/friendly-errors-webpack-plugin" "^1.7.1" - "@vue/cli-overlay" "^3.12.1" - "@vue/cli-shared-utils" "^3.12.1" - "@vue/component-compiler-utils" "^3.0.0" - "@vue/preload-webpack-plugin" "^1.1.0" - "@vue/web-component-wrapper" "^1.2.0" - acorn "^6.1.1" - acorn-walk "^6.1.1" - address "^1.0.3" - autoprefixer "^9.5.1" - browserslist "^4.5.4" - cache-loader "^2.0.1" - case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^2.4.2" - cli-highlight "^2.1.0" - clipboardy "^2.0.0" - cliui "^5.0.0" - copy-webpack-plugin "^4.6.0" - css-loader "^1.0.1" - cssnano "^4.1.10" - current-script-polyfill "^1.0.0" - debug "^4.1.1" - default-gateway "^5.0.2" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - escape-string-regexp "^1.0.5" - file-loader "^3.0.1" - fs-extra "^7.0.1" - globby "^9.2.0" - hash-sum "^1.0.2" - html-webpack-plugin "^3.2.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.8.0" - minimist "^1.2.0" - ora "^3.4.0" - portfinder "^1.0.20" - postcss-loader "^3.0.0" - read-pkg "^5.0.0" - semver "^6.0.0" - slash "^2.0.0" - source-map-url "^0.4.0" - ssri "^6.0.1" - string.prototype.padend "^3.0.0" - terser-webpack-plugin "^1.2.3" - thread-loader "^2.1.2" - url-loader "^1.1.2" - vue-loader "^15.7.0" - webpack "^4.0.0" - webpack-bundle-analyzer "^3.3.0" - webpack-chain "^4.11.0" - webpack-dev-server "^3.4.1" - webpack-merge "^4.2.1" - -"@vue/cli-shared-utils@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz#bcf076287ddadeebbb97c6a748dfe9ff50ec8df0" - integrity sha512-jFblzRFjutGwu5utOKdVlPlsbA1lBUNNQlAThzNqej+JtTKJjnvjlhjKX0Gq0oOny5FjKWhoyfQ74p9h1qE6JQ== - dependencies: - "@hapi/joi" "^15.0.1" - chalk "^2.4.1" - execa "^1.0.0" - launch-editor "^2.2.1" - lru-cache "^5.1.1" - node-ipc "^9.1.1" - open "^6.3.0" - ora "^3.4.0" - request "^2.87.0" - request-promise-native "^1.0.7" - semver "^6.0.0" - string.prototype.padstart "^3.0.0" - -"@vue/cli-shared-utils@^4.5.15": - version "4.5.15" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.15.tgz#dba3858165dbe3465755f256a4890e69084532d6" - integrity sha512-SKaej9hHzzjKSOw1NlFmc6BSE0vcqUQMQiv1cxQ2DhVyy4QxZXBmzmiLBUBe+hYZZs1neXW7n//udeN9bCAY+Q== - dependencies: - "@hapi/joi" "^15.0.1" - chalk "^2.4.2" - execa "^1.0.0" - launch-editor "^2.2.1" - lru-cache "^5.1.1" - node-ipc "^9.1.1" - open "^6.3.0" - ora "^3.4.0" - read-pkg "^5.1.1" - request "^2.88.2" - semver "^6.1.0" - strip-ansi "^6.0.0" - -"@vue/component-compiler-utils@^3.0.0", "@vue/component-compiler-utils@^3.1.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" - integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2 || ^2.0.0" - -"@vue/eslint-config-typescript@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-4.0.0.tgz#a202983598a4a826460cbb8ee43826875b0f6673" - integrity sha512-uSMAMgw4xDgVdZQhpbtJRo8nMV4oOy3Ht8olfOo7xvYFYLMF2JZ1tDRKd9/NSusxA72O2Vma+HzmyzDHg9evcQ== - dependencies: - "@typescript-eslint/eslint-plugin" "^1.1.0" - "@typescript-eslint/parser" "^1.1.0" - -"@vue/preload-webpack-plugin@^1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" - integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== - -"@vue/web-component-wrapper@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" - integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - -acorn-jsx@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.5.0: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.2, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -address@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-html-community@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.5.1: - version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== - dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^10.0.1: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.5.4: - version "4.17.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" - integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== - dependencies: - caniuse-lite "^1.0.30001274" - electron-to-chromium "^1.3.886" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-loader@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07" - integrity sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ== - dependencies: - loader-utils "^1.1.0" - mkdirp "^0.5.1" - neo-async "^2.6.0" - normalize-path "^3.0.0" - schema-utils "^1.0.0" - -cache-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" - integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^3.0.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^2.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001274: - version "1.0.30001279" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz#eb06818da481ef5096a3b3760f43e5382ed6b0ce" - integrity sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ== - -case-sensitive-paths-webpack-plugin@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.0, chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.0.1, chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" - integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== - dependencies: - source-map "~0.6.0" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-highlight@^2.1.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.0.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -clipboardy@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.12.1, commander@^2.18.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" - integrity sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA== - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" - minimatch "^3.0.4" - p-limit "^1.0.0" - serialize-javascript "^1.4.0" - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - 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@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" - integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.0.0, cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -current-script-polyfill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" - integrity sha1-8xz35PPiGLBybnOMqSoC00iO9hU= - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -deepmerge@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-gateway@^5.0.2: - version "5.0.5" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10" - integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== - dependencies: - execa "^3.3.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -easy-stack@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" - integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-to-chromium@^1.3.886: - version "1.3.892" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.892.tgz#0e3f5bb1de577e2e5a6dffd5a4b278c4a735cd39" - integrity sha512-YDW4yIjdfMnbRoBjRZ/aNQYmT6JgQFLwmTSDRJMQdrY4MByEzppdXp3rnJ0g4LBWcsYTUvwKKClYN1ofZ0COOQ== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.2: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.2, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-loader@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - -eslint-plugin-vue@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz#c829b9fc62582c1897b5a0b94afd44ecca511e63" - integrity sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA== - dependencies: - vue-eslint-parser "^2.0.3" - -eslint-plugin-vue@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" - integrity sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw== - dependencies: - vue-eslint-parser "^5.0.0" - -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" - integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.0, eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -espree@^3.5.2, espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -espree@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" - integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== - dependencies: - acorn "^6.0.2" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.0, esquery@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-pubsub@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" - integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.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" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.16.3, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - -file-saver@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" - integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.0.0: - version "1.14.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" - integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -"fork-ts-checker-webpack-plugin-v5@npm:fork-ts-checker-webpack-plugin@^5.0.11": - version "5.2.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.2.1.tgz#79326d869797906fa8b24e2abcf9421fc805450d" - integrity sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -fork-ts-checker-webpack-plugin@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - 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" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -highlight.js@^9.12.0: - version "9.18.5" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" - integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.3, ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.9" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - 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.12" - 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" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -javascript-stringify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" - integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= - -js-message@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47" - integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== - -js-queue@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.2.tgz#0be590338f903b36c73d33c31883a821412cd482" - integrity sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA== - dependencies: - easy-stack "^1.0.1" - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -launch-editor-middleware@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" - integrity sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== - dependencies: - launch-editor "^2.2.1" - -launch-editor@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" - integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== - dependencies: - chalk "^2.3.0" - shell-quote "^1.6.1" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -loader-fs-cache@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.3.1, loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.defaultsdeep@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.transform@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" - integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= - -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memfs@^3.1.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" - integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== - dependencies: - fs-monkey "1.0.3" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.0, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.4.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@^0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" - integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-ipc@^9.1.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.2.1.tgz#b32f66115f9d6ce841dc4ec2009d6a733f98bb6b" - integrity sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ== - dependencies: - event-pubsub "4.3.0" - js-message "1.0.7" - js-queue "2.0.2" - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -opener@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^1.0.0, p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - -portfinder@^1.0.20, portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.2: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^6.0.1, postcss@^6.0.23: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -"prettier@^1.18.2 || ^2.0.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -pretty-error@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0, pump@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -read-pkg@^5.0.0, read-pkg@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.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@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.0.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3" - integrity sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.3" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.padstart@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz#4551d0117d9501692ec6000b15056ac3f816cfa5" - integrity sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.2.3, terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -text-table@^0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -thread-loader@^2.1.2, thread-loader@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" - integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== - dependencies: - loader-runner "^2.3.1" - loader-utils "^1.1.0" - neo-async "^2.6.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-loader@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^4.0.0" - semver "^6.0.0" - -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslint@^5.20.1: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -tsutils@^3.21.0, tsutils@^3.7.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^4.1.3: - version "4.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" - integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.0, unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - -url-parse@^1.4.3, url-parse@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v-clipboard@^2.0.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/v-clipboard/-/v-clipboard-2.2.3.tgz#f5db3d7004145041b6d7d06ca48236de4cee3a41" - integrity sha512-Wg+ObZoYK6McHb5OOCFWvm0R7xHp0/p0G1ocx/8bO22jvA/yVY05rADbfiztwCokXBNfQuGv/XSd1ozcTFgekw== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue-class-component@^6.0.0, vue-class-component@^6.2.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-6.3.2.tgz#e6037e84d1df2af3bde4f455e50ca1b9eec02be6" - integrity sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A== - -vue-eslint-parser@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" - integrity sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw== - dependencies: - debug "^3.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.2" - esquery "^1.0.0" - lodash "^4.17.4" - -vue-eslint-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz#00f4e4da94ec974b821a26ff0ed0f7a78402b8a1" - integrity sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g== - dependencies: - debug "^4.1.0" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" - espree "^4.1.0" - esquery "^1.0.1" - lodash "^4.17.11" - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^15.7.0: - version "15.9.8" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.8.tgz#4b0f602afaf66a996be1e534fb9609dc4ab10e61" - integrity sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-notification@^1.3.12: - version "1.3.20" - resolved "https://registry.yarnpkg.com/vue-notification/-/vue-notification-1.3.20.tgz#d85618127763b46f3e25b8962b857947d5a97cbe" - integrity sha512-vPj67Ah72p8xvtyVE8emfadqVWguOScAjt6OJDEUdcW5hW189NsqvfkOrctxHUUO9UYl9cTbIkzAEcPnHu+zBQ== - -vue-property-decorator@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-7.3.0.tgz#d50d67f0b0f1c814f9f2fba36d6eeccbcc62dbb6" - integrity sha512-HarXfTQ/Nxm4s/APpAaGIGHq5ZzslApImQy8ZrtkfGamw8rUFAVgMS5C50/AQ80+wfw3Wpnf4bNzbmj75m/k2Q== - dependencies: - vue-class-component "^6.2.0" - -vue-router@^3.0.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.3.tgz#041048053e336829d05dafacf6a8fb669a2e7999" - integrity sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg== - -vue-style-loader@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.12: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" - integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^2.6.12: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" - integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== - -vuetify@^2.4.5: - version "2.5.14" - resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.5.14.tgz#0545355fdea0ac2b37dbcb1dca405b62041f551c" - integrity sha512-3efk3WnOvh+r9muZ4Ie0FVfFVmPS/ag+l/20qGA45lXZAJuyLeYxJ5gXs5xnCpml1g8xmJfDQPvi8xC6DDuCdg== - -"vuex-typex@https://github.com/robinhundt/vuex-typex.git": - version "3.0.1" - resolved "https://github.com/robinhundt/vuex-typex.git#3e0da4d1e01eef6e0eed609ef97cb036ca8a692f" - dependencies: - deepmerge "^2.1.1" - vuex "^3.0.0" - -vuex@^3.0.0, vuex@^3.0.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" - integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webpack-bundle-analyzer@^3.3.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" - integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.19" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" - -webpack-chain@^4.11.0: - version "4.12.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" - integrity sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^1.6.0" - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.4.1: - version "3.11.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#8c86b9d2812bf135d3c9bce6f07b718e30f7c3d3" - integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA== - dependencies: - ansi-html-community "0.0.8" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.0.0, webpack@^4.41.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - -ws@^6.0.0, ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^16.0.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yorkie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" - integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== - dependencies: - execa "^0.8.0" - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" diff --git a/grady/functional_tests/.gitignore b/grady/functional_tests/.gitignore deleted file mode 100644 index 975c04db..00000000 --- a/grady/functional_tests/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -export.json -export.csv -screenshots diff --git a/grady/functional_tests/__init__.py b/grady/functional_tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/grady/functional_tests/data/hektor.json b/grady/functional_tests/data/hektor.json deleted file mode 100644 index 435d147f..00000000 --- a/grady/functional_tests/data/hektor.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "meta": { - "version": "6.0.0" - }, - "data": { - "module": { - "module_reference": "B.Inf.1801", - "total_score": 50, - "pass_score": 25, - "pass_only": false - }, - "submission_types": [ - { - "name": "Eine Bibliothek für Permutationen (I1-ID: l120mlc005h0)", - "full_score": 50, - "description": "A <b>description</b>!", - "solution": "Blub", - "programming_language": "java" - } - ], - "students": [ - { - "fullname": "Test, User", - "identifier": "20000000", - "username": "TU20000000", - "submissions": [ - { - "code": "234;", - "type": "Eine Bibliothek für Permutationen (I1-ID: l120mlc005h0)", - "tests": {} - } - ] - } - ] - } -} diff --git a/grady/functional_tests/test_auto_logout.py b/grady/functional_tests/test_auto_logout.py deleted file mode 100644 index ba936bbf..00000000 --- a/grady/functional_tests/test_auto_logout.py +++ /dev/null @@ -1,66 +0,0 @@ -import datetime -import logging -from selenium.webdriver.common.by import By -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.common.action_chains import ActionChains - -from core.models import UserAccount -from functional_tests.util import (GradyTestCase, login, reset_browser_after_test) -from util import factory_boys as fact - -from rest_framework_jwt.settings import api_settings - -log = logging.getLogger(__name__) - - -class TestAutoLogout(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - self.username = 'reviewer' - self.password = 'p' - self.role = UserAccount.TUTOR - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=self.role - ) - - def tearDown(self): - api_settings.reload() - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def test_auto_logout_can_continue(self): - with self.settings(JWT_AUTH={ - 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=15), - 'JWT_ALLOW_REFRESH': True, - } - ): - self._login() - initial_token = self.browser.execute_script( - 'return document.getElementById("app").__vue__.$store' - '._modules.root.state.Authentication.token' - ) - logout_dialog = self.browser.find_element_by_id('logout-dialog') - WebDriverWait(self.browser, 15, 0.2).until( - ec.visibility_of_element_located((By.ID, 'logout-dialog'))) - # the below line should work for clicking the button, but something - # obscures it, thus the workaround below the comment - # logout_dialog.find_element_by_id('continue-btn').click() - continue_btn = logout_dialog.find_element_by_id('continue-btn') - ActionChains(self.browser).move_to_element(continue_btn).click().perform() - WebDriverWait(self.browser, 15, 0.2).until( - ec.invisibility_of_element_located((By.ID, 'logout-dialog'))) - self.assertNotIn('login', self.browser.current_url) - new_token = self.browser.execute_script( - 'return document.getElementById("app").__vue__.$store.' - '_modules.root.state.Authentication.token' - ) - self.assertNotEqual(initial_token, new_token) diff --git a/grady/functional_tests/test_export_modal.py b/grady/functional_tests/test_export_modal.py deleted file mode 100644 index 61387780..00000000 --- a/grady/functional_tests/test_export_modal.py +++ /dev/null @@ -1,143 +0,0 @@ -import json -import os -from pathlib import Path -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.action_chains import ActionChains - - -from core.models import UserAccount -from functional_tests.util import GradyTestCase, login, reset_browser_after_test -from util import factory_boys as fact - - -def expect_file_to_be_downloaded(path): - """ - Checks if a file has finished downloading by checking if a file exists at the path and - no `.part` file is present in the directory containing path - :param path: path to check - :return: - """ - def condition(*args): - file_present = Path(path).is_file() - partial_file_present = any(dir_path.suffix == ".part" for - dir_path in Path(path).parent.iterdir()) - return file_present and not partial_file_present - return condition - - -JSON_EXPORT_FILE = os.path.join(os.path.dirname(__file__), 'export.json') - - -class ExportTestModal(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - self.username = 'reviewer' - self.password = 'p' - self.role = UserAccount.REVIEWER - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=self.role - ) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def test_export_red_uncorrected_submissions(self): - def export_btn_is_not_green(*args): - exports_btn = self.browser.find_element_by_id('export-btn') - return 'success' not in exports_btn.get_attribute('class') - - fact.SubmissionFactory() - self._login() - WebDriverWait(self.browser, 10).until(export_btn_is_not_green) - - def test_export_warning_tooltip_uncorrected_submissions(self): - fact.SubmissionFactory() - self._login() - self.browser.execute_script( - "document.getElementById('export-btn').dispatchEvent(new Event('mouseenter'));" - ) - tooltip_uncorrected = self.browser.find_element_by_id('uncorrected-tooltip') - self.assertNotEqual(None, tooltip_uncorrected) - self.assertRaises(Exception, self.browser.find_element_by_id, 'corrected-tooltip') - - def test_export_green_all_corrected(self): - def export_btn_is_green(*args): - exports_btn = self.browser.find_element_by_id('export-btn') - return 'success' in exports_btn.get_attribute('class') - - fact.SubmissionTypeFactory() - self._login() - WebDriverWait(self.browser, 10).until(export_btn_is_green) - - def test_export_all_good_tooltip_all_corrected(self): - fact.SubmissionTypeFactory() - self._login() - self.browser.execute_script( - "document.getElementById('export-btn').dispatchEvent(new Event('mouseenter'));" - ) - tooltip_corrected = self.browser.find_element_by_id('corrected-tooltip') - self.assertNotEqual(None, tooltip_corrected) - self.assertRaises(Exception, self.browser.find_element_by_id, 'uncorrected-tooltip') - - def test_export_list_popup_contains_correct_items(self): - self._login() - export_btn = self.browser.find_element_by_id('export-btn') - export_btn.click() - export_menu = self.browser.find_element_by_class_name('menuable__content__active') - export_list = export_menu.find_element_by_class_name('v-list') - list_elements = export_list.find_elements_by_tag_name('div') - self.assertEqual(2, len(list_elements)) - self.assertEqual('Export student scores', list_elements[0].text) - self.assertEqual('Export whole instance data', list_elements[1].text) - - def test_export_student_scores_as_json(self): - fact.StudentInfoFactory() - fact.SubmissionFactory() - self._login() - export_btn = self.browser.find_element_by_id('export-btn') - export_btn.click() - export_scores = self.browser.find_element_by_id('export-list0') - export_scores.click() - data_export_modal = self.browser.find_element_by_id('data-export-modal') - data_export_btn = data_export_modal.find_element_by_id('export-data-download-btn') - ActionChains(self.browser).move_to_element(data_export_btn).click().perform() - WebDriverWait(self.browser, 10).until(expect_file_to_be_downloaded(JSON_EXPORT_FILE)) - try: - with open(JSON_EXPORT_FILE) as f: - data = json.load(f) - - self.assertEqual('B.Inf.4242 Test Module', - data[0]['Exams'][0]['exam']['moduleReference']) - except Exception as e: - print(data) - raise e - finally: - os.remove(JSON_EXPORT_FILE) - - def test_export_instance(self): - fact.SubmissionFactory() - self._login() - self.browser.find_element_by_id('export-btn').click() - self.browser.find_element_by_id('export-list1').click() - instance_export_modal = self.browser.find_element_by_id('instance-export-modal') - # instance_export_modal.find_element_by_id('instance-export-dl').click() - export_btn = instance_export_modal.find_element_by_id('instance-export-dl') - ActionChains(self.browser).move_to_element(export_btn).click().perform() - WebDriverWait(self.browser, 10).until(expect_file_to_be_downloaded(JSON_EXPORT_FILE)) - try: - with open(JSON_EXPORT_FILE) as f: - data = json.load(f) - self.assertEqual('B.Inf.4242 Test Module', data['examTypes'][0]['moduleReference']) - except Exception as e: - raise e - finally: - os.remove(JSON_EXPORT_FILE) diff --git a/grady/functional_tests/test_feedback_creation.py b/grady/functional_tests/test_feedback_creation.py deleted file mode 100644 index 4bfcfb97..00000000 --- a/grady/functional_tests/test_feedback_creation.py +++ /dev/null @@ -1,357 +0,0 @@ -from selenium.webdriver import ActionChains -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.common.by import By - -from core.models import UserAccount, Submission, FeedbackComment -from functional_tests.util import (GradyTestCase, login, reset_browser_after_test, - go_to_subscription, wait_until_code_changes, - correct_some_submission, assertion_is_true, - reconstruct_submission_code, wait_until_element_count_equals, - reconstruct_solution_code) -from util import factory_boys as fact - - -class UntestedParent: - class TestFeedbackCreationGeneric(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - self.sub_type = fact.SubmissionTypeFactory.create() - fact.SubmissionFactory.create_batch(2, type=self.sub_type) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def write_comments_on_lines(self, line_comment_tuples): - """ line_comment_tuples is an iterable containing tuples of - (line_no, comment) where the line number starts at 1 - """ - - sub_table = self.browser.find_element_by_class_name('submission-table') - lines = sub_table.find_elements_by_tag_name('tr') - - for (line_no, comment) in line_comment_tuples: - line = lines[line_no-1] - line.find_element_by_tag_name('button').click() - textarea = line.find_element_by_tag_name('textarea') - textarea.send_keys(comment) - line.find_element_by_id('submit-comment').click() - - def test_student_text_is_correctly_displayed(self): - self._login() - go_to_subscription(self) - code = reconstruct_submission_code(self) - # query db for Submission with seen code, throws if not present and test fails - Submission.objects.get(text=code) - - def test_submission_type_is_correctly_displayed(self): - self._login() - go_to_subscription(self) - sub_type_el = self.browser.find_element_by_id('submission-type') - title = sub_type_el.find_element_by_class_name('title') - self.assertEqual( - f'{self.sub_type.name} - Full score: {self.sub_type.full_score}', - title.text - ) - solution = reconstruct_solution_code(self) - self.assertEqual(self.sub_type.solution, solution) - description = sub_type_el.find_element_by_class_name('type-description') - html_el_in_desc = description.find_element_by_tag_name('h1') - self.assertEqual('This', html_el_in_desc.text) - - def test_test_output_is_displayed(self): - # create a test for every submission - test = None - for submission in Submission.objects.all(): - test = fact.TestFactory.create(submission=submission, annotation='This is a test') - self._login() - go_to_subscription(self) - tests = self.browser.find_element_by_id('submission-tests') - name_label = tests.find_element_by_name('test-name-label') - name_label.click() - self.assertIn(test.name, name_label.text) - self.assertIn(test.label, name_label.text) - test_output = tests.find_element_by_class_name('test-output') - WebDriverWait(self.browser, 10).until(ec.visibility_of(test_output)) - self.assertEqual(test.annotation, test_output.text) - - def test_can_give_max_score(self): - self._login() - go_to_subscription(self) - code = correct_some_submission(self) - submission_for_code = Submission.objects.get(text=code) - self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score) - - def test_zero_score_without_warning_gives_error(self): - self._login() - go_to_subscription(self) - self.browser.find_element_by_id('score-zero').click() - submit_btn = self.browser.find_element_by_id('submit-feedback') - assert submit_btn.get_attribute('disabled') - - def test_can_give_zero_score(self): - self._login() - go_to_subscription(self) - code = reconstruct_submission_code(self) - self.browser.find_element_by_id('score-zero').click() - self.write_comments_on_lines([(0, 'A comment')]) - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code)) - submission_for_code = Submission.objects.get(text=code) - self.assertEqual(0, submission_for_code.feedback.score) - - def test_can_give_comments_and_decreased_score(self): - self._login() - go_to_subscription(self) - code = reconstruct_submission_code(self) - - # give half full score - score_input = self.browser.find_element_by_id('score-input') - score_input.send_keys(self.sub_type.full_score // 2) - - # give feedback on first and last line of submission - comment_text = 'This is feedback' - self.write_comments_on_lines([ - (1, comment_text), (0, comment_text) # 0 corresponds to the last line - ]) - - submit_btn = self.browser.find_element_by_id('submit-feedback') - submit_btn.click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - submission_for_code = Submission.objects.get(text=code) - self.assertEqual(self.sub_type.full_score // 2, submission_for_code.feedback.score) - self.assertEqual(2, submission_for_code.feedback.feedback_lines.count()) - fst_comment = FeedbackComment.objects.get( - of_feedback=submission_for_code.feedback, - of_line=1 - ) - self.assertEqual(comment_text, fst_comment.text) - last_line_of_sub = len(submission_for_code.text.split('\n')) - snd_comment = FeedbackComment.objects.get( - of_feedback=submission_for_code.feedback, - of_line=last_line_of_sub - ) - self.assertEqual(comment_text, snd_comment.text) - - def test_can_skip_submission(self): - self._login() - go_to_subscription(self) - code = reconstruct_submission_code(self) - self.browser.find_element_by_id('skip-submission').click() - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code)) - - def test_can_validate_submission(self): - self._login() - go_to_subscription(self) - - def correct(): - code = reconstruct_submission_code(self) - self.write_comments_on_lines([(0, 'A comment by me')]) - self.browser.find_element_by_id('score-zero').click() - self.browser.find_element_by_id('submit-feedback').click() - return code - code = correct() - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code)) - correct() - - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - - reset_browser_after_test(self.browser, self.live_server_url) # logs out user - - user_snd = 'tutor_snd' - password = 'p' - fact.UserAccountFactory(username=user_snd, password=password) - - login(self.browser, self.live_server_url, user_snd, password) - go_to_subscription(self, stage='validate') - self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')]) - code_final = reconstruct_submission_code(self) - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code_final)) - code_non_final = reconstruct_submission_code(self) - self.browser.find_element_by_class_name('final-checkbox').click() - self.browser.find_element_by_id('submit-feedback').click() - - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - - reset_browser_after_test(self.browser, self.live_server_url) - - user_rev = 'rev' - password = 'p' - role = UserAccount.REVIEWER - fact.UserAccountFactory(username=user_rev, password=password, role=role) - login(self.browser, self.live_server_url, user_rev, password) - - go_to_subscription(self, 'review') - code = reconstruct_submission_code(self) - self.assertEqual(code, code_non_final) - - submission_for_code = Submission.objects.get(text=code_final) - self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score) - self.assertEqual(3, submission_for_code.feedback.feedback_lines.count()) - - submission_for_code = Submission.objects.get(text=code_non_final) - self.assertEqual(0, submission_for_code.feedback.score) - self.assertEqual(1, submission_for_code.feedback.feedback_lines.count()) - - def test_final_button_not_present_in_review_stage(self): - self._login() - go_to_subscription(self) - - def correct(): - code = reconstruct_submission_code(self) - self.write_comments_on_lines([(0, 'Some comment')]) - self.browser.find_element_by_id('score-zero').click() - self.browser.find_element_by_id('submit-feedback').click() - return code - - code = correct() - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code)) - correct() - - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - - reset_browser_after_test(self.browser, self.live_server_url) # logs out user - - user_snd = 'tutor_snd' - password = 'p' - fact.UserAccountFactory(username=user_snd, password=password) - - login(self.browser, self.live_server_url, user_snd, password) - go_to_subscription(self, stage='validate') - self.write_comments_on_lines([(0, 'I disagree'), (1, 'Full points!')]) - code_final = reconstruct_submission_code(self) - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - - WebDriverWait(self.browser, 10).until(wait_until_code_changes(self, code_final)) - self.browser.find_element_by_class_name('final-checkbox').click() - self.browser.find_element_by_id('submit-feedback').click() - - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - - reset_browser_after_test(self.browser, self.live_server_url) - - user_rev = 'rev' - password = 'p' - role = UserAccount.REVIEWER - fact.UserAccountFactory(username=user_rev, password=password, role=role) - login(self.browser, self.live_server_url, user_rev, password) - - go_to_subscription(self, 'review') - try: - WebDriverWait(self.browser, 10).until( - ec.presence_of_element_located((By.CLASS_NAME, "final-checkbox")) - ) - not_found = False - except Exception: - not_found = True - - assert not_found - - def test_comments_are_sorted_by_last_updated(self): - self._login() - go_to_subscription(self) - - code = reconstruct_submission_code(self) - self.browser.find_element_by_id('score-full').click() - - # give feedback on first line - self.write_comments_on_lines([(1, 'first ever comment')]) - - submit_btn = self.browser.find_element_by_id('submit-feedback') - submit_btn.click() - - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - reset_browser_after_test(self.browser, self.live_server_url) # logs out user - - user_snd = 'tutor_snd' - password = 'p' - fact.UserAccountFactory(username=user_snd, password=password) - - login(self.browser, self.live_server_url, user_snd, password) - go_to_subscription(self, stage='validate') - - self.write_comments_on_lines([(1, 'the second comment')]) - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_class_name('final-checkbox').click() - self.browser.find_element_by_id('submit-feedback').click() - - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - - reset_browser_after_test(self.browser, self.live_server_url) # logs out user - self._login() - - # goto history - self.browser.find_element_by_id('feedback').click() - feedback_entry = self.browser.find_element_by_class_name('feedback-row') - ActionChains(self.browser).move_to_element(feedback_entry).click().perform() - - # validate that second comment is under the first comment - comments = self.browser.find_elements_by_class_name('dialog-box') - first_text = comments[0].find_element_by_class_name('message') - second_text = comments[1].find_element_by_class_name('message') - - self.assertEqual(len(comments), 2) - self.assertEqual(first_text.text, 'first ever comment') - self.assertEqual(second_text.text, 'the second comment') - - # give feedback on first line - self.write_comments_on_lines([(1, 'first comment updated')]) - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - - WebDriverWait(self.browser, 5).until( - wait_until_element_count_equals(self, By.CLASS_NAME, "dialog-box", 2) - ) - - # validate that the edited first comment is under the second comment - comments = self.browser.find_elements_by_class_name('dialog-box') - first_text = comments[0].find_element_by_class_name('message') - second_text = comments[1].find_element_by_class_name('message') - - def assertion_one(): - return self.assertEqual(first_text.text, 'the second comment') - - def assertion_two(): - return self.assertEqual(second_text.text, 'first comment updated') - - # comments are sorted after about 0.5s of delay - WebDriverWait(self.browser, 2).until( - assertion_is_true(assertion_one) - ) - WebDriverWait(self.browser, 2).until( - assertion_is_true(assertion_two) - ) - - -class TestFeedbackCreationTutor(UntestedParent.TestFeedbackCreationGeneric): - def setUp(self): - super().setUp() - self.username = 'tutor' - self.password = 'p' - self.role = UserAccount.TUTOR - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=self.role - ) diff --git a/grady/functional_tests/test_feedback_label_system.py b/grady/functional_tests/test_feedback_label_system.py deleted file mode 100644 index b990a2d5..00000000 --- a/grady/functional_tests/test_feedback_label_system.py +++ /dev/null @@ -1,386 +0,0 @@ -from selenium.common.exceptions import NoSuchElementException -from selenium.webdriver.common.by import By -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as ec - -from core.models import FeedbackLabel -from functional_tests.util import (GradyTestCase, login, reset_browser_after_test, - query_returns_object, go_to_subscription, - reconstruct_submission_code, wait_until_code_changes) -from util import factory_boys as fact - - -class FeedbackLabelSystemTest(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - super().setUp() - self.username = 'tut' - self.password = 'p' - fact.UserAccountFactory( - username=self.username, - password=self.password, - ) - self.sub_type = fact.SubmissionTypeFactory.create() - fact.SubmissionFactory.create_batch(2, type=self.sub_type) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - # creates a new label where colour_num is - # the index of the colour to click on the colour picker - def create_label(self, name, description, colour_num): - self.browser.find_element_by_id('create-label-section').click() - WebDriverWait(self.browser, 2).until( - ec.element_to_be_clickable((By.ID, 'label-name')) - ) - self.browser.find_element_by_id('label-name').send_keys(name) - self.browser.find_element_by_id('label-description').send_keys(description) - self.browser.find_elements_by_class_name('v-color-picker__color')[colour_num].click() - self.browser.find_element_by_id('create-label-btn').click() - WebDriverWait(self.browser, 10).until(query_returns_object(FeedbackLabel, name=name)) - self.browser.find_element_by_class_name('notification-title').click() - - # updates an already existing label with the given arguments - def update_label(self, old_name, new_name, description, colour_num): - self.browser.find_element_by_id('update-label-section').click() - WebDriverWait(self.browser, 2).until( - ec.element_to_be_clickable((By.ID, 'label-update-autocomplete')) - ) - old_name_input = self.browser.find_element_by_id('label-update-autocomplete') - old_name_input.click() - old_name_input.send_keys(old_name) - self.browser.find_element_by_class_name('label-updater-item').click() - self.browser.find_element_by_xpath( - '//div[contains(@class, "v-window-item--active")]//input[@id="label-name"]' - ).send_keys(new_name) - - self.browser.find_element_by_xpath( - '//div[contains(@class, "v-window-item--active")]//textarea[@id="label-description"]' - ).send_keys(description) - - self.browser.find_elements_by_xpath( - '//div[contains(@class, "v-window-item--active")]' - '//div[contains(@class, "v-color-picker__color")]' - )[colour_num].click() - self.browser.find_element_by_id('update-label-btn').click() - WebDriverWait(self.browser, 10).until( - query_returns_object(FeedbackLabel, name=old_name + new_name) - ) - self.browser.find_element_by_class_name('notification-title').click() - - def assign_label_to_feedback(self, name): - label_input = self.browser.find_element_by_xpath( - '//div[@id="feedback-label-selector"]//input[@id="label-add-autocomplete"]' - ) - label_input.click() - label_input.send_keys(name) - self.browser.find_element_by_class_name('label-adder-item').click() - - def remove_label_from_feedback(self, name): - self.browser.find_element_by_xpath( - f'//div[@id="feedback-label-selector"]//span[contains(@class, "v-chip__content") ' - f'and contains(text(), "{name}")]//button[contains(@class, "v-chip__close")]' - ).click() - - def assign_label_to_comment_line(self, line, name): - self.browser.find_element_by_xpath( - f'//span[contains(@class, "v-btn__content") and contains(text(), "{line}")]' - ).click() - label_input = self.browser.find_element_by_xpath( - '//div[@id="comment-label-selector"]//input[@id="label-add-autocomplete"]' - ) - label_input.click() - label_input.send_keys(name) - self.browser.find_element_by_class_name('label-adder-item').click() - self.browser.find_element_by_id('submit-comment').click() - - def remove_label_from_comment_line(self, line, name): - self.browser.find_element_by_xpath( - f'//tr[@id="sub-line-{line}"]//span[contains(text(), "{name}")]' - '//button[contains(@class, "v-chip__close")]' - ).click() - - # Removes any notification that could obstruct buttons. - def check_for_notification(self): - try: - self.browser.find_element_by_class_name('notification').click() - except NoSuchElementException: - pass - - def test_can_create_label(self): - self._login() - label_name = 'test name' - label_desc = 'test description' - self.create_label(label_name, label_desc, 3) - created_label = FeedbackLabel.objects.get(name='test name') - - self.assertEqual(created_label.name, label_name) - self.assertEqual(created_label.description, label_desc) - - def test_can_not_create_duplicate_label(self): - self._login() - label_name = 'duplicate' - label_desc = 'duplicate test' - self.create_label(label_name, label_desc, 3) - self.create_label(label_name, label_desc, 3) - WebDriverWait(self.browser, 2).until( - ec.visibility_of_element_located((By.CLASS_NAME, 'notification-content')) - ) - notification = self.browser.find_element_by_class_name('notification-content') - - labels = FeedbackLabel.objects.all() - self.assertIn('already exists', notification.text) - self.assertEqual(len(labels), 1) - - def test_can_update_label(self): - self._login() - self.create_label('test', 'some desc', 1) - self.update_label('test', 'updated', 'updated desc', 3) - - label = FeedbackLabel.objects.get(name='testupdated') - - self.assertEqual(label.name, 'testupdated') - self.assertEqual(label.description, 'some descupdated desc') - - def test_can_assign_label_to_feedback_draft(self): - self._login() - self.create_label('test', 'some desc', 1) - go_to_subscription(self) - code = reconstruct_submission_code(self) - self.assign_label_to_feedback('test') - labels = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - self.assertGreater(len(labels), 1) - - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - label = FeedbackLabel.objects.get(name='test') - self.assertEqual(len(label.feedback.all()), 1) - - def test_can_remove_label_from_feedback_draft(self): - self._login() - self.create_label('test', 'some desc', 1) - go_to_subscription(self) - self.assign_label_to_feedback('test') - self.remove_label_from_feedback('test') - labels = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - - self.assertEqual(len(labels), 1) - - def test_can_remove_label_from_submitted_feedback(self): - self._login() - self.create_label('test', 'some desc', 1) - go_to_subscription(self) - code = reconstruct_submission_code(self) - self.assign_label_to_feedback('test') - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - # logs out user - reset_browser_after_test(self.browser, self.live_server_url) - - username = 'tut_snd' - password = 'p' - fact.UserAccountFactory(username=username, password=password) - login(self.browser, self.live_server_url, username, password) - - go_to_subscription(self, stage='validate') - self.remove_label_from_feedback('test') - added = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - removed = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE REMOVED")]/..//*' - ) - current = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "CURRENT LABELS")]/..//*' - ) - - self.assertGreater(len(removed), 1) - self.assertEqual(len(current), 1) - self.assertEqual(len(added), 1) - - self.browser.find_element_by_id('submit-feedback').click() - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - label = FeedbackLabel.objects.get(name='test') - - self.assertEqual(len(label.feedback.all()), 0) - - def test_can_add_label_to_submitted_feedback(self): - self._login() - self.create_label('test', 'some test dec', 1) - self.create_label('add', 'add test dec', 4) - go_to_subscription(self) - code = reconstruct_submission_code(self) - self.assign_label_to_feedback('test') - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - # logs out user - reset_browser_after_test(self.browser, self.live_server_url) - - username = 'tut_snd' - password = 'p' - fact.UserAccountFactory(username=username, password=password) - login(self.browser, self.live_server_url, username, password) - go_to_subscription(self, stage='validate') - - self.assign_label_to_feedback('add') - added = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - removed = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "WILL BE REMOVED")]/..//*' - ) - current = self.browser.find_elements_by_xpath( - '//div[@id="feedback-label-selector"]//div[contains(text(), "CURRENT LABELS")]/..//*' - ) - - self.assertEqual(len(removed), 1) - self.assertGreater(len(added), 1) - self.assertGreater(len(current), 1) - - self.browser.find_element_by_id('submit-feedback').click() - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - new_label = FeedbackLabel.objects.get(name='add') - old_label = FeedbackLabel.objects.get(name='test') - - self.assertEqual(len(old_label.feedback.all()), 1) - self.assertEqual(len(new_label.feedback.all()), 1) - - def test_can_assign_label_to_comment(self): - self._login() - self.create_label('test', 'some desc', 1) - go_to_subscription(self) - code = reconstruct_submission_code(self) - comment_line = 1 - self.assign_label_to_comment_line(comment_line, 'test') - added = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - self.assertGreater(len(added), 1) - - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - label = FeedbackLabel.objects.get(name='test') - self.assertEqual(len(label.feedback_comments.all()), 1) - - def test_can_remove_label_from_submitted_comment(self): - self._login() - self.create_label('test', 'some desc', 1) - go_to_subscription(self) - code = reconstruct_submission_code(self) - comment_line = 1 - self.assign_label_to_comment_line(comment_line, 'test') - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - # logs out user - reset_browser_after_test(self.browser, self.live_server_url) - - username = 'tut_snd' - password = 'p' - fact.UserAccountFactory(username=username, password=password) - login(self.browser, self.live_server_url, username, password) - - go_to_subscription(self, stage='validate') - self.browser.find_element_by_id('feedback-visibility-toggle').click() - - self.remove_label_from_comment_line(comment_line, 'test') - added = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - removed = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE REMOVED")]/..//*' - ) - current = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "CURRENT LABELS")]/..//*' - ) - - self.assertGreater(len(removed), 1) - self.assertEqual(len(added), 1) - self.assertEqual(len(current), 1) - - self.browser.find_element_by_id('submit-feedback').click() - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - label = FeedbackLabel.objects.get(name='test') - - # comment still exists but is now invisible - self.assertEqual(label.feedback_comments.all()[0].visible_to_student, False) - - def test_can_add_label_to_submitted_comment(self): - self._login() - self.create_label('test', 'some desc', 1) - self.create_label('add', 'add test desc', 4) - go_to_subscription(self) - code = reconstruct_submission_code(self) - comment_line = 1 - self.assign_label_to_comment_line(comment_line, 'test') - self.browser.find_element_by_id('score-full').click() - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) - - # logs out user - reset_browser_after_test(self.browser, self.live_server_url) - - username = 'tut_snd' - password = 'p' - fact.UserAccountFactory(username=username, password=password) - login(self.browser, self.live_server_url, username, password) - - go_to_subscription(self, stage='validate') - self.browser.find_element_by_id('feedback-visibility-toggle').click() - self.assign_label_to_comment_line(comment_line, 'add') - added = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE ADDED")]/..//*' - ) - removed = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "WILL BE REMOVED")]/..//*' - ) - current = self.browser.find_elements_by_xpath( - f'//tr[@id="sub-line-{comment_line}"]//div[contains(text(), "CURRENT LABELS")]/..//*' - ) - - self.assertEqual(len(removed), 1) - self.assertGreater(len(current), 1) - self.assertGreater(len(added), 1) - - self.browser.find_element_by_id('submit-feedback').click() - sub_url = 'correction/ended' - WebDriverWait(self.browser, 10).until(ec.url_contains(sub_url)) - label = FeedbackLabel.objects.get(name='add') - - # comment still exists but is now invisible - self.assertEqual(len(label.feedback_comments.all()), 1) diff --git a/grady/functional_tests/test_feedback_update.py b/grady/functional_tests/test_feedback_update.py deleted file mode 100644 index b25c8ad3..00000000 --- a/grady/functional_tests/test_feedback_update.py +++ /dev/null @@ -1,80 +0,0 @@ -from selenium.webdriver import ActionChains -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.common.by import By - -from selenium.webdriver.support.ui import WebDriverWait - -from core.models import UserAccount -from functional_tests.util import (GradyTestCase, login, go_to_subscription, - reconstruct_submission_code, correct_some_submission, - reset_browser_after_test) -from util import factory_boys as fact - - -class TestFeedbackUpdate(GradyTestCase): - username = None - password = None - - def setUp(self): - super().setUp() - self.username = 'tut' - self.password = 'p' - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=UserAccount.TUTOR - ) - self.sub_type = fact.SubmissionTypeFactory.create() - fact.SubmissionFactory.create_batch(2, type=self.sub_type) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def test_updating_own_feedback_doesnt_invalidate_other_tutors_assignment(self): - # First correct some submission as the first tutor - self._login() - code = correct_some_submission(self) - first_tab = self.browser.current_window_handle - - # open a new tab and go to the validation page of the just corrected submission - self.browser.execute_script('window.open()') - self.browser.switch_to.window(self.browser.window_handles[-1]) - self.browser.get(self.live_server_url) - second_tab = self.browser.current_window_handle - username = 'other_tut' - password = 'p' - fact.UserAccountFactory( - username=username, - password=password, - role=UserAccount.TUTOR - ) - login(self.browser, self.live_server_url, username, password) - go_to_subscription(self, stage='validate') - other_code = reconstruct_submission_code(self) - - # The submission to be validated should be the same as the one that has been corrected - self.assertEqual( - code, other_code, - "Code for validation submissions is different than initial") - - # Go to first tab and update the submission as the first tutor via the Feedback History page - self.browser.switch_to.window(first_tab) - self.browser.find_element_by_partial_link_text('Feedback History').click() - WebDriverWait(self.browser, 15, 0.2).until( - ec.visibility_of_element_located((By.CLASS_NAME, 'feedback-row'))) - feedback_entry = self.browser.find_element_by_class_name('feedback-row') - ActionChains(self.browser).move_to_element(feedback_entry).click().perform() - - self.browser.find_element_by_id('submit-feedback').click() - - # as the second tutor, submit the validated feedback - self.browser.switch_to.window(second_tab) - self.browser.find_element_by_id('submit-feedback').click() - WebDriverWait(self.browser, 10).until( - ec.url_contains('ended'), - 'Browser is not on Subscription ended site, therefore Feedback could not be submitted' - ) diff --git a/grady/functional_tests/test_front_pages.py b/grady/functional_tests/test_front_pages.py deleted file mode 100644 index 35bef4e3..00000000 --- a/grady/functional_tests/test_front_pages.py +++ /dev/null @@ -1,100 +0,0 @@ -from selenium.webdriver.support.ui import WebDriverWait - -from core import models -from core.models import UserAccount -from functional_tests.util import (GradyTestCase, login, subscriptions_loaded_cond, - extract_hrefs_hashes, reset_browser_after_test) -from util import factory_boys as fact - - -# This is a little hack to have Super test class which implements common behaviour -# and tests but is not executed. In order to have the testrunner ignore the -# FrontPageTestsTutorReviewer class we need to define it within a class which does not inherit from -# unittest -class UntestedParent: - class FrontPageTestsTutorReviewer(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - fact.SubmissionFactory.create_batch(4) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def test_statistics_are_shown(self): - self._login() - statistics = self.browser.find_element_by_id('correction-statistics') - title = statistics.find_element_by_class_name('title') - self.assertEqual('Statistics', title.text) - - def test_available_tasks_are_shown(self): - self._login() - WebDriverWait(self.browser, 10).until(subscriptions_loaded_cond(self.browser)) - tasks = self.browser.find_element_by_name('subscription-list') - submission_type_links = extract_hrefs_hashes( - tasks.find_elements_by_tag_name('a') - ) - sub_types = models.SubmissionType.objects.all() - default_group = models.Group.objects.first() - for sub_type in sub_types: - self.assertIn(f'/correction/{sub_type.pk}/feedback-creation/{default_group.pk}', - submission_type_links) - - -class FrontPageTestsTutor(UntestedParent.FrontPageTestsTutorReviewer): - def setUp(self): - super().setUp() - self.username = 'tutor' - self.password = 'p' - self.role = UserAccount.TUTOR - fact.UserAccountFactory( - username=self.username, - password=self.password - ) - - def tearDown(self): - reset_browser_after_test(self.browser, self.live_server_url) - - def test_side_bar_contains_correct_items(self): - self._login() - drawer = self.browser.find_element_by_class_name('v-navigation-drawer') - links = extract_hrefs_hashes(drawer.find_elements_by_tag_name('a')) - print(links) - self.assertTrue(all(link in links for link in ['/home', '/feedback'])) - footer = drawer.find_element_by_class_name('sidebar-footer') - feedback_link = footer.find_element_by_css_selector('#feedback-btn') - self.assertEqual('https://gitlab.gwdg.de/j.michal/grady/issues', - feedback_link.get_attribute('href')) - - -class FrontPageTestsReviewer(UntestedParent.FrontPageTestsTutorReviewer): - def setUp(self): - super().setUp() - self.username = 'reviewer' - self.password = 'p' - self.role = UserAccount.REVIEWER - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=self.role - ) - - def tearDown(self): - reset_browser_after_test(self.browser, self.live_server_url) - - def test_side_bar_contains_correct_items(self): - self._login() - drawer = self.browser.find_element_by_class_name('v-navigation-drawer') - links = extract_hrefs_hashes(drawer.find_elements_by_tag_name('a')) - self.assertTrue(all(link in links for link in - ['/home', '/feedback', '/participant-overview', '/tutor-overview'])) - footer = drawer.find_element_by_class_name('sidebar-footer') - feedback_link = footer.find_element_by_css_selector('#feedback-btn') - self.assertEqual('https://gitlab.gwdg.de/j.michal/grady/issues', - feedback_link.get_attribute('href')) diff --git a/grady/functional_tests/test_import.py b/grady/functional_tests/test_import.py deleted file mode 100644 index bd7cb109..00000000 --- a/grady/functional_tests/test_import.py +++ /dev/null @@ -1,45 +0,0 @@ -import os -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.action_chains import ActionChains - - -from core import models -from functional_tests.util import (GradyTestCase, login, query_returns_object, - reset_browser_after_test) -from util import factory_boys as fact - - -JSON_EXPORT_FILE = os.path.join(os.path.dirname(__file__), 'data/hektor.json') - - -class TestImport(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - super().setUp() - self.username = 'rev' - self.password = 'p' - fact.UserAccountFactory( - username=self.username, - password=self.password, - role=models.UserAccount.REVIEWER - ) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def test_reviewer_can_import_data(self): - self._login() - self.browser.find_element_by_id("import-data-list-item").click() - file_input = self.browser.find_element_by_id("file-input") - file_input.send_keys(JSON_EXPORT_FILE) - # self.browser.find_element_by_id("submit-import").click() - import_btn = self.browser.find_element_by_id('submit-import') - ActionChains(self.browser).move_to_element(import_btn).click().perform() - WebDriverWait(self.browser, 20).until(query_returns_object(models.SubmissionType)) diff --git a/grady/functional_tests/test_login_page.py b/grady/functional_tests/test_login_page.py deleted file mode 100644 index f99d47c4..00000000 --- a/grady/functional_tests/test_login_page.py +++ /dev/null @@ -1,160 +0,0 @@ -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.action_chains import ActionChains - -from constance.test import override_config -from core.models import UserAccount -from util.factories import make_test_data, make_exams -from functional_tests.util import GradyTestCase, reset_browser_after_test - - -class LoginPageTest(GradyTestCase): - - def setUp(self): - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }] - ) - self.test_data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type_id': exams[0].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }, - { - 'name': '02. Merge this or that or maybe even this', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - } - ], - 'students': [ - { - 'username': 'student01', - 'password': 'p', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student02', - 'password': 'p', - 'exam': 'Test Exam 01' - } - ], - 'tutors': [ - {'username': 'tutor01', 'password': 'p'}, - {'username': 'tutor02', 'password': 'p'} - ], - 'reviewers': [ - {'username': 'reviewer', 'password': 'p'} - ], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }], - } - - } - }, - { - 'text': 'function blabl\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student01' - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student02' - }, - { - 'text': 'function lorem ipsum etc\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student02' - }, - ]} - ) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self, account): - self.browser.get(self.live_server_url) - username_input = self.browser.find_element_by_xpath('//input[@id="username"]') - username_input.send_keys(account.username) - password_input = self.browser.find_element_by_xpath('//input[@id="password"]') - password_input.send_keys('p') - self.browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER) - WebDriverWait(self.browser, 10).until(ec.url_contains('/home')) - - def test_tutor_can_login(self): - tutor = self.test_data['tutors'][0] - self._login(tutor) - self.assertTrue(self.browser.current_url.endswith('#/home')) - - def test_reviewer_can_login(self): - reviewer = self.test_data['reviewers'][0] - self._login(reviewer) - self.assertTrue(self.browser.current_url.endswith('#/home')) - - def test_student_can_login(self): - student = self.test_data['students'][0] - self._login(student) - self.assertTrue(self.browser.current_url.endswith('#/home')) - - @override_config(REGISTRATION_PASSWORD='pw') - def test_can_register_account(self): - username = 'danny' - password = 'redrum-is-murder-reversed' - instance_password = 'pw' - self.browser.get(self.live_server_url) - self.browser.find_element_by_id('register').click() - self.browser.find_element_by_id('gdpr-notice') - # self.browser.find_element_by_id('accept-gdpr-notice').click() - accept_btn = self.browser.find_element_by_id('accept-gdpr-notice') - ActionChains(self.browser).move_to_element(accept_btn).click().perform() - username_input = self.browser.find_element_by_id('input-register-username') - username_input.send_keys(username) - instance_password_input = self.browser.find_element_by_id( - 'input-register-instance-password' - ) - instance_password_input.send_keys(instance_password) - password_input = self.browser.find_element_by_id('input-register-password') - password_input.send_keys(password) - password_repeat_input = self.browser.find_element_by_id('input-register-password-repeat') - password_repeat_input.send_keys(password) - register_submit_el = self.browser.find_element_by_id('register-submit') - register_submit_el.click() - WebDriverWait(self.browser, 10).until_not(ec.visibility_of(register_submit_el)) - tutor = UserAccount.objects.get(username=username) - self.assertEqual(UserAccount.TUTOR, tutor.role) - self.assertFalse(tutor.is_active, "Tutors should be inactive after registered") diff --git a/grady/functional_tests/test_multiple_exams.py b/grady/functional_tests/test_multiple_exams.py deleted file mode 100644 index 5729a45e..00000000 --- a/grady/functional_tests/test_multiple_exams.py +++ /dev/null @@ -1,161 +0,0 @@ -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.support.ui import WebDriverWait - -from util.factories import make_test_data, make_exams -from functional_tests.util import GradyTestCase, reset_browser_after_test - - -class TestMultipleExams(GradyTestCase): - - def setUp(self): - exams = make_exams([{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }, { - 'module_reference': 'Test Exam 02', - 'total_score': 120, - 'pass_score': 75}] - ) - - self.test_data = make_test_data(data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - 'exam_type_id': exams[0].exam_type_id - }, { - 'module_reference': 'Test Exam 02', - 'total_score': 120, - 'pass_score': 75, - 'exam_type_id': exams[1].exam_type_id - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }, - { - 'name': '02. Merge this or that or maybe even this', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!', - 'exam_type': exams[0] - }, - { - 'name': '05', - 'full_score': 35, - 'description': 'It is not a story the jedi would tell you', - 'solution': 'Trivial!', - 'exam_type': exams[1] - } - ], - 'students': [ - { - 'username': 'student01', - 'password': 'p', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student02', - 'password': 'p', - 'exam': 'Test Exam 01' - }, - { - 'username': 'student03', - 'password': 'p', - 'exam': 'Test Exam 02' - - }, - { - 'username': 'student04', - 'password': 'p', - 'exam': 'Test Exam 02' - } - ], - 'tutors': [ - {'username': 'tutor01', 'password': 'p'}, - {'username': 'tutor02', 'password': 'p'} - ], - 'reviewers': [ - {'username': 'reviewer', 'password': 'p'} - ], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [{ - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }], - } - - } - }, - { - 'text': 'function blabl\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student01' - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student02' - }, - { - 'text': 'function lorem ipsum etc\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student02' - } - ]} - ) - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self, account): - self.browser.get(self.live_server_url) - username_input = self.browser.find_element_by_xpath('//input[@id="username"]') - username_input.send_keys(account.username) - password_input = self.browser.find_element_by_xpath('//input[@id="password"]') - password_input.send_keys('p') - self.browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER) - WebDriverWait(self.browser, 10).until(ec.url_contains('/exam_selection')) - - def test_selection_page(self): - reviewer = self.test_data['reviewers'][0] - self._login(reviewer) - self.assertTrue(self.browser.current_url.endswith('#/exam_selection')) - - def test_selection_of_exams(self): - testBool = True - reviewer = self.test_data['reviewers'][0] - self._login(reviewer) - items = self.browser.find_elements_by_id("listItem") - for i in range(len(items)): - itemText = items[i].text - items[i].click() - testBool = itemText == self.browser.find_element_by_class_name("title").text - if(not testBool): - break - self.browser.find_element_by_id("examsButton").click() - items = self.browser.find_elements_by_id("listItem") - self.assertTrue(testBool) diff --git a/grady/functional_tests/test_solution_comments.py b/grady/functional_tests/test_solution_comments.py deleted file mode 100644 index 0fa7e54f..00000000 --- a/grady/functional_tests/test_solution_comments.py +++ /dev/null @@ -1,141 +0,0 @@ -from selenium.webdriver.common.by import By -from selenium.webdriver.remote.webelement import WebElement -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.common.action_chains import ActionChains - - -from core import models -from functional_tests.util import (GradyTestCase, login, query_returns_object, - reset_browser_after_test, assertion_is_true) -from util import factory_boys as fact - - -class TestSolutionComments(GradyTestCase): - username = None - password = None - role = None - - def setUp(self): - super().setUp() - self.username = 'tut' - self.password = 'p' - fact.UserAccountFactory( - username=self.username, - password=self.password, - ) - self.sub_type = fact.SubmissionTypeFactory.create() - - def tearDown(self): - self.saveScreenshots() - reset_browser_after_test(self.browser, self.live_server_url) - - def _login(self): - login(self.browser, self.live_server_url, self.username, self.password) - - def _write_comment(self, text="A comment", line_no=1): - sub_types = self.browser.find_element_by_id('submission-types-list') - sub_types.find_element_by_tag_name('div').click() - solution_table = self.browser.find_element_by_class_name('solution-table') - tr_of_line = solution_table.find_element_by_id(f'solution-line-{line_no}') - tr_of_line.find_element_by_class_name('line-number-btn').click() - comment_input = tr_of_line.find_element_by_name('solution-comment-input') - comment_input.send_keys(text) - solution_table.find_element_by_id('submit-comment').click() - - def _edit_comment(self, old_text, new_text) -> WebElement: - solution_table = self.browser.find_element_by_class_name('solution-table') - comment = solution_table.find_element_by_xpath( - f"//div[@class='dialog-box' and .//*[contains(text(), '{old_text}')]]" - ) - comment.find_element_by_class_name('edit-button').click() - comment_input = solution_table.find_element_by_name('solution-comment-edit') - comment_input.send_keys(new_text) - solution_table.find_element_by_id('submit-comment').click() - return comment - - def test_tutor_can_add_comment(self): - self._login() - comment_text = 'A comment!' - self._write_comment(comment_text, 1) - solution_table = self.browser.find_element_by_class_name('solution-table') - displayed_text = solution_table.find_element_by_class_name('message').text - self.assertEqual(comment_text, displayed_text) - comment_obj = models.SolutionComment.objects.first() - self.assertEqual(comment_text, comment_obj.text) - self.assertEqual(1, comment_obj.of_line) - - def test_tutor_can_delete_own_comment(self): - self._login() - self._write_comment() - solution_table = self.browser.find_element_by_class_name('solution-table') - solution_table.find_element_by_class_name('delete-button').click() - # self.browser.find_element_by_id('confirm-delete-comment').click() - delete_btn = self.browser.find_element_by_id('confirm-delete-comment') - ActionChains(self.browser).move_to_element(delete_btn).click().perform() - WebDriverWait(self.browser, 10).until_not( - query_returns_object(models.SolutionComment), - "Solution comment not deleted." - ) - - def test_tutor_can_edit_own_comment(self): - self._login() - old_text = 'A comment' - new_text = 'A new text' - self._write_comment(old_text) - WebDriverWait(self.browser, 10).until(query_returns_object(models.SolutionComment)) - comment_obj = models.SolutionComment.objects.first() - self.assertEqual(old_text, comment_obj.text) - comment_el = self._edit_comment(old_text, new_text) - - def text_is_updated(): - displayed_text = comment_el.find_element_by_class_name('message').text - return self.assertEqual(new_text, displayed_text) - - WebDriverWait(self.browser, 3).until(assertion_is_true(text_is_updated)) - comment_obj.refresh_from_db() - self.assertEqual(new_text, comment_obj.text) - - def test_tutor_can_not_delete_edit_other_comment(self): - self._login() - self._write_comment() - username = 'tut2' - password = 'p' - fact.UserAccountFactory(username=username, password=password) - reset_browser_after_test(self.browser, self.live_server_url) - login(self.browser, self.live_server_url, username, password) - sub_types = self.browser.find_element_by_id('submission-types-list') - sub_types.find_element_by_tag_name('div').click() - solution_table = self.browser.find_element_by_class_name('solution-table') - # Set the implicit wait for those to shorter, to reduce test run time - self.browser.implicitly_wait(2) - edit_buttons = solution_table.find_elements_by_class_name('edit-button') - delete_buttons = solution_table.find_elements_by_class_name('delete-button') - self.browser.implicitly_wait(10) - self.assertEqual(0, len(edit_buttons)) - self.assertEqual(0, len(delete_buttons)) - - def test_reviewer_can_delete_tutor_comment(self): - self._login() - self._write_comment() - username = 'rev' - password = 'p' - fact.UserAccountFactory( - username=username, password=password, role=models.UserAccount.REVIEWER - ) - reset_browser_after_test(self.browser, self.live_server_url) - login(self.browser, self.live_server_url, username, password) - sub_types = self.browser.find_element_by_id('submission-types-list') - sub_types.find_element_by_tag_name('div').click() - solution_table = self.browser.find_element_by_class_name('solution-table') - solution_table.find_element_by_class_name('delete-button').click() - # self.browser.find_element_by_id('confirm-delete-comment').click() - delete_btn = self.browser.find_element_by_id('confirm-delete-comment') - ActionChains(self.browser).move_to_element(delete_btn).click().perform() - WebDriverWait(self.browser, 10).until_not( - ec.presence_of_element_located((By.CLASS_NAME, 'dialog-box')) - ) - WebDriverWait(self.browser, 10).until_not( - query_returns_object(models.SolutionComment), - "Solution comment not deleted." - ) diff --git a/grady/functional_tests/util.py b/grady/functional_tests/util.py deleted file mode 100644 index 920e06d3..00000000 --- a/grady/functional_tests/util.py +++ /dev/null @@ -1,221 +0,0 @@ -import os -from itertools import islice -from typing import Sequence -import time - -from selenium import webdriver -from selenium.webdriver import FirefoxProfile -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.firefox.options import Options -from selenium.webdriver.remote.webelement import WebElement -from selenium.webdriver.support import expected_conditions as ec -from selenium.webdriver.support.ui import WebDriverWait -from selenium.common.exceptions import StaleElementReferenceException, NoSuchElementException -from selenium.webdriver.common.by import By -from django.core.exceptions import ObjectDoesNotExist -from django.test import LiveServerTestCase - -SCREENSHOTS = os.path.join(os.path.dirname(__file__), 'screenshots') - - -class GradyTestCase(LiveServerTestCase): - browser: webdriver.Firefox = None - - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.browser = create_browser() - - @classmethod - def tearDownClass(cls): - super().tearDownClass() - cls.browser.quit() - - def saveScreenshots(self): - try: - os.mkdir(SCREENSHOTS) - except FileExistsError: - pass - for method, error in self._outcome.errors: - if error: - self.browser.get_screenshot_as_file( - os.path.join(SCREENSHOTS, self.id() + ".png") - ) - - -def create_browser() -> webdriver.Firefox: - options = Options() - options.headless = bool(os.environ.get('HEADLESS_TESTS', False)) - options.set_capability('unhandledPromptBehavior', 'accept') - options.set_capability('strictFileInteractability', False) - profile = FirefoxProfile() - profile.set_preference("dom.disable_beforeunload", True) - profile.set_preference("browser.download.folderList", 2) - profile.set_preference("browser.download.dir", os.path.dirname(__file__)) - profile.set_preference("browser.download.useDownloadDir", True) - profile.set_preference("browser.download.panel.shown", False) - profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/vnd.hzn-3d-crossword;video/3gpp;video/3gpp2;application/vnd.mseq;application/vnd.3m.post-it-notes;application/vnd.3gpp.pic-bw-large;application/vnd.3gpp.pic-bw-small;application/vnd.3gpp.pic-bw-var;application/vnd.3gp2.tcap;application/x-7z-compressed;application/x-abiword;application/x-ace-compressed;application/vnd.americandynamics.acc;application/vnd.acucobol;application/vnd.acucorp;audio/adpcm;application/x-authorware-bin;application/x-athorware-map;application/x-authorware-seg;application/vnd.adobe.air-application-installer-package+zip;application/x-shockwave-flash;application/vnd.adobe.fxp;application/pdf;application/vnd.cups-ppd;application/x-director;applicaion/vnd.adobe.xdp+xml;application/vnd.adobe.xfdf;audio/x-aac;application/vnd.ahead.space;application/vnd.airzip.filesecure.azf;application/vnd.airzip.filesecure.azs;application/vnd.amazon.ebook;application/vnd.amiga.ami;applicatin/andrew-inset;application/vnd.android.package-archive;application/vnd.anser-web-certificate-issue-initiation;application/vnd.anser-web-funds-transfer-initiation;application/vnd.antix.game-component;application/vnd.apple.installe+xml;application/applixware;application/vnd.hhe.lesson-player;application/vnd.aristanetworks.swi;text/x-asm;application/atomcat+xml;application/atomsvc+xml;application/atom+xml;application/pkix-attr-cert;audio/x-aiff;video/x-msvieo;application/vnd.audiograph;image/vnd.dxf;model/vnd.dwf;text/plain-bas;application/x-bcpio;application/octet-stream;image/bmp;application/x-bittorrent;application/vnd.rim.cod;application/vnd.blueice.multipass;application/vnd.bm;application/x-sh;image/prs.btif;application/vnd.businessobjects;application/x-bzip;application/x-bzip2;application/x-csh;text/x-c;application/vnd.chemdraw+xml;text/css;chemical/x-cdx;chemical/x-cml;chemical/x-csml;application/vn.contact.cmsg;application/vnd.claymore;application/vnd.clonk.c4group;image/vnd.dvb.subtitle;application/cdmi-capability;application/cdmi-container;application/cdmi-domain;application/cdmi-object;application/cdmi-queue;applicationvnd.cluetrust.cartomobile-config;application/vnd.cluetrust.cartomobile-config-pkg;image/x-cmu-raster;model/vnd.collada+xml;text/csv;application/mac-compactpro;application/vnd.wap.wmlc;image/cgm;x-conference/x-cooltalk;image/x-cmx;application/vnd.xara;application/vnd.cosmocaller;application/x-cpio;application/vnd.crick.clicker;application/vnd.crick.clicker.keyboard;application/vnd.crick.clicker.palette;application/vnd.crick.clicker.template;application/vn.crick.clicker.wordbank;application/vnd.criticaltools.wbs+xml;application/vnd.rig.cryptonote;chemical/x-cif;chemical/x-cmdf;application/cu-seeme;application/prs.cww;text/vnd.curl;text/vnd.curl.dcurl;text/vnd.curl.mcurl;text/vnd.crl.scurl;application/vnd.curl.car;application/vnd.curl.pcurl;application/vnd.yellowriver-custom-menu;application/dssc+der;application/dssc+xml;application/x-debian-package;audio/vnd.dece.audio;image/vnd.dece.graphic;video/vnd.dec.hd;video/vnd.dece.mobile;video/vnd.uvvu.mp4;video/vnd.dece.pd;video/vnd.dece.sd;video/vnd.dece.video;application/x-dvi;application/vnd.fdsn.seed;application/x-dtbook+xml;application/x-dtbresource+xml;application/vnd.dvb.ait;applcation/vnd.dvb.service;audio/vnd.digital-winds;image/vnd.djvu;application/xml-dtd;application/vnd.dolby.mlp;application/x-doom;application/vnd.dpgraph;audio/vnd.dra;application/vnd.dreamfactory;audio/vnd.dts;audio/vnd.dts.hd;imag/vnd.dwg;application/vnd.dynageo;application/ecmascript;application/vnd.ecowin.chart;image/vnd.fujixerox.edmics-mmr;image/vnd.fujixerox.edmics-rlc;application/exi;application/vnd.proteus.magazine;application/epub+zip;message/rfc82;application/vnd.enliven;application/vnd.is-xpr;image/vnd.xiff;application/vnd.xfdl;application/emma+xml;application/vnd.ezpix-album;application/vnd.ezpix-package;image/vnd.fst;video/vnd.fvt;image/vnd.fastbidsheet;application/vn.denovo.fcselayout-link;video/x-f4v;video/x-flv;image/vnd.fpx;image/vnd.net-fpx;text/vnd.fmi.flexstor;video/x-fli;application/vnd.fluxtime.clip;application/vnd.fdf;text/x-fortran;application/vnd.mif;application/vnd.framemaker;imae/x-freehand;application/vnd.fsc.weblaunch;application/vnd.frogans.fnc;application/vnd.frogans.ltf;application/vnd.fujixerox.ddd;application/vnd.fujixerox.docuworks;application/vnd.fujixerox.docuworks.binder;application/vnd.fujitu.oasys;application/vnd.fujitsu.oasys2;application/vnd.fujitsu.oasys3;application/vnd.fujitsu.oasysgp;application/vnd.fujitsu.oasysprs;application/x-futuresplash;application/vnd.fuzzysheet;image/g3fax;application/vnd.gmx;model/vn.gtw;application/vnd.genomatix.tuxedo;application/vnd.geogebra.file;application/vnd.geogebra.tool;model/vnd.gdl;application/vnd.geometry-explorer;application/vnd.geonext;application/vnd.geoplan;application/vnd.geospace;applicatio/x-font-ghostscript;application/x-font-bdf;application/x-gtar;application/x-texinfo;application/x-gnumeric;application/vnd.google-earth.kml+xml;application/vnd.google-earth.kmz;application/vnd.grafeq;image/gif;text/vnd.graphviz;aplication/vnd.groove-account;application/vnd.groove-help;application/vnd.groove-identity-message;application/vnd.groove-injector;application/vnd.groove-tool-message;application/vnd.groove-tool-template;application/vnd.groove-vcar;video/h261;video/h263;video/h264;application/vnd.hp-hpid;application/vnd.hp-hps;application/x-hdf;audio/vnd.rip;application/vnd.hbci;application/vnd.hp-jlyt;application/vnd.hp-pcl;application/vnd.hp-hpgl;application/vnd.yamaha.h-script;application/vnd.yamaha.hv-dic;application/vnd.yamaha.hv-voice;application/vnd.hydrostatix.sof-data;application/hyperstudio;application/vnd.hal+xml;text/html;application/vnd.ibm.rights-management;application/vnd.ibm.securecontainer;text/calendar;application/vnd.iccprofile;image/x-icon;application/vnd.igloader;image/ief;application/vnd.immervision-ivp;application/vnd.immervision-ivu;application/reginfo+xml;text/vnd.in3d.3dml;text/vnd.in3d.spot;mode/iges;application/vnd.intergeo;application/vnd.cinderella;application/vnd.intercon.formnet;application/vnd.isac.fcs;application/ipfix;application/pkix-cert;application/pkixcmp;application/pkix-crl;application/pkix-pkipath;applicaion/vnd.insors.igm;application/vnd.ipunplugged.rcprofile;application/vnd.irepository.package+xml;text/vnd.sun.j2me.app-descriptor;application/java-archive;application/java-vm;application/x-java-jnlp-file;application/java-serializd-object;text/x-java-source,java;application/javascript;application/json;application/vnd.joost.joda-archive;video/jpm;image/jpeg;video/jpeg;application/vnd.kahootz;application/vnd.chipnuts.karaoke-mmd;application/vnd.kde.karbon;aplication/vnd.kde.kchart;application/vnd.kde.kformula;application/vnd.kde.kivio;application/vnd.kde.kontour;application/vnd.kde.kpresenter;application/vnd.kde.kspread;application/vnd.kde.kword;application/vnd.kenameaapp;applicatin/vnd.kidspiration;application/vnd.kinar;application/vnd.kodak-descriptor;application/vnd.las.las+xml;application/x-latex;application/vnd.llamagraphics.life-balance.desktop;application/vnd.llamagraphics.life-balance.exchange+xml;application/vnd.jam;application/vnd.lotus-1-2-3;application/vnd.lotus-approach;application/vnd.lotus-freelance;application/vnd.lotus-notes;application/vnd.lotus-organizer;application/vnd.lotus-screencam;application/vnd.lotus-wordro;audio/vnd.lucent.voice;audio/x-mpegurl;video/x-m4v;application/mac-binhex40;application/vnd.macports.portpkg;application/vnd.osgeo.mapguide.package;application/marc;application/marcxml+xml;application/mxf;application/vnd.wolfrm.player;application/mathematica;application/mathml+xml;application/mbox;application/vnd.medcalcdata;application/mediaservercontrol+xml;application/vnd.mediastation.cdkey;application/vnd.mfer;application/vnd.mfmp;model/mesh;appliation/mads+xml;application/mets+xml;application/mods+xml;application/metalink4+xml;application/vnd.ms-powerpoint.template.macroenabled.12;application/vnd.ms-word.document.macroenabled.12;application/vnd.ms-word.template.macroenabed.12;application/vnd.mcd;application/vnd.micrografx.flo;application/vnd.micrografx.igx;application/vnd.eszigno3+xml;application/x-msaccess;video/x-ms-asf;application/x-msdownload;application/vnd.ms-artgalry;application/vnd.ms-ca-compressed;application/vnd.ms-ims;application/x-ms-application;application/x-msclip;image/vnd.ms-modi;application/vnd.ms-fontobject;application/vnd.ms-excel;application/vnd.ms-excel.addin.macroenabled.12;application/vnd.ms-excelsheet.binary.macroenabled.12;application/vnd.ms-excel.template.macroenabled.12;application/vnd.ms-excel.sheet.macroenabled.12;application/vnd.ms-htmlhelp;application/x-mscardfile;application/vnd.ms-lrm;application/x-msmediaview;aplication/x-msmoney;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.presentationml.slide;application/vnd.openxmlformats-officedocument.presentationml.slideshw;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.openxmformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/x-msbinder;application/vnd.ms-officetheme;application/onenote;audio/vnd.ms-playready.media.pya;vdeo/vnd.ms-playready.media.pyv;application/vnd.ms-powerpoint;application/vnd.ms-powerpoint.addin.macroenabled.12;application/vnd.ms-powerpoint.slide.macroenabled.12;application/vnd.ms-powerpoint.presentation.macroenabled.12;appliation/vnd.ms-powerpoint.slideshow.macroenabled.12;application/vnd.ms-project;application/x-mspublisher;application/x-msschedule;application/x-silverlight-app;application/vnd.ms-pki.stl;application/vnd.ms-pki.seccat;application/vn.visio;video/x-ms-wm;audio/x-ms-wma;audio/x-ms-wax;video/x-ms-wmx;application/x-ms-wmd;application/vnd.ms-wpl;application/x-ms-wmz;video/x-ms-wmv;video/x-ms-wvx;application/x-msmetafile;application/x-msterminal;application/msword;application/x-mswrite;application/vnd.ms-works;application/x-ms-xbap;application/vnd.ms-xpsdocument;audio/midi;application/vnd.ibm.minipay;application/vnd.ibm.modcap;application/vnd.jcp.javame.midlet-rms;application/vnd.tmobile-ivetv;application/x-mobipocket-ebook;application/vnd.mobius.mbk;application/vnd.mobius.dis;application/vnd.mobius.plc;application/vnd.mobius.mqy;application/vnd.mobius.msl;application/vnd.mobius.txf;application/vnd.mobius.daf;tex/vnd.fly;application/vnd.mophun.certificate;application/vnd.mophun.application;video/mj2;audio/mpeg;video/vnd.mpegurl;video/mpeg;application/mp21;audio/mp4;video/mp4;application/mp4;application/vnd.apple.mpegurl;application/vnd.msician;application/vnd.muvee.style;application/xv+xml;application/vnd.nokia.n-gage.data;application/vnd.nokia.n-gage.symbian.install;application/x-dtbncx+xml;application/x-netcdf;application/vnd.neurolanguage.nlu;application/vnd.na;application/vnd.noblenet-directory;application/vnd.noblenet-sealer;application/vnd.noblenet-web;application/vnd.nokia.radio-preset;application/vnd.nokia.radio-presets;text/n3;application/vnd.novadigm.edm;application/vnd.novadim.edx;application/vnd.novadigm.ext;application/vnd.flographit;audio/vnd.nuera.ecelp4800;audio/vnd.nuera.ecelp7470;audio/vnd.nuera.ecelp9600;application/oda;application/ogg;audio/ogg;video/ogg;application/vnd.oma.dd2+xml;applicatin/vnd.oasis.opendocument.text-web;application/oebps-package+xml;application/vnd.intu.qbo;application/vnd.openofficeorg.extension;application/vnd.yamaha.openscoreformat;audio/webm;video/webm;application/vnd.oasis.opendocument.char;application/vnd.oasis.opendocument.chart-template;application/vnd.oasis.opendocument.database;application/vnd.oasis.opendocument.formula;application/vnd.oasis.opendocument.formula-template;application/vnd.oasis.opendocument.grapics;application/vnd.oasis.opendocument.graphics-template;application/vnd.oasis.opendocument.image;application/vnd.oasis.opendocument.image-template;application/vnd.oasis.opendocument.presentation;application/vnd.oasis.opendocumen.presentation-template;application/vnd.oasis.opendocument.spreadsheet;application/vnd.oasis.opendocument.spreadsheet-template;application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-master;application/vnd.asis.opendocument.text-template;image/ktx;application/vnd.sun.xml.calc;application/vnd.sun.xml.calc.template;application/vnd.sun.xml.draw;application/vnd.sun.xml.draw.template;application/vnd.sun.xml.impress;application/vnd.sun.xl.impress.template;application/vnd.sun.xml.math;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.global;application/vnd.sun.xml.writer.template;application/x-font-otf;application/vnd.yamaha.openscoreformat.osfpvg+xml;application/vnd.osgi.dp;application/vnd.palm;text/x-pascal;application/vnd.pawaafile;application/vnd.hp-pclxl;application/vnd.picsel;image/x-pcx;image/vnd.adobe.photoshop;application/pics-rules;image/x-pict;application/x-chat;aplication/pkcs10;application/x-pkcs12;application/pkcs7-mime;application/pkcs7-signature;application/x-pkcs7-certreqresp;application/x-pkcs7-certificates;application/pkcs8;application/vnd.pocketlearn;image/x-portable-anymap;image/-portable-bitmap;application/x-font-pcf;application/font-tdpfr;application/x-chess-pgn;image/x-portable-graymap;image/png;image/x-portable-pixmap;application/pskc+xml;application/vnd.ctc-posml;application/postscript;application/xfont-type1;application/vnd.powerbuilder6;application/pgp-encrypted;application/pgp-signature;application/vnd.previewsystems.box;application/vnd.pvi.ptid1;application/pls+xml;application/vnd.pg.format;application/vnd.pg.osasli;tex/prs.lines.tag;application/x-font-linux-psf;application/vnd.publishare-delta-tree;application/vnd.pmi.widget;application/vnd.quark.quarkxpress;application/vnd.epson.esf;application/vnd.epson.msf;application/vnd.epson.ssf;applicaton/vnd.epson.quickanime;application/vnd.intu.qfx;video/quicktime;application/x-rar-compressed;audio/x-pn-realaudio;audio/x-pn-realaudio-plugin;application/rsd+xml;application/vnd.rn-realmedia;application/vnd.realvnc.bed;applicatin/vnd.recordare.musicxml;application/vnd.recordare.musicxml+xml;application/relax-ng-compact-syntax;application/vnd.data-vision.rdz;application/rdf+xml;application/vnd.cloanto.rp9;application/vnd.jisp;application/rtf;text/richtex;application/vnd.route66.link66+xml;application/rss+xml;application/shf+xml;application/vnd.sailingtracker.track;image/svg+xml;application/vnd.sus-calendar;application/sru+xml;application/set-payment-initiation;application/set-reistration-initiation;application/vnd.sema;application/vnd.semd;application/vnd.semf;application/vnd.seemail;application/x-font-snf;application/scvp-vp-request;application/scvp-vp-response;application/scvp-cv-request;application/svp-cv-response;application/sdp;text/x-setext;video/x-sgi-movie;application/vnd.shana.informed.formdata;application/vnd.shana.informed.formtemplate;application/vnd.shana.informed.interchange;application/vnd.shana.informed.package;application/thraud+xml;application/x-shar;image/x-rgb;application/vnd.epson.salt;application/vnd.accpac.simply.aso;application/vnd.accpac.simply.imp;application/vnd.simtech-mindmapper;application/vnd.commonspace;application/vnd.ymaha.smaf-audio;application/vnd.smaf;application/vnd.yamaha.smaf-phrase;application/vnd.smart.teacher;application/vnd.svd;application/sparql-query;application/sparql-results+xml;application/srgs;application/srgs+xml;application/sml+xml;application/vnd.koan;text/sgml;application/vnd.stardivision.calc;application/vnd.stardivision.draw;application/vnd.stardivision.impress;application/vnd.stardivision.math;application/vnd.stardivision.writer;application/vnd.tardivision.writer-global;application/vnd.stepmania.stepchart;application/x-stuffit;application/x-stuffitx;application/vnd.solent.sdkm+xml;application/vnd.olpc-sugar;audio/basic;application/vnd.wqd;application/vnd.symbian.install;application/smil+xml;application/vnd.syncml+xml;application/vnd.syncml.dm+wbxml;application/vnd.syncml.dm+xml;application/x-sv4cpio;application/x-sv4crc;application/sbml+xml;text/tab-separated-values;image/tiff;application/vnd.to.intent-module-archive;application/x-tar;application/x-tcl;application/x-tex;application/x-tex-tfm;application/tei+xml;text/plain;application/vnd.spotfire.dxp;application/vnd.spotfire.sfs;application/timestamped-data;applicationvnd.trid.tpt;application/vnd.triscape.mxs;text/troff;application/vnd.trueapp;application/x-font-ttf;text/turtle;application/vnd.umajin;application/vnd.uoml+xml;application/vnd.unity;application/vnd.ufdl;text/uri-list;application/nd.uiq.theme;application/x-ustar;text/x-uuencode;text/x-vcalendar;text/x-vcard;application/x-cdlink;application/vnd.vsf;model/vrml;application/vnd.vcx;model/vnd.mts;model/vnd.vtu;application/vnd.visionary;video/vnd.vivo;applicatin/ccxml+xml,;application/voicexml+xml;application/x-wais-source;application/vnd.wap.wbxml;image/vnd.wap.wbmp;audio/x-wav;application/davmount+xml;application/x-font-woff;application/wspolicy+xml;image/webp;application/vnd.webturb;application/widget;application/winhlp;text/vnd.wap.wml;text/vnd.wap.wmlscript;application/vnd.wap.wmlscriptc;application/vnd.wordperfect;application/vnd.wt.stf;application/wsdl+xml;image/x-xbitmap;image/x-xpixmap;image/x-xwindowump;application/x-x509-ca-cert;application/x-xfig;application/xhtml+xml;application/xml;application/xcap-diff+xml;application/xenc+xml;application/patch-ops-error+xml;application/resource-lists+xml;application/rls-services+xml;aplication/resource-lists-diff+xml;application/xslt+xml;application/xop+xml;application/x-xpinstall;application/xspf+xml;application/vnd.mozilla.xul+xml;chemical/x-xyz;text/yaml;application/yang;application/yin+xml;application/vnd.ul;application/zip;application/vnd.handheld-entertainment+xml;application/vnd.zzazz.deck+xml') # noqa - browser = webdriver.Firefox(firefox_profile=profile, options=options) - browser.implicitly_wait(10) - browser.set_window_size(1920, 1080) - return browser - - -def login(browser, live_server_url, username, password='p'): - browser.get(live_server_url) - username_input = browser.find_element_by_xpath('//input[@id="username"]') - username_input.send_keys(username) - password_input = browser.find_element_by_xpath('//input[@id="password"]') - password_input.send_keys(password) - browser.find_element_by_xpath('//button[@type="submit"]').send_keys(Keys.ENTER) - WebDriverWait(browser, 20).until(ec.url_contains('/home')) - - -def logout(browser: webdriver.Firefox): - browser.find_element_by_id('logout').click() - - -def reset_browser_after_test(browser: webdriver.Firefox, live_server_url): - while len(browser.window_handles) > 1: - browser.close() - browser.switch_to.window(browser.window_handles[-1]) - browser.get(live_server_url) - - -def nth(iterable, n, default=None): - "Returns the nth item or a default value" - return next(islice(iterable, n, None), default) - - -def extract_hrefs_hashes(web_elements: Sequence[WebElement]): - return [nth(el.get_attribute('href').split('#'), 1, '') - for el in web_elements if el.get_attribute('href')] - - -# A function that takes the a browser client -# and returns a function that can be used as a condition for -# WebDriverWait -def subscriptions_loaded_cond(browser): - def loaded(*args): - for i in range(2): - try: - tasks_el = browser.find_element_by_name('subscription-list') - tasks_el.find_element_by_class_name('v-progress-circular') - except StaleElementReferenceException: - pass - except NoSuchElementException: - return True - return False - return loaded - - -# returns a function that can be used as a callback for WebDriverWait -# the resulting functions returns True if the given query would return at least one object -def query_returns_object(model_class, **kwargs): - def query(*args): - try: - model_class.objects.get(**kwargs) - except ObjectDoesNotExist: - return False - return True - return query - - -# stage can be 'initial', 'validate', or 'conflict' -def go_to_subscription(test_class_instance, stage='initial', sub_type=None): - WebDriverWait(test_class_instance.browser, 10).until( - subscriptions_loaded_cond(test_class_instance.browser), - ) - tasks = test_class_instance.browser.find_element_by_name('subscription-list') - tab = tasks.find_element_by_xpath(f'//*[contains(text(), "{stage}")]') - tab.click() - - # sleep here because the animation takes some time to finish - time.sleep(1) - - sub_type = sub_type if sub_type is not None else test_class_instance.sub_type - - sub_type_xpath = f'//*[contains(text(), "{sub_type.name}") ' \ - f'and not(contains(@class, "inactive-subscription")) ' \ - f'and contains(@class, "subscription") ' \ - f'and not(ancestor::div[contains(@style,"display: none;")])]' - - WebDriverWait(test_class_instance.browser, 10).until( - ec.element_to_be_clickable((By.XPATH, sub_type_xpath)), - message="SubmissionType not clickable" - ) - sub_type_el = tasks.find_element_by_xpath(sub_type_xpath) - sub_type_el.click() - WebDriverWait(test_class_instance.browser, 10).until( - ec.url_contains('correction'), - message='URL not change to correction URL' - ) - - -def correct_some_submission(test_class_instance): - go_to_subscription(test_class_instance) - code = reconstruct_submission_code(test_class_instance) - test_class_instance.browser.find_element_by_id('score-full').click() - submit_btn = test_class_instance.browser.find_element_by_id('submit-feedback') - submit_btn.click() - WebDriverWait(test_class_instance.browser, 10).until( - wait_until_code_changes(test_class_instance, code) - ) - return code - - -def reconstruct_submission_code(test_class_instance): - sub_table = test_class_instance.browser.find_element_by_class_name('submission-table') - return reconstruct_code_from_table(sub_table) - - -def reconstruct_solution_code(test_class_instance): - solution_table = test_class_instance.browser.find_element_by_class_name('solution-table') - return reconstruct_code_from_table(solution_table) - - -def reconstruct_code_from_table(table_el): - lines = table_el.find_elements_by_tag_name('tr') - line_no_code_pairs = [ - (line.get_attribute('id'), - # call get_attribute here to get non normalized text - # https://github.com/SeleniumHQ/selenium/issues/2608 - line.find_element_by_class_name('code-cell-content') - .find_element_by_class_name('code-line') - .get_attribute('textContent')) - for line in lines - ] - line_no_code_pairs.sort(key=lambda x: x[0]) # sort by ids - code_lines = list(zip(*line_no_code_pairs))[1] - return '\n'.join(code_lines) - - -def wait_until_code_changes(test_class_instance, code): - def condition(*args): - try: - # code might change during the call resulting in the exception - new_code = reconstruct_submission_code(test_class_instance) - except StaleElementReferenceException: - return False - return code != new_code - return condition - - -def wait_until_element_count_equals(test_class_instance, by, selector, count): - def condition(*args): - try: - elements = test_class_instance.browser.find_elements(by, selector) - except Exception: - return False - return len(elements) == count - return condition - - -def assertion_is_true(assertion_func): - def condition(*args): - try: - assertion_func() - except Exception: - return False - return True - return condition diff --git a/grady/grady/settings/__init__.py b/grady/grady/settings/__init__.py deleted file mode 100644 index cdbdbdff..00000000 --- a/grady/grady/settings/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .default import * # noqa -import os - -dev = os.environ.get('DJANGO_DEV', False) - -if not dev: - from .live import * # noqa - from .url_hack import * # noqa diff --git a/grady/grady/settings/default.py b/grady/grady/settings/default.py deleted file mode 100644 index e3a6457c..00000000 --- a/grady/grady/settings/default.py +++ /dev/null @@ -1,230 +0,0 @@ -""" -Django settings for grady project. - -Generated by 'django-admin startproject' using Django 1.10.6. - -For more information on this file, see -https://docs.djangoproject.com/en/1.10/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.10/ref/settings/ -""" - -import datetime -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname( - os.path.dirname(os.path.abspath(__file__)))) - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! - -SECRET_KEY = '0*h29pqq9n_&5gtcd8qd2mb^uaf8ydo+ck*p72gg18jrrve(ap' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'whitenoise.runserver_nostatic', - 'django.contrib.staticfiles', - 'django_extensions', - 'rest_framework', - 'corsheaders', - 'drf_yasg', - 'silk', - 'core', - 'constance', - 'constance.backends.database', -] - -MIDDLEWARE = [ - 'corsheaders.middleware.CorsMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'whitenoise.middleware.WhiteNoiseMiddleware', - 'silk.middleware.SilkyMiddleware', -] - -ROOT_URLCONF = 'grady.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - - -WSGI_APPLICATION = 'grady.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.10/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': os.environ.get('DB_NAME', 'postgres'), - 'USER': os.environ.get('DB_USER', 'postgres'), - 'PASSWORD': os.environ.get('DB_PASSWORD', 'postgres'), - 'HOST': os.environ.get('DB_HOST', 'localhost'), - 'PORT': os.environ.get('DB_PORT', '5432'), - 'ATOMIC_REQUESTS': True - }, -} - - -# Internationalization -# https://docs.djangoproject.com/en/1.10/topics/i18n/ - -LANGUAGE_CODE = 'en-us' -TIME_ZONE = 'UTC' -USE_I18N = True -USE_L10N = True -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.10/howto/static-files/ -STATIC_URL = '/static/' -STATIC_ROOT = os.path.join(BASE_DIR, 'static') -STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -) -STATICFILES_DIRS = ( - 'frontend/dist/static', -) - - -LOGIN_REDIRECT_URL = '/' -LOGIN_URL = '/' - -AUTH_USER_MODEL = 'core.UserAccount' -AUTH_PASSWORD_VALIDATORS = [ - {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, - {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, - {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'}, - {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'} -] - -CORS_ORIGIN_WHITELIST = ( - 'http://localhost:8080', - 'http://localhost:8000' -) - -REST_FRAMEWORK = { - 'TEST_REQUEST_DEFAULT_FORMAT': 'json', - 'DEFAULT_PERMISSION_CLASSES': ( - 'rest_framework.permissions.IsAuthenticated', - ), - 'DEFAULT_AUTHENTICATION_CLASSES': ( - 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', - 'rest_framework.authentication.SessionAuthentication', - 'rest_framework.authentication.BasicAuthentication', - ), - 'DEFAULT_RENDERER_CLASSES': ( - 'djangorestframework_camel_case.render.CamelCaseJSONRenderer', - ), - - 'DEFAULT_PARSER_CLASSES': ( - 'djangorestframework_camel_case.parser.CamelCaseJSONParser', - ), - 'COERCE_DECIMAL_TO_STRING': False, -} - -JSON_CAMEL_CASE = { - 'JSON_UNDERSCOREIZE': { - 'no_underscore_before_number': True, - }, -} - -JWT_AUTH = { - 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=18000), - 'JWT_ALLOW_REFRESH': True, -} - - -LOG_LEVEL = os.environ.get('GRADY_LOG_LEVEL', 'DEBUG') -LOG_FORMAT = os.environ.get('GRADY_LOG_FORMAT', 'default-format') -LOGGING = { - "version": 1, - "disable_existing_loggers": not DEBUG, - "formatters": { - 'default-format': { - # 'datefmt': the default is ISO8601 which is what we want - 'format': '[%(asctime)s] [%(levelname)s] %(name)-20s %(message)s', - }, - 'json': { - '()': 'json_log_formatter.JSONFormatter', - }, - }, - 'handlers': { - 'console': { - 'level': LOG_LEVEL, - 'class': 'logging.StreamHandler', - 'formatter': LOG_FORMAT - }, - }, - 'loggers': { - 'django': { - 'handlers': ['console'], - }, - 'django.request': { - 'handlers': ['console'], - }, - 'gunicorn.error': { - 'handlers': ['console'], - }, - 'gunicorn.access': { - 'handlers': ['console'], - }, - 'core': { - 'handlers': ['console'], - 'level': LOG_LEVEL, - } - } -} - - -CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend' -CONSTANCE_CONFIG = { - 'STOP_ON_PASS': (False, "Stop correction when for pass " - "only students when they reach pass score"), - 'SINGLE_CORRECTION': (False, "Set submitted feedback immediately to final and skip validation"), - 'EXERCISE_MODE': (False, "Whether the application runs in exercise mode. " - "Gives tutors access to options normally reserved to reviewers"), - "SHOW_SOLUTION_TO_STUDENTS": (False, "Whether or not the students should be allowed to see the solutions"), - 'REGISTRATION_PASSWORD': ("", "The registration password to use.") -} - -# Allow request bodies up to 100MB -DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600 diff --git a/grady/grady/settings/live.py b/grady/grady/settings/live.py deleted file mode 100644 index 8ac84849..00000000 --- a/grady/grady/settings/live.py +++ /dev/null @@ -1,70 +0,0 @@ -import secrets -import string - -from .default import REST_FRAMEWORK - -""" A live configuration for enhanced security """ -CSRF_COOKIE_SECURE = True -CSRF_COOKIE_HTTPONLY = True -SESSION_COOKIE_SECURE = True -SECURE_CONTENT_TYPE_NOSNIFF = True -SECURE_BROWSER_XSS_FILTER = True -X_FRAME_OPTIONS = 'DENY' - - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False - -# Read a new SECRET_KEY or generate a new one -SECRET_FILE = 'secret' -try: - SECRET_KEY = open(SECRET_FILE).read().strip() - if len(SECRET_KEY) == 0: - raise Exception -except (IOError, Exception): - try: - SECRET_KEY = ''.join(secrets.choice(string.printable) - for i in range(50)) - with open(SECRET_FILE, 'w') as secret: - secret.write(SECRET_KEY) - except IOError: - Exception('Please create a %s file with random characters \ - to generate your secret key!' % SECRET_FILE) - -# adjust this setting to your needs -ALLOWED_HOSTS = [ - 'localhost', '.grady.janmax.org', 'grady.informatik.uni-goettingen.de' -] - -# sample postgres sql database configuration -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'postgres', - 'USER': 'postgres', - 'PASSWORD': 'postgres', - 'HOST': 'postgres', - 'PORT': '5432', - 'ATOMIC_REQUESTS': True - }, -} - -# Password validation -# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, - {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, - {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'}, - {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'} -] - -REST_FRAMEWORK = { - **REST_FRAMEWORK, - 'DEFAULT_THROTTLE_CLASSES': ( - 'rest_framework.throttling.AnonRateThrottle', - ), - 'DEFAULT_THROTTLE_RATES': { - 'anon': '300/day', - } -} diff --git a/grady/grady/settings/test.py b/grady/grady/settings/test.py deleted file mode 100644 index d8eca64b..00000000 --- a/grady/grady/settings/test.py +++ /dev/null @@ -1,4 +0,0 @@ -from .default import * -from .live import * - -REST_FRAMEWORK['DEFAULT_THROTTLE_RATES']['anon'] = '1000/minute' diff --git a/grady/grady/settings/url_hack.py b/grady/grady/settings/url_hack.py deleted file mode 100644 index a4443f3e..00000000 --- a/grady/grady/settings/url_hack.py +++ /dev/null @@ -1,17 +0,0 @@ -""" Ok, what the hell? This is especially ugly, hence I keep it hidden in -this file. We have the requirement that the application instances should -run under http://$host/$instancename/. And therefore the frontend, whitenoise, -django, gunicorn and the top http proxy all have to handle this stuff. - -Usage: Just set the SCRIPT_NAME env variable to /<name of your instance> - and things will work. """ - -import os - -FORCE_SCRIPT_NAME = os.environ.get('SCRIPT_NAME', '') -if FORCE_SCRIPT_NAME: - FORCE_SCRIPT_NAME += '/' - -STATIC_URL_BASE = '/static/' -STATIC_URL = os.path.join(FORCE_SCRIPT_NAME + STATIC_URL_BASE) -WHITENOISE_STATIC_PREFIX = STATIC_URL_BASE diff --git a/grady/grady/urls.py b/grady/grady/urls.py deleted file mode 100644 index 30c8dad1..00000000 --- a/grady/grady/urls.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.conf import settings -from django.contrib import admin -from django.urls import include, path -from django.views.generic.base import TemplateView -from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token - -urlpatterns = [ - path('admin/', admin.site.urls), - path('api/', include('core.urls')), - path('api/get-token/', obtain_jwt_token), - path('api/refresh-token/', refresh_jwt_token), - path('api-auth/', include('rest_framework.urls', - namespace='rest_framework')), - path('', TemplateView.as_view(template_name='index.html')), - path('silk/', include('silk.urls', namespace='silk')), -] diff --git a/grady/grady/wsgi.py b/grady/grady/wsgi.py deleted file mode 100644 index 012844d1..00000000 --- a/grady/grady/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for grady project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "grady.settings") - -application = get_wsgi_application() diff --git a/grady/manage.py b/grady/manage.py deleted file mode 100755 index bd8354c1..00000000 --- a/grady/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "grady.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv) diff --git a/grady/settings/live.py b/grady/settings/live.py index 405c0bed..8ac84849 100644 --- a/grady/settings/live.py +++ b/grady/settings/live.py @@ -32,7 +32,9 @@ except (IOError, Exception): to generate your secret key!' % SECRET_FILE) # adjust this setting to your needs -ALLOWED_HOSTS = [ 'localhost', '.informatik.uni-goettingen.de' ] +ALLOWED_HOSTS = [ + 'localhost', '.grady.janmax.org', 'grady.informatik.uni-goettingen.de' +] # sample postgres sql database configuration DATABASES = { diff --git a/grady/setup.cfg b/grady/setup.cfg deleted file mode 100644 index 68c89dfb..00000000 --- a/grady/setup.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[flake8] - -max-line-length = 100 - -[pep8] - -max-line-length = 100 diff --git a/grady/swagger-api-specification.json b/grady/swagger-api-specification.json deleted file mode 100644 index 29c9f7d3..00000000 --- a/grady/swagger-api-specification.json +++ /dev/null @@ -1 +0,0 @@ -{"swagger": "2.0", "info": {"title": "Grady API", "description": "Blub", "version": "v1"}, "host": "localhost:8000", "schemes": ["http"], "basePath": "/api", "consumes": ["application/json"], "produces": ["application/json"], "securityDefinitions": {"basic": {"type": "basic"}}, "security": [{"basic": []}], "paths": {"/assignment/": {"get": {"operationId": "assignment_list", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Assignment"}}}}, "tags": ["assignment"]}, "post": {"operationId": "assignment_create", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Assignment"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Assignment"}}}, "tags": ["assignment"]}, "parameters": []}, "/assignment/{assignment_id}/": {"get": {"operationId": "assignment_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Assignment"}}}, "tags": ["assignment"]}, "delete": {"operationId": "assignment_delete", "description": "Stop working on the assignment before it is finished", "parameters": [], "responses": {"204": {"description": ""}}, "tags": ["assignment"]}, "parameters": [{"name": "assignment_id", "in": "path", "description": "A UUID string identifying this tutor submission assignment.", "required": true, "type": "string", "format": "uuid"}]}, "/examtype/": {"get": {"operationId": "examtype_list", "description": "Gets a list of an individual exam by Id if provided", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Exam"}}}}, "tags": ["examtype"]}, "parameters": []}, "/examtype/{exam_type_id}/": {"get": {"operationId": "examtype_read", "description": "Gets a list of an individual exam by Id if provided", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Exam"}}}, "tags": ["examtype"]}, "parameters": [{"name": "exam_type_id", "in": "path", "description": "A UUID string identifying this ExamType.", "required": true, "type": "string", "format": "uuid"}]}, "/export/csv/": {"get": {"operationId": "export_csv_list", "description": "", "parameters": [], "responses": {"200": {"description": ""}}, "produces": ["text/csv"], "tags": ["export"]}, "parameters": []}, "/feedback-comment/{comment_id}/": {"patch": {"operationId": "feedback-comment_partial_update", "description": "Gets a list of an individual exam by Id if provided", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/FeedbackComment"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/FeedbackComment"}}}, "tags": ["feedback-comment"]}, "delete": {"operationId": "feedback-comment_delete", "description": "Gets a list of an individual exam by Id if provided", "parameters": [], "responses": {"204": {"description": ""}}, "tags": ["feedback-comment"]}, "parameters": [{"name": "comment_id", "in": "path", "description": "A UUID string identifying this Feedback Comment.", "required": true, "type": "string", "format": "uuid"}]}, "/feedback/": {"get": {"operationId": "feedback_list", "description": "Gets a list of an individual exam by Id if provided", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Feedback"}}}}, "tags": ["feedback"]}, "post": {"operationId": "feedback_create", "description": "Gets a list of an individual exam by Id if provided", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Feedback"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Feedback"}}}, "tags": ["feedback"]}, "parameters": []}, "/feedback/{submission_pk}/": {"get": {"operationId": "feedback_read", "description": "Gets a list of an individual exam by Id if provided", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Feedback"}}}, "tags": ["feedback"]}, "patch": {"operationId": "feedback_partial_update", "description": "Gets a list of an individual exam by Id if provided", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Feedback"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Feedback"}}}, "tags": ["feedback"]}, "parameters": [{"name": "submission_pk", "in": "path", "required": true, "type": "string"}]}, "/get-token/": {"post": {"operationId": "get-token_create", "description": "API View that receives a POST with a user's username and password.\n\nReturns a JSON Web Token that can be used for authenticated requests.", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/JSONWebToken"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/JSONWebToken"}}}, "tags": ["get-token"]}, "parameters": []}, "/jwt-time-delta/": {"get": {"operationId": "jwt-time-delta_list", "description": "", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["jwt-time-delta"]}, "parameters": []}, "/refresh-token/": {"post": {"operationId": "refresh-token_create", "description": "API View that returns a refreshed token (with new expiration) based on\nexisting token\n\nIf 'orig_iat' field (original issued-at-time) is found, will first check\nif it's within expiration window, then copy it to the new token", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/RefreshJSONWebToken"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/RefreshJSONWebToken"}}}, "tags": ["refresh-token"]}, "parameters": []}, "/statistics/": {"get": {"operationId": "statistics_list", "description": "", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["statistics"]}, "parameters": []}, "/student-page/": {"get": {"operationId": "student-page_read", "description": "Gets all data that belongs to one student", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/StudentInfo"}}}, "tags": ["student-page"]}, "parameters": []}, "/student-submissions/": {"get": {"operationId": "student-submissions_list", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Submission"}}}}, "tags": ["student-submissions"]}, "parameters": []}, "/student/": {"get": {"operationId": "student_list", "description": "Gets a list of all students without individual submissions", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/StudentInfoForListView"}}}}, "tags": ["student"]}, "parameters": []}, "/student/activate/": {"post": {"operationId": "student_activate", "description": "Gets a list of all students without individual submissions", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/StudentInfoForListView"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/StudentInfoForListView"}}}, "tags": ["student"]}, "parameters": []}, "/student/deactivate/": {"post": {"operationId": "student_deactivate", "description": "Gets a list of all students without individual submissions", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/StudentInfoForListView"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/StudentInfoForListView"}}}, "tags": ["student"]}, "parameters": []}, "/student/{student_id}/": {"get": {"operationId": "student_read", "description": "Gets a list of all students without individual submissions", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/StudentInfoForListView"}}}, "tags": ["student"]}, "parameters": [{"name": "student_id", "in": "path", "description": "A UUID string identifying this Student.", "required": true, "type": "string", "format": "uuid"}]}, "/submission/": {"get": {"operationId": "submission_list", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/SubmissionNoType"}}}}, "tags": ["submission"]}, "parameters": []}, "/submission/{submission_id}/": {"get": {"operationId": "submission_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/SubmissionNoType"}}}, "tags": ["submission"]}, "parameters": [{"name": "submission_id", "in": "path", "description": "A UUID string identifying this Submission.", "required": true, "type": "string", "format": "uuid"}]}, "/submissiontype/": {"get": {"operationId": "submissiontype_list", "description": "Gets a list or a detail view of a single SubmissionType", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/SubmissionType"}}}}, "tags": ["submissiontype"]}, "parameters": []}, "/submissiontype/{submission_type_id}/": {"get": {"operationId": "submissiontype_read", "description": "Gets a list or a detail view of a single SubmissionType", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/SubmissionType"}}}, "tags": ["submissiontype"]}, "parameters": [{"name": "submission_type_id", "in": "path", "description": "A UUID string identifying this SubmissionType.", "required": true, "type": "string", "format": "uuid"}]}, "/subscription/": {"get": {"operationId": "subscription_list", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Subscription"}}}}, "tags": ["subscription"]}, "post": {"operationId": "subscription_create", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Subscription"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Subscription"}}}, "tags": ["subscription"]}, "parameters": []}, "/subscription/{subscription_id}/": {"get": {"operationId": "subscription_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Subscription"}}}, "tags": ["subscription"]}, "delete": {"operationId": "subscription_delete", "description": "", "parameters": [], "responses": {"204": {"description": ""}}, "tags": ["subscription"]}, "parameters": [{"name": "subscription_id", "in": "path", "description": "A UUID string identifying this submission subscription.", "required": true, "type": "string", "format": "uuid"}]}, "/tutor/": {"get": {"operationId": "tutor_list", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/Tutor"}}}}, "tags": ["tutor"]}, "post": {"operationId": "tutor_create", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Tutor"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Tutor"}}}, "tags": ["tutor"]}, "parameters": []}, "/tutor/register/": {"post": {"operationId": "tutor_register", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Tutor"}}], "responses": {"201": {"description": "", "schema": {"$ref": "#/definitions/Tutor"}}}, "tags": ["tutor"]}, "parameters": []}, "/tutor/{user_id}/": {"get": {"operationId": "tutor_read", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Tutor"}}}, "tags": ["tutor"]}, "put": {"operationId": "tutor_update", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Tutor"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Tutor"}}}, "tags": ["tutor"]}, "patch": {"operationId": "tutor_partial_update", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/Tutor"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/Tutor"}}}, "tags": ["tutor"]}, "delete": {"operationId": "tutor_delete", "description": "Api endpoint for creating, listing, viewing or deleting tutors", "parameters": [], "responses": {"204": {"description": ""}}, "tags": ["tutor"]}, "parameters": [{"name": "user_id", "in": "path", "description": "A UUID string identifying this user.", "required": true, "type": "string", "format": "uuid"}]}, "/user-role/": {"get": {"operationId": "user-role_list", "description": "", "parameters": [], "responses": {"200": {"description": ""}}, "tags": ["user-role"]}, "parameters": []}, "/user/": {"get": {"operationId": "user_list", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/UserAccount"}}}}, "tags": ["user"]}, "parameters": []}, "/user/me/": {"get": {"operationId": "user_me", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"type": "array", "items": {"$ref": "#/definitions/UserAccount"}}}}, "tags": ["user"]}, "parameters": []}, "/user/{user_id}/": {"get": {"operationId": "user_read", "description": "", "parameters": [], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserAccount"}}}, "tags": ["user"]}, "parameters": [{"name": "user_id", "in": "path", "description": "A UUID string identifying this user.", "required": true, "type": "string", "format": "uuid"}]}, "/user/{user_id}/change_active/": {"patch": {"operationId": "user_change_active", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/UserAccount"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserAccount"}}}, "tags": ["user"]}, "parameters": [{"name": "user_id", "in": "path", "description": "A UUID string identifying this user.", "required": true, "type": "string", "format": "uuid"}]}, "/user/{user_id}/change_password/": {"patch": {"operationId": "user_change_password", "description": "", "parameters": [{"name": "data", "in": "body", "required": true, "schema": {"$ref": "#/definitions/UserAccount"}}], "responses": {"200": {"description": "", "schema": {"$ref": "#/definitions/UserAccount"}}}, "tags": ["user"]}, "parameters": [{"name": "user_id", "in": "path", "description": "A UUID string identifying this user.", "required": true, "type": "string", "format": "uuid"}]}}, "definitions": {"Assignment": {"type": "object", "properties": {"pk": {"title": "Assignment id", "type": "string", "format": "uuid", "readOnly": true}, "submission": {"title": "Submission", "type": "string", "format": "uuid", "readOnly": true}, "isDone": {"title": "Is done", "type": "boolean", "readOnly": true}, "owner": {"title": "Owner", "type": "string", "readOnly": true}, "stage": {"title": "Stage", "type": "string", "readOnly": true}}}, "Exam": {"required": ["moduleReference", "totalScore", "passScore"], "type": "object", "properties": {"pk": {"title": "Exam type id", "type": "string", "format": "uuid", "readOnly": true}, "moduleReference": {"title": "Module reference", "type": "string", "maxLength": 50, "minLength": 1}, "totalScore": {"title": "Total score", "type": "integer", "maximum": 2147483647, "minimum": 0}, "passScore": {"title": "Pass score", "type": "integer", "maximum": 2147483647, "minimum": 0}, "passOnly": {"title": "Pass only", "type": "boolean"}}}, "FeedbackComment": {"required": ["text"], "type": "object", "properties": {"pk": {"title": "Comment id", "type": "string", "format": "uuid", "readOnly": true}, "text": {"title": "Text", "type": "string", "minLength": 1}, "created": {"title": "Created", "type": "string", "format": "date-time", "readOnly": true}, "ofTutor": {"title": "Of tutor", "type": "string", "readOnly": true}, "ofLine": {"title": "Of line", "type": "integer", "maximum": 2147483647, "minimum": 0}, "visibleToStudent": {"title": "Visible to student", "type": "boolean"}}}, "Feedback": {"required": ["ofSubmission"], "type": "object", "properties": {"pk": {"title": "ID", "type": "integer", "readOnly": true}, "ofSubmission": {"title": "Of submission", "type": "string", "format": "uuid"}, "isFinal": {"title": "Is final", "type": "boolean"}, "score": {"title": "Score", "type": "integer", "maximum": 2147483647, "minimum": 0}, "feedbackLines": {"type": "array", "items": {"$ref": "#/definitions/FeedbackComment"}}, "created": {"title": "Created", "type": "string", "format": "date-time", "readOnly": true}, "ofSubmissionType": {"title": "Of submission type", "type": "string", "readOnly": true}, "feedbackStageForUser": {"title": "Feedback stage for user", "type": "string", "readOnly": true}}}, "JSONWebToken": {"required": ["username", "password"], "type": "object", "properties": {"username": {"title": "Username", "type": "string", "minLength": 1}, "password": {"title": "Password", "type": "string", "minLength": 1}}}, "RefreshJSONWebToken": {"required": ["token"], "type": "object", "properties": {"token": {"title": "Token", "type": "string", "minLength": 1}}}, "SubmissionTypeList": {"title": "Type", "required": ["name"], "type": "object", "properties": {"pk": {"title": "Submission type id", "type": "string", "format": "uuid", "readOnly": true}, "name": {"title": "Name", "type": "string", "maxLength": 100, "minLength": 1}, "fullScore": {"title": "Full score", "type": "integer", "maximum": 2147483647, "minimum": 0}}}, "SubmissionList": {"required": ["type", "feedback"], "type": "object", "properties": {"pk": {"title": "Submission id", "type": "string", "format": "uuid", "readOnly": true}, "type": {"$ref": "#/definitions/SubmissionTypeList"}, "feedback": {"$ref": "#/definitions/Feedback"}}}, "StudentInfo": {"required": ["user", "exam", "submissions"], "type": "object", "properties": {"pk": {"title": "Student id", "type": "string", "format": "uuid", "readOnly": true}, "name": {"title": "Name", "type": "string", "readOnly": true}, "user": {"title": "User", "type": "string", "format": "uuid"}, "matrikelNo": {"title": "Matrikel no", "type": "string", "readOnly": true}, "exam": {"$ref": "#/definitions/Exam"}, "submissions": {"type": "array", "items": {"$ref": "#/definitions/SubmissionList"}}, "passesExam": {"title": "Passes exam", "type": "boolean"}}}, "SubmissionType": {"title": "Type", "required": ["name", "description", "solution"], "type": "object", "properties": {"pk": {"title": "Submission type id", "type": "string", "format": "uuid", "readOnly": true}, "name": {"title": "Name", "type": "string", "maxLength": 100, "minLength": 1}, "fullScore": {"title": "Full score", "type": "integer", "maximum": 2147483647, "minimum": 0}, "description": {"title": "Description", "type": "string", "minLength": 1}, "solution": {"title": "Solution", "type": "string", "minLength": 1}, "programmingLanguage": {"title": "Programming language", "type": "string", "enum": ["c", "java"]}}}, "VisibleCommentFeedback": {"title": "Feedback", "required": ["ofSubmission"], "type": "object", "properties": {"pk": {"title": "ID", "type": "integer", "readOnly": true}, "ofSubmission": {"title": "Of submission", "type": "string", "format": "uuid"}, "isFinal": {"title": "Is final", "type": "boolean"}, "score": {"title": "Score", "type": "integer", "maximum": 2147483647, "minimum": 0}, "feedbackLines": {"title": "Feedback lines", "type": "string", "readOnly": true}, "created": {"title": "Created", "type": "string", "format": "date-time", "readOnly": true}, "ofSubmissionType": {"title": "Of submission type", "type": "string", "readOnly": true}}}, "Test": {"required": ["name", "label", "annotation"], "type": "object", "properties": {"pk": {"title": "Test id", "type": "string", "format": "uuid", "readOnly": true}, "name": {"title": "Name", "type": "string", "maxLength": 30, "minLength": 1}, "label": {"title": "Label", "type": "string", "maxLength": 50, "minLength": 1}, "annotation": {"title": "Annotation", "type": "string", "minLength": 1}}}, "Submission": {"required": ["type", "feedback", "tests"], "type": "object", "properties": {"pk": {"title": "Submission id", "type": "string", "format": "uuid", "readOnly": true}, "type": {"$ref": "#/definitions/SubmissionType"}, "text": {"title": "Text", "type": "string"}, "feedback": {"$ref": "#/definitions/VisibleCommentFeedback"}, "tests": {"type": "array", "items": {"$ref": "#/definitions/Test"}}}}, "SubmissionNoTextFields": {"required": ["type"], "type": "object", "properties": {"pk": {"title": "Submission id", "type": "string", "format": "uuid", "readOnly": true}, "type": {"title": "Type", "type": "string", "format": "uuid"}, "score": {"title": "Score", "type": "string", "readOnly": true}, "final": {"title": "Final", "type": "string", "readOnly": true}, "fullScore": {"title": "Full score", "type": "string", "readOnly": true}}}, "StudentInfoForListView": {"required": ["submissions", "isActive"], "type": "object", "properties": {"pk": {"title": "Student id", "type": "string", "format": "uuid", "readOnly": true}, "name": {"title": "Name", "type": "string", "readOnly": true}, "user": {"title": "User", "type": "string", "readOnly": true}, "userPk": {"title": "User pk", "type": "string", "readOnly": true}, "exam": {"title": "Exam", "type": "string", "readOnly": true}, "submissions": {"type": "array", "items": {"$ref": "#/definitions/SubmissionNoTextFields"}}, "matrikelNo": {"title": "Matrikel no", "type": "string", "maxLength": 30, "minLength": 1}, "passesExam": {"title": "Passes exam", "type": "boolean"}, "isActive": {"title": "Is active", "type": "boolean"}}}, "SubmissionNoType": {"required": ["type", "feedback", "tests"], "type": "object", "properties": {"pk": {"title": "Submission id", "type": "string", "format": "uuid", "readOnly": true}, "type": {"title": "Type", "type": "string", "format": "uuid"}, "fullScore": {"title": "Full score", "type": "string", "readOnly": true}, "text": {"title": "Text", "type": "string"}, "feedback": {"$ref": "#/definitions/Feedback"}, "tests": {"type": "array", "items": {"$ref": "#/definitions/Test"}}}}, "Subscription": {"type": "object", "properties": {"pk": {"title": "Subscription id", "type": "string", "format": "uuid", "readOnly": true}, "owner": {"title": "Owner", "type": "string", "readOnly": true}, "queryType": {"title": "Query type", "type": "string", "enum": ["random", "student", "exam", "submission_type"], "default": "random"}, "queryKey": {"title": "Query key", "type": "string", "format": "uuid"}, "feedbackStage": {"title": "Feedback stage", "type": "string", "enum": ["feedback-creation", "feedback-validation", "feedback-conflict-resolution"], "default": "feedback-creation"}, "deactivated": {"title": "Deactivated", "type": "boolean", "readOnly": true}, "assignments": {"title": "Assignments", "type": "string", "readOnly": true}, "remaining": {"title": "Remaining", "type": "string", "readOnly": true}, "available": {"title": "Available", "type": "string", "readOnly": true}}}, "Tutor": {"required": ["username"], "type": "object", "properties": {"pk": {"title": "User id", "type": "string", "format": "uuid", "readOnly": true}, "password": {"title": "Password", "type": "string", "minLength": 1}, "isActive": {"title": "Active", "description": "Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", "type": "boolean"}, "username": {"title": "Username", "description": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", "type": "string", "pattern": "^[\\w.@+-]+$", "maxLength": 150, "minLength": 1}, "feedbackCreated": {"title": "Feedback created", "type": "string", "readOnly": true}, "feedbackValidated": {"title": "Feedback validated", "type": "string", "readOnly": true}}}, "UserAccount": {"required": ["password"], "type": "object", "properties": {"pk": {"title": "User id", "type": "string", "format": "uuid", "readOnly": true}, "username": {"title": "Username", "description": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", "type": "string", "readOnly": true, "minLength": 1}, "role": {"title": "Role", "type": "string", "enum": ["Student", "Tutor", "Reviewer"], "readOnly": true}, "isAdmin": {"title": "Is admin", "type": "boolean", "readOnly": true}, "password": {"title": "Password", "type": "string", "maxLength": 128, "minLength": 1}}}}} \ No newline at end of file diff --git a/grady/util/__init__.py b/grady/util/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/grady/util/factories.py b/grady/util/factories.py deleted file mode 100644 index d8dd98da..00000000 --- a/grady/util/factories.py +++ /dev/null @@ -1,525 +0,0 @@ -import configparser -from xkcdpass import xkcd_password as xp - -from core import models -from core.models import (ExamType, Feedback, StudentInfo, Submission, - SubmissionType, UserAccount, Group) - -STUDENTS = 'students' -TUTORS = 'tutors' -REVIEWERS = 'reviewers' - -PASSWORDS = '.importer_passwords' - -words = xp.generate_wordlist(wordfile=xp.locate_wordfile(), min_length=5, max_length=8) - - -def get_random_password(numwords=4): - """ Returns a cryptographically random string of specified length """ - return xp.generate_xkcdpassword(words, numwords=numwords, delimiter='-') - - -def store_password(username, groupname, password): - storage = configparser.ConfigParser() - storage.read(PASSWORDS) - - if groupname not in storage: - storage[groupname] = {} - - storage[groupname][username] = password - - with open(PASSWORDS, 'w') as passwd_file: - storage.write(passwd_file) - - -class GradyUserFactory: - - def __init__(self, - make_password=get_random_password, - password_storge=store_password, - *args, **kwargs): - self.make_password = make_password - self.password_storge = password_storge - - def _get_random_name(self, prefix='', suffix='', k=4): - return ''.join((prefix, self.make_password(k), suffix)) - - def _get_group_for_user_role(self, role): - """ Returns the groupname for a role """ - return { - 'Student': 'students', - 'Tutor': 'tutors', - 'Reviewer': 'reviewers' - }[role] - - def _make_base_user(self, username, role, password=None, - store_pw=False, fullname='', exam=None, exercise_groups=None, **kwargs): - """ This is a specific wrapper for the django update_or_create method of - objects. - * If now username is passed, a generic one will be generated - * A new user is created and password and role are set accordingly - * If the user was there before password IS changed - * A user must only have one role. - - Returns: - (User object, str): The user object that was added to the role and - the password of that user if it was created. - """ - if not username: - username = self._get_random_name(prefix=role.lower() + '_') - - username = username.strip() - - user, created = UserAccount.objects.update_or_create( - username=username, - fullname=fullname, - role=role, - defaults=kwargs) - - if exercise_groups is None: - exercise_groups = [] - - groups_in_db = [] - for group in exercise_groups: - groups_in_db.append(Group.objects.get_or_create(name=group, exam=exam)[0].pk) - - user.set_groups(groups_in_db) - - if created or password is not None: - password = self.make_password() if password is None else password - user.set_password(password) - user.save() - - if created and store_pw: - self.password_storge( - username, - self._get_group_for_user_role(role), - password) - - return user - - def make_student(self, username=None, identifier=None, - exam=None, submissions=None, **kwargs): - """ Creates a student. Defaults can be passed via kwargs like in - relation managers objects.update method. """ - user = self._make_base_user(username, 'Student', exam=exam, **kwargs) - student_info = StudentInfo.objects.get_or_create(user=user)[0] - student_info.add_exam(exam) - if identifier: - student_info.matrikel_no = identifier - student_info.save() - return user - - def make_tutor(self, username=None, exam=None, **kwargs): - """ Creates or updates a tutor if needed with defaults """ - return self._make_base_user(username, 'Tutor', exam=exam, **kwargs) - - def make_reviewer(self, username=None, exam=None, **kwargs): - """ Creates or updates a reviewer if needed with defaults """ - return self._make_base_user(username, 'Reviewer', exam=exam, **kwargs) - - -def make_exams(exams=None, **kwargs): - if exams is None: - exams = [] - - return [ExamType.objects.get_or_create( - module_reference=exam['module_reference'], - defaults=exam)[0] for exam in exams] - - -def make_groups(groups=None, **kwargs): - if groups is None: - groups = [] - - return [Group.objects.get_or_create( - name=group['name'], - exam=group['exam'])[0] for group in groups] - - -def make_submission_types(type_id=None, submission_types=[], **kwargs): - return [SubmissionType.objects.get_or_create( - name=submission_type['name'], exam_type=type_id, - defaults=submission_type)[0] - for submission_type in submission_types] - - -def make_students(students=None, **kwargs): - if students is None: - students = [] - - return [GradyUserFactory().make_student( - username=student['username'], - exam=ExamType.objects.get( - module_reference=student['exam']) if 'exam' in student else None, - password=student.get('password'), - exercise_groups=student.get('exercise_groups') - ) for student in students] - - -def make_tutors(tutors=None, **kwargs): - if tutors is None: - tutors = [] - - return [GradyUserFactory().make_tutor(**tutor) - for tutor in tutors] - - -def make_reviewers(reviewers=None, **kwargs): - if reviewers is None: - reviewers = [] - - return [GradyUserFactory().make_reviewer(**reviewer) - for reviewer in reviewers] - - -def make_feedback(feedback, submission_object): - feedback_obj = Feedback.objects.update_or_create( - of_submission=submission_object, - score=feedback['score'], - is_final=feedback.get('is_final', False) - )[0] - for line_index, comment_list in feedback['feedback_lines'].items(): - for comment in comment_list: - tutor = models.UserAccount.objects.get( - username=comment.pop('of_tutor')) - ret, c = models.FeedbackComment.objects.update_or_create( - of_line=line_index, - of_feedback=feedback_obj, - of_tutor=tutor, - defaults=comment - ) - - -def make_submissions(type_id=None, submissions=[], **kwargs): - submission_objects = [] - for submission in submissions: - submission_type, _ = SubmissionType.objects.get_or_create( - name=submission.get('type', 'Auto generated type'), exam_type=type_id) - student, _ = StudentInfo.objects.get_or_create( - user=UserAccount.objects.get( - username=submission.get('user', 'default_user'))) - submission_object, _ = Submission.objects.get_or_create( - type=submission_type, student=student, defaults={ - 'seen_by_student': submission.get('seen_by_student', False), - 'text': submission.get('text', ''), - }) - if 'feedback' in submission: - make_feedback(submission['feedback'], submission_object) - submission_objects.append(submission_object) - return submission_objects - - -def make_test_data(data_dict): - type_id = (make_exams(**data_dict))[0].exam_type_id - return { - 'exams': make_exams(**data_dict), - 'submission_types': make_submission_types(type_id, **data_dict), - 'students': make_students(**data_dict), - 'tutors': make_tutors(**data_dict), - 'reviewers': make_reviewers(**data_dict), - 'submissions': make_submissions(type_id, **data_dict) - } - - -def init_test_instance(): - return make_test_data( - data_dict={ - 'exams': [{ - 'module_reference': 'Test Exam 01', - 'total_score': 100, - 'pass_score': 60, - }], - 'submission_types': [ - { - 'name': '01. Sort this or that', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!' - }, - { - 'name': '02. Merge this or that or maybe even this', - 'full_score': 35, - 'description': 'Very complicated', - 'solution': 'Trivial!' - }, - { - 'name': '03. This one exists for the sole purpose to test', - 'full_score': 30, - 'description': 'Very complicated', - 'solution': 'Trivial!' - } - ], - 'students': [ - { - 'username': 'student01', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student02', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student03', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student04', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student05', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student06', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - { - 'username': 'student07', - 'exam': 'Test Exam 01', - 'password': 'p' - }, - ], - 'tutors': [ - { - 'username': 'tutor01', - 'password': 'p' - }, - { - 'username': 'tutor02', - 'password': 'p' - } - ], - 'reviewers': [{ - 'username': 'reviewer01', - 'password': 'p' - }], - 'submissions': [ - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [ - { - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }, - { - 'text': 'I agree', - 'of_tutor': 'tutor02' - } - ], - '3': [ - { - 'text': 'Even worse!', - 'of_tutor': 'tutor02' - } - ] - } - } - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [ - { - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }, - { - 'text': 'I agree', - 'of_tutor': 'tutor02' - } - ], - '3': [ - { - 'text': 'Even worse!', - 'of_tutor': 'tutor02' - } - ] - } - } - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '03. This one exists for the sole purpose to test', - 'user': 'student01', - 'feedback': { - 'score': 5, - 'is_final': True, - 'feedback_lines': { - '1': [ - { - 'text': 'This is very bad!', - 'of_tutor': 'tutor01' - }, - { - 'text': 'I agree', - 'of_tutor': 'tutor02' - } - ], - '3': [ - { - 'text': 'Even worse!', - 'of_tutor': 'tutor02' - } - ] - } - } - }, - - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student02', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student02', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '03. This one exists for the sole purpose to test', - 'user': 'student02', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student03', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student03', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '03. This one exists for the sole purpose to test', - 'user': 'student03', - }, - - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student04', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student04', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '03. This one exists for the sole purpose to test', - 'user': 'student04', - }, - - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '01. Sort this or that', - 'user': 'student05', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '02. Merge this or that or maybe even this', - 'user': 'student05', - }, - { - 'text': 'function blabl\n' - ' on multi lines\n' - ' for blabla in bla:\n' - ' arrrgh\n' - ' asasxasx\n' - ' lorem ipsum und so\n', - 'type': '03. This one exists for the sole purpose to test', - 'user': 'student05', - }, - ]} - ) diff --git a/grady/util/factory_boys.py b/grady/util/factory_boys.py deleted file mode 100644 index 75faa8ae..00000000 --- a/grady/util/factory_boys.py +++ /dev/null @@ -1,115 +0,0 @@ -import factory -from factory.django import DjangoModelFactory -from faker import Faker -from core import models - -Faker.seed(42) -fake = Faker() - - -class ExamTypeFactory(DjangoModelFactory): - class Meta: - model = models.ExamType - django_get_or_create = ('module_reference',) - - module_reference = 'B.Inf.4242 Test Module' - total_score = 90 - pass_score = 45 - pass_only = False - - -class SubmissionTypeFactory(DjangoModelFactory): - class Meta: - model = models.SubmissionType - name = factory.Sequence(lambda n: f"[{n}] Example submission type") - full_score = 15 - description = factory.Sequence( - lambda n: f'Type {n} \n<h1>This</h1> is a description containing html') - solution = factory.Sequence(lambda n: f'//This is a solution\n#include<stdio.h>\n\nint main() {{\n\tprintf("Hello World\\n");\n\treturn {n};\n}}') # noqa - programming_language = models.SubmissionType.C - exam_type = factory.SubFactory(ExamTypeFactory) - - -class GroupFactory(DjangoModelFactory): - class Meta: - model = models.Group - name = factory.Sequence(lambda n: f"Group [{n}]") - exam = factory.SubFactory(ExamTypeFactory) - - -class UserAccountFactory(DjangoModelFactory): - class Meta: - model = models.UserAccount - django_get_or_create = ('username',) - - role = models.UserAccount.TUTOR - fullname = fake.name - username = factory.Sequence(lambda n: f"{fake.user_name()}-{n}") - password = factory.PostGenerationMethodCall('set_password', 'redrum-is-murder-reversed') - - @factory.post_generation - def exercise_groups(self, create, extracted, **kwargs): - name = "Default Group: " - default_group, _ = models.Group.objects.get_or_create(name=name) - self.exercise_groups.add(default_group) - - -class ExamInfoFactory(DjangoModelFactory): - class Meta: - model = models.ExamInfo - - exam = factory.SubFactory(ExamTypeFactory) - total_score = 90 - passes_exam = True - - -class StudentInfoFactory(DjangoModelFactory): - class Meta: - model = models.StudentInfo - - student_info = factory.RelatedFactory( - ExamInfoFactory, - factory_related_name='student', - ) - user = factory.SubFactory(UserAccountFactory, role=models.UserAccount.STUDENT) - - -class TestFactory(DjangoModelFactory): - class Meta: - model = models.Test - - name = 'EmptyTest' - label = 'Empty' - annotation = factory.Sequence(lambda n: f'Test: {n} This is an annotation') - - -class SubmissionFactory(DjangoModelFactory): - class Meta: - model = models.Submission - - text = factory.Sequence(lambda n: f'#include<stdio.h>\n\nint main() {{\n\tprintf("Hello World\\n");\n\treturn {n};\n}}') # noqa - type = factory.SubFactory(SubmissionTypeFactory) - student = factory.SubFactory(StudentInfoFactory) - - -class FeedbackFactory(DjangoModelFactory): - class Meta: - model = models.Feedback - - of_submission = factory.SubFactory(SubmissionTypeFactory) - - -class FeedbackCommentFactory(DjangoModelFactory): - class Meta: - model = models.FeedbackComment - - text = 'Well, this is bad...' - of_tutor = factory.SubFactory(UserAccountFactory) - of_feedback = factory.SubFactory(FeedbackFactory) - - -class TutorSubmissionAssignmentFactory(DjangoModelFactory): - class Meta: - model = models.TutorSubmissionAssignment - - submission = factory.SubFactory(SubmissionFactory) diff --git a/grady/util/format_index.py b/grady/util/format_index.py deleted file mode 100644 index e6ef6a5f..00000000 --- a/grady/util/format_index.py +++ /dev/null @@ -1,16 +0,0 @@ -import fileinput -import sys -import re - -file = 'core/templates/index.html' - -STATIC_FILES_REGEX = re.compile("=/static/(.*?)([ >])") -SUB_PATTERN = r"={% static '\1' %}\2" - -with open(file, "r+") as f: - s = f.read() - f.seek(0) - f.write("{% load static %}\n" + s) - -for line in fileinput.input(file, inplace=1): - sys.stdout.write(STATIC_FILES_REGEX.sub(SUB_PATTERN, line)) diff --git a/grady/util/importer.py b/grady/util/importer.py deleted file mode 100644 index 04b474fa..00000000 --- a/grady/util/importer.py +++ /dev/null @@ -1,225 +0,0 @@ -import json -import os -import readline -import logging -import constance - -from rest_framework.exceptions import ValidationError -from util.messages import warn -from core.models import ExamType, Feedback, Submission, SubmissionType, Test, FeedbackLabel -from core.models import UserAccount as User -from util.factories import GradyUserFactory - -import xkcdpass.xkcd_password as xp -import semver - -log = logging.getLogger(__name__) -config = constance.config - -WELCOME = r''' - ______ __ ____ __ - / ____/________ _____/ /_ __ / _/___ ___ ____ ____ _____/ /____ _____ - / / __/ ___/ __ `/ __ / / / / / // __ `__ \/ __ \/ __ \/ ___/ __/ _ \/ ___/ -/ /_/ / / / /_/ / /_/ / /_/ / _/ // / / / / / /_/ / /_/ / / / /_/ __/ / -\____/_/ \__,_/\__,_/\__, / /___/_/ /_/ /_/ .___/\____/_/ \__/\___/_/ - /____/ /_/ -''' - -HISTFILE = '.importer_history' -PASSWORDS = '.importer_passwords' - -YES = 'Y/n' -NO = 'y/N' - -RUSTY_HEKTOR_MIN_VER = ">=6.0.0" -RUSTY_HEKTOR_MAX_VER = "<7.0.0" - -valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} - -user_factory = GradyUserFactory() -words = xp.generate_wordlist(wordfile=xp.locate_wordfile(), min_length=5, max_length=8) - - -def start(): - - if os.path.exists(HISTFILE): - readline.read_history_file(HISTFILE) - - print(WELCOME + ''' - - Welcome to the Grady import script! - - This script aims at making the setup of the database as easy as possible. - At the same time it serves as a documentation on how data is imported into - Grady. Let\'s dive right in.\n''') - - try: - print('The following sub importers are available:\n') - for fid, func in enumerate(call_order): - print(f'\t[{fid}] {func.__name__}') - print('\t[q] exit') - print() - - fid = i('Choose a number or hit enter to start at the beginning') - - if not fid: - for func in call_order: - func() - elif fid in ('q', 'quit', 'exit'): - return - elif not 0 <= int(fid) < len(call_order): - warn('There is no loader with this number') - else: - call_order[int(fid)]() - - except (EOFError, KeyboardInterrupt): - print() - return - except FileNotFoundError: - raise - except Exception: - import traceback - traceback.print_exc() - finally: - readline.write_history_file(HISTFILE) - - -def i(prompt: str, default: str = '', is_path: bool = False, is_file: bool = False): - if default is YES or default is NO: - answer = valid[input(f'[Q] {prompt} ({default}): ').lower() or ( - 'y' if YES == default else 'n')] - elif default: - answer = input(f'[Q] {prompt} ({default}): ') or default - else: - answer = input(f'[Q] {prompt}: ') - - if (is_path or is_file) and \ - not os.path.exists(answer) or is_file and \ - not os.path.isfile(answer): - path_or_type = "path" if is_path else "file" - warn(f'The {path_or_type} does not exist. Please try again.') - return i(prompt, default, is_path, is_file) - - return answer - - -def load_hektor_json(): - file = i('Get me the file with the output from rusty-hektor', - 'submissions.json', is_file=True) - - with open(file, 'r') as f: - hektor_data = json.JSONDecoder().decode(f.read()) - - parse_and_import_hektor_json(hektor_data) - - -def parse_and_import_hektor_json(hektor_data): - hektor_version = hektor_data['meta']['version'] - if not (semver.match(hektor_version, RUSTY_HEKTOR_MIN_VER) and - semver.match(hektor_version, RUSTY_HEKTOR_MAX_VER)): - raise ValidationError( - f'The data you\'re trying to import has the wrong version {hektor_version}\n' - f'Requirements: {RUSTY_HEKTOR_MIN_VER}, {RUSTY_HEKTOR_MAX_VER}' - ) - - exam_data = hektor_data['data'] - - exam, _ = ExamType.objects.get_or_create(**exam_data['module']) - - for submission_type in exam_data['submission_types']: - _, created = SubmissionType.objects.update_or_create( - name=submission_type['name'], exam_type=exam, defaults=submission_type) - if not created: - raise ValidationError(f"Updated submission type: {submission_type['name']}") - - for student in exam_data['students']: - # student accounts will be automatically enabled when in exercise mode - student_obj = user_factory.make_student(exam=exam, is_active=config.EXERCISE_MODE, - **student).student - for submission_obj in student['submissions']: - add_submission(student_obj, **submission_obj) - - -def load_reviewers(): - print('Please import reviewer users by providing one name per line') - reviewers = i('List of reviewers', 'reviewers', is_file=True) - - with open(reviewers) as reviewers_f: - for reviewer in reviewers_f: - rev = reviewer.strip() - if len(rev) > 0: - user_factory.make_reviewer(rev, - is_staff=True, - store_pw=True) - - -def set_registration_password(): - pw = xp.generate_xkcdpassword(words, numwords=4, delimiter='-') - setattr(config, 'REGISTRATION_PASSWORD', pw) - print('The password will be set to', pw) - - -def add_submission(student_obj, code, tests, type=None, source_code=None): - submission_type_obj = SubmissionType.objects.get(name=type) - - submission_obj, _ = Submission.objects.update_or_create( - type=submission_type_obj, - student=student_obj, - defaults={ - 'text': code, - 'source_code': source_code, - 'source_code_available': source_code is not None - } - ) - - if tests: - add_tests(submission_obj, tests) - - -def add_tests(submission_obj, tests): - auto_correct, _ = User.objects.get_or_create( - username='auto_correct', - defaults={'is_active': False} - ) - - for test_data in tests: - test_obj, created = Test.objects.update_or_create( - name=test_data['name'], - submission=submission_obj, - defaults={ - 'label': test_data['label'], - 'annotation': test_data['annotation'], - } - ) - add_feedback_if_test_recommends_it(test_obj) - add_label_to_feedback_if_test_recommends_it(test_obj) - - -def add_feedback_if_test_recommends_it(test_obj): - # TODO rework this brittle code - if (test_obj.label == 'EMPTY' or test_obj.label == 'COMPILATION_FAILED') \ - and not hasattr(test_obj.submission, 'feedback'): - return Feedback.objects.update_or_create( - of_submission=test_obj.submission, - defaults={ - 'score': 0, - 'is_final': True, - } - ) - - -def add_label_to_feedback_if_test_recommends_it(test_obj): - if (test_obj.label == 'EMPTY' or test_obj.label == 'COMPILATION_FAILED') \ - and hasattr(test_obj.submission, 'feedback'): - feedback = test_obj.submission.feedback - label, _ = FeedbackLabel.objects.get_or_create( - name=test_obj.label, - defaults={'description': test_obj.label}) - feedback.labels.add(label) - - -call_order = [ - load_hektor_json, - load_reviewers, - set_registration_password, -] diff --git a/grady/util/messages.py b/grady/util/messages.py deleted file mode 100644 index 7f1aeac4..00000000 --- a/grady/util/messages.py +++ /dev/null @@ -1,26 +0,0 @@ -import sys - - -def warn(*message): - print('[W]', *message) - - -def debug(*message): - print('[DEBUG]', *message) - - -def info(*message): - print('[I]', *message) - - -def error(*message): - print('[E]', *message) - - -def abort(*message): - print('[FATAL]', *message) - sys.exit('exiting...') - - -def exit(message='exiting...'): - sys.exit(*message) diff --git a/grady/yarn.lock b/grady/yarn.lock deleted file mode 100644 index fb57ccd1..00000000 --- a/grady/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -- GitLab